|
|
![](http://www.xen.org/images/globals/pixel.gif) |
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Re: [PATCH] qemu vnc updates
Stefano Stabellini wrote:
Hi all,
reading qemu code I realized that the qemu vnc server sometimes sends
framebuffer updates even if the client didn't request any.
This is not consistent with the RFB protocol spec and can break some
clients.
It's actually consistent with the RFB spec. Have you seen any clients
break?
The RFB spec states pretty clearly that a single
FramebufferUpdateRequest may generate 0 or more FramebufferUpdate
events. Once a client has sent a single FramebufferUpdate request, it
should expect to continue to receive more FramebufferUpdates for an
indefinite period of time according to the specification.
Regards,
Anthony Liguori
The patch I am attaching strictly enforces compliance with the RFB
protocol making sure framebuffer updates are sent only if the client
requested one.
Doing so is more difficult than it seems because some framebuffer
pseudo-encoding updates cannot be discarded but must be sent anyway: for
example desktop resize and pixel format change messages. To solve the
problem I wrote a queue that stores those messages and sends them as
soon as the client asks for an update.
Since 90% of the times the queue is used to store only few elements, the
queue allocates 10 elements at the beginning and every time it runs out
of elements allocates other 10 elements. This is should drastically
limit the number of malloc and free needed to maintain the queue.
I did some stress tests in the last couple of days and seems to work well.
Best Regards,
Stefano Stabellini
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
------------------------------------------------------------------------
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|