vnc: recycle empty vs->output buffer
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 <pl@kamp.de> Reviewed-by: Daniel P. Berrange <berrange@redhat.com> Message-id: 1446203414-4013-17-git-send-email-kraxel@redhat.com [ added a comment describing the non-obvious optimization ] Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
2e0c90af0a
commit
c3d6899c5e
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user