On Wed, 22 Apr 2009 17:43:00 +0200
Peter Rosin <p...@lysator.liu.se> wrote:

> Den 2009-04-22 16:34 skrev Pierre Ossman:
> > In case someone has already started looking at implementing this,
> > here's another update.
> > 
> > Changed:
> > 
> >  - Require that the ExtendedDesktopSize is sent without any data
> >    updates.
> 
> I think it would be useful to explicitely state somewhere that a
> client receiving an ExtendedDesktopSize rectangle with the size of
> the framebuffer that it already knows about must not issue a
> FramebufferUpdateRequest with incremental set to zero (unless it
> has some other reason to do so).
> 
> I'm sure you have implemented your client to not issue needless
> non-incremental update requests in this case, but it is the simple
> thing to do. Since it leads to disaster to do the simple thing it
> should be noted explicitely that you must not do so, methinks.
> 

It never hurts to be explicit, although hopefully every server they
test against has followed the spec. so that they'll directly notice
their mistake. :)

I've been thinking a bit more about this and there is another issue.
Consider the following:

        1. Client sends a non-incr. update
        2. Server sends an update with only the EDS, since it cannot be
           combined with data.
        3. Client sends a incr. update
        4. Server sends the data for the entire desktop.

This works, but it breaks the mental model of non-incremental updates,
so I'm not entirely pleased with it.

On idea I had was to state that an EDS may be mixed with data if the
framebuffer size hasn't changed. This complicates the EDS handling, but
keeps the non-incr. model correct for the normal case.

Unfortunately the model can break even without EDS, so the non-incr.
behaviour isn't always consistent. Consider this:

        1. Client sends incr. update
        2. Server sends changed data
        3. Server changes the desktop size, queueing up a DesktopSize
           event.
        4. Client looses the framebuffer, sends a non-incr. update
        5. Server sends an update with only the DS, since it should not
           be combined with data.
        6. Client sends a incr. update
        7. Server sends the data for the entire desktop

IOW, the clients must be prepared to deal with a non-incr. update not
giving any actual data anyway, only it is very rare under normal
conditions.


As I see it, there are three options here:

        1. Keep the text as it is, making non-incr. a bit odd in that
           it will never give you any data directly.
        2. Only send the EDS separately on a framebuffer size change.
        3. Go back to the drawing board and solve the issue of
           bootstrapping the clients view of the screen layout some
           other way.

I'm leaning towards 1, even though it isn't very nice from a conceptual
point of view. Clients have to deal with that scenario anyway, so we're
really just changing it from a rare case to the common case.

Comments?

> Nitpick: in several places you have written "a ExtendedDesktopSize",
> it should be "an ExtendedDesktopSize".
> 

Ooops. I've been having "rectangle" at the front of the cortex. :)

Rgds
-- 
Pierre Ossman            OpenSource-based Thin Client Technology
System Developer         Telephone: +46-13-21 46 00
Cendio AB                Web: http://www.cendio.com

Attachment: signature.asc
Description: PGP signature

------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and 
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today. 
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
Tigervnc-devel mailing list
Tigervnc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-devel

Reply via email to