[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v1 07/13] ui: correctly reset framebuffer update sta
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH v1 07/13] ui: correctly reset framebuffer update state after processing dirty regions |
Date: |
Mon, 18 Dec 2017 19:12:22 +0000 |
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>
---
ui/vnc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index d3b04f1166..51fbf0449d 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.14.3
- [Qemu-devel] [PATCH v1 01/13] ui: remove 'sync' parametr from vnc_update_client, (continued)
- [Qemu-devel] [PATCH v1 01/13] ui: remove 'sync' parametr from vnc_update_client, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 03/13] ui: remove redundant indentation in vnc_client_update, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 06/13] ui: introduce enum to track VNC client framebuffer update request state, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 02/13] ui: remove unreachable code in vnc_update_client, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 04/13] ui: avoid pointless VNC updates if framebuffer isn't dirty, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 08/13] ui: refactor code for determining if an update should be sent to the client, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 11/13] ui: place a hard cap on VNC server output buffer size, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 07/13] ui: correctly reset framebuffer update state after processing dirty regions,
Daniel P. Berrange <=
- [Qemu-devel] [PATCH v1 10/13] ui: fix VNC client throttling when forced update is requested, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 05/13] ui: track how much decoded data we consumed when doing SASL encoding, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 09/13] ui: fix VNC client throttling when audio capture is active, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 12/13] ui: add trace events related to VNC client throttling, Daniel P. Berrange, 2017/12/18
- [Qemu-devel] [PATCH v1 13/13] ui: mix misleading comments & return types of VNC I/O helper methods, Daniel P. Berrange, 2017/12/18
- Re: [Qemu-devel] [PATCH v1 00/13] Fix VNC server unbounded memory usage, Darren Kenny, 2017/12/19
- Re: [Qemu-devel] [PATCH v1 00/13] Fix VNC server unbounded memory usage, Marc-André Lureau, 2017/12/19