10

How To Fix Redrawing Problems In Your VNC


Posted by Artem Russakovskii on May 18th, 2009 in Stuff

The Problem

If you use VNC to remotely connect to your machines and are having problems with certain applications not showing changes (redrawing), this will, hopefully, solve the problem for you.

The symptoms are simple: you load a program but only the program outline and maybe the first frame would show up. After that, nothing would update, even though the user in front of the remote computer can see everything updating fine. For me, it is happening with all Java based programs (SmartSVN, Charles – amazing program btw!, etc). Here's what's happening to my Charles application – it never even sent the first frame, simply showing the desktop and not updating:

image

The problem may be confined to RealVNC only, or at least any VNC program that uses a special mirror driver. You can tell whether your VNC server uses a mirror driver by looking at your Settings->Desktop options under "Optimise screen capture (mirror driver)":

image

The Solution

I'm not sure if it's Java's fault or the mirror driver's but, as it turns out, the mirror driver does not properly work with Java based programs, at least at the moment. Disabling it, or switching to application hooking fixes the problem. There is most likely a benefit in using a mirror driver as it is probably optimized better than other methods, but it's not worth keeping if you are having problems with it.

The easiest way to disable the setting is to uncheck the checkbox above. You can also alternatively go to Expert options, find the UpdateMethod variable, and switch it to 0 or 1. I am fairly confident the setting of 1 is less resource intensive than 0, so I went with it.

image

My Java programs are fixed and redrawing fine now.

● ● ●
Artem Russakovskii is a San Francisco programmer and blogger. Follow Artem on Twitter (@ArtemR) or subscribe to the RSS feed.

In the meantime, if you found this article useful, feel free to buy me a cup of coffee below.