[gtk-vnc-devel] [PATCH 0/7] Optimizations for high-latency X connections



Hi, everyone,

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
such connections:

- Request backing store from the X server so we'll hopefully be asked to
repaint less.

- Compress pointer motion events so both the VNC and X servers can keep
up.

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
    connections

 ChangeLog        |   53 +++++++++++++++++++++
 src/gvnc.c       |   16 +++++-
 src/gvnc.h       |    1 +
 src/vncdisplay.c |  138 +++++++++++++++++++++++++++++++++++++++++++++++-------
 4 files changed, 188 insertions(+), 20 deletions(-)

  Federico





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]