On Wed, 22 Dec 2004, James Weatherall wrote:

> Support for "local cursor rendering" is not unique to TightVNC, it's a
> feature provided as standard as part of VNC 4.

Yes, but the VNC4 implementation is different. If I understand the code
correctly, it takes care not to send "unsolicited" FUs. For example,
here's the comment in SMsgWriter.h:

  // Like setDestkopSize, we can't just write out a setCursor message
  // immediately on a V3 writer.  Instead of calling writeSetCursor()
  // directly, you must call cursorChange(), and then invoke writeSetCursor()
  // in response to the writeSetCursorCallback() callback.  For a V3 writer
  // this will happen when the next update is sent.

RealVNC 3.X does not support local cursors, right?


> What is the relevance of the code fragment from sprite.c that you refer to
> below?

It shows that Xvnc from TightVNC 1.2.9 sends a cursor update as soon as it 
happens, without taking care to put it into the next FU. 


> There's no reason why fixing the cursor updating bug in TightVNC should have
> affected sending of updates in any way - a cursor update is just a
> particular special case of a normal framebuffer update.  Can you provide a
> link to the code in TightVNC 1.2.9 that you think is at fault?

Take a look at rfbDisplayCursor at 
http://cvs.sourceforge.net/viewcvs.py/vnc-tight/vnc_unixsrc/Xvnc/programs/Xserver/hw/vnc/sprite.c?view=markup.
 
As I understand it, it's incorrect to call rfbSendFramebufferUpdate()
directly; that would result in a FU that doesn't correspond to any FUR. 


> It is *much* more likely that you have broken your "modified" viewer in some
> way.  Can you provide a patch file containing all the diffs between your
> modified viewer and the standard one?

It's all in the TightVNC CVS: 
http://cvs.sourceforge.net/viewcvs.py/vnc-tight/tightvnc/. The code that 
changes from truecolor to lowcolor when the bandwidth is low is currently 
#ifdefed out, though. See comment in CConn.cxx. 

It's a bit tricky to trigger this bug, though. You'll need to run VNC over 
a slow connection and have a lot of cursor updates going on, to make sure 
a cursor update happens in the middle of a SetPixelFormat. 

-- 
Peter Estrand           Chief Developer
Cendio                  www.thinlinc.com
Teknikringen 3          www.cendio.se
583 30 Linkvping        Phone: +46-13-21 46 00
_______________________________________________
VNC-List mailing list
[EMAIL PROTECTED]
To remove yourself from the list visit:
http://www.realvnc.com/mailman/listinfo/vnc-list

Reply via email to