[gtk-vnc-devel] [PATCH 0/7] Optimizations for high-latency X connections
- From: Federico Mena Quintero <federico novell com>
- To: gtk-vnc-devel lists sourceforge net
- Subject: [gtk-vnc-devel] [PATCH 0/7] Optimizations for high-latency X connections
- Date: Wed, 17 Dec 2008 17:42:07 -0600
I mentioned in #virt a few weeks ago that I was working on making
gtk-vnc be nominally as fast as TightVNC. This came out from an
Important Customer(tm) who wanted to use virt-viewer, but who found it
to be too slow.
It turns out that they were on a crazy setup with a high-latency remote
X connection. My patches implement some tricks from TightVNC to handle
- Request backing store from the X server so we'll hopefully be asked to
- Compress pointer motion events so both the VNC and X servers can keep
Finally, I made some things closer to TightVNC itself:
- Specify the supported VNC encodings in the same order as TightVNC.
Its ordering actually makes a lot of sense; gtk-vnc's didn't seem as
good from looking at protocol traces with Wireshark.
- Add support for LastRect encoding. This lets the VNC server send the
stream of Tight rectangles plus and end-marker, without having to
compute the actual number of rectangles in advance.
Finally, two extra patches:
- Daniel Berrange's patch from Fedora to avoid requesting framebuffer
updates when we don't need them.
- Enable local_pointer by default to make aiming easier. Otherwise we
have to wait for both VNC and X to repaint before the user will see
where he is about to click. This makes things much more usable on
high-latency X connections.
I'm not horribly happy with just making local_pointer=TRUE; it would be
better to enable it by default, but use a "dot" cursor like TightVNC
instead of the normal arrow.
Anyway, I hope this helps. The next set of patches I submit will be for
a little tool to get predictable VNC output for profiling purposes.
Federico Mena Quintero (7):
Specify supported encodings in the same order as TightVNC
Add support for LastRect encoding
Debug pointer events
Compress motion events to the VNC connection can keep up
Use X window backing store for the VNC window
Fedora patch: avoid repainting for non-framebuffer requests
Enable local_pointer by default to make aiming easy on high-latency X
ChangeLog | 53 +++++++++++++++++++++
src/gvnc.c | 16 +++++-
src/gvnc.h | 1 +
src/vncdisplay.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++-------
4 files changed, 188 insertions(+), 20 deletions(-)
] [Thread Prev