7

I run Ubuntu 11.10 with 2 monitors at a resolution of 3840x1080. This is done via NVIDIA's TwinView mode. When I run the following command:

x11vnc -safer -localhost  -once -display :0 -ncache 10 -ncache_cr -geometry 3840x1080

and connect from a Windows machine with TightVNC, my connection lists the resolution as 3840x12960. That is 12 x 1080 if you don't feel like doing the math. The top part of the VNC connection looks normal but I can scroll down A LOT and I see ghosts of previous windows.

Any idea why or how to stop this?

kenorb
  • 10,944
dpendolino
  • 14,310
  • 1
  • 17
  • 7

2 Answers2

6

I FINALLY fixed this by disabling client side caching, use the -noncache option when starting the server or uncheck the ncache option in the gui.

Answer found here: http://ubuntuforums.org/showthread.php?t=1337060

Guest
  • 71
5

It seems your VNC viewer doesn't support client-side caching.

So you should either use VNC viewer which supports it, or you need to remove -ncache (an experimental) option from your x11vnc command. In case it's enabled by default, try to disable it by specifying -noncache option.

Basically when it is enabled, it activates the client-side caching scheme which stores pixel data offscreen on the VNC viewer side for faster retrieval and it should work with any VNC viewer. However it seems it's not working correctly with some clients.


As per Ubuntu forum thread, this is how -ncache works.

It makes a desktop 10X taller than the normal height and uses the extra framebuffer for caching windows and their saveunders.

If you can't get KRDC to not show you that region (e.g. by resizing its window) then you can't use KRDC with x11vnc -ncache.

So for now the only -ncache "support" is for a viewer to be able to have a scrollbar and to be able to disable auto-scrolling. Or on unix/macosx use ssvnc.

See: Can x11vnc do client-side caching of pixel data? for further information.

The n in -ncache n is the factor of increase over the base framebuffer size to use for caching. It is an even integer and should be fairly large, 6-12, to achieve good response. This usually requires about 50-100MB of additional RAM on both the client and server sides. For example with n=6 a 1280x1024 display will use a framebuffer that is 1280x7168: everything below row 1024 is the pixel buffer cache.

kenorb
  • 10,944