qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 16/19] vnc: recycle empty vs->output buffer


From: Gerd Hoffmann
Subject: [Qemu-devel] [PATCH 16/19] vnc: recycle empty vs->output buffer
Date: Fri, 30 Oct 2015 12:10:11 +0100

From: Peter Lieven <address@hidden>

If the vs->output buffer is empty it will be dropped
by the next qio_buffer_move_empty in vnc_jobs_consume_buffer
anyway. So reuse the allocated buffer from this buffer
in the worker thread where we otherwise would start with
an empty (unallocated buffer).

Signed-off-by: Peter Lieven <address@hidden>

[ added a comment describing the non-obvious optimization ]

Signed-off-by: Gerd Hoffmann <address@hidden>
---
 ui/vnc-jobs.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/ui/vnc-jobs.c b/ui/vnc-jobs.c
index 12389cc..08f0163 100644
--- a/ui/vnc-jobs.c
+++ b/ui/vnc-jobs.c
@@ -235,6 +235,14 @@ static int vnc_worker_thread_loop(VncJobQueue *queue)
         vnc_unlock_output(job->vs);
         goto disconnected;
     }
+    if (buffer_empty(&job->vs->output)) {
+        /*
+         * Looks like a NOP as it obviously moves no data.  But it
+         * moves the empty buffer, so we don't have to malloc a new
+         * one for vs.output
+         */
+        buffer_move_empty(&vs.output, &job->vs->output);
+    }
     vnc_unlock_output(job->vs);
 
     /* Make a local copy of vs and switch output buffers */
-- 
1.8.3.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]