[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 08/14] ui: correctly reset framebuffer update state a
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PULL 08/14] ui: correctly reset framebuffer update state after processing dirty regions |
Date: |
Fri, 12 Jan 2018 13:58:48 +0100 |
From: "Daniel P. Berrange" <address@hidden>
According to the RFB protocol, a client sends one or more framebuffer update
requests to the server. The server can reply with a single framebuffer update
response, that covers all previously received requests. Once the client has
read this update from the server, it may send further framebuffer update
requests to monitor future changes. The client is free to delay sending the
framebuffer update request if it needs to throttle the amount of data it is
reading from the server.
The QEMU VNC server, however, has never correctly handled the framebuffer
update requests. Once QEMU has received an update request, it will continue to
send client updates forever, even if the client hasn't asked for further
updates. This prevents the client from throttling back data it gets from the
server. This change fixes the flawed logic such that after a set of updates are
sent out, QEMU waits for a further update request before sending more data.
Signed-off-by: Daniel P. Berrange <address@hidden>
Reviewed-by: Darren Kenny <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
Message-id: address@hidden
Signed-off-by: Gerd Hoffmann <address@hidden>
---
ui/vnc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index 30e2feeae3..243c72be13 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1031,7 +1031,7 @@ static int vnc_update_client(VncState *vs, int has_dirty)
}
vnc_job_push(job);
- vs->update = VNC_STATE_UPDATE_INCREMENTAL;
+ vs->update = VNC_STATE_UPDATE_NONE;
vs->has_dirty = 0;
return n;
}
--
2.9.3
- [Qemu-devel] [PULL 00/14] Vnc 20180112 patches, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 03/14] ui: remove unreachable code in vnc_update_client, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 04/14] ui: remove redundant indentation in vnc_client_update, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 08/14] ui: correctly reset framebuffer update state after processing dirty regions,
Gerd Hoffmann <=
- [Qemu-devel] [PULL 05/14] ui: avoid pointless VNC updates if framebuffer isn't dirty, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 07/14] ui: introduce enum to track VNC client framebuffer update request state, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 02/14] ui: remove 'sync' parameter from vnc_update_client, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 01/14] vnc: fix debug spelling, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 09/14] ui: refactor code for determining if an update should be sent to the client, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 13/14] ui: add trace events related to VNC client throttling, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 12/14] ui: place a hard cap on VNC server output buffer size, Gerd Hoffmann, 2018/01/12
- [Qemu-devel] [PULL 06/14] ui: track how much decoded data we consumed when doing SASL encoding, Gerd Hoffmann, 2018/01/12