From: Marc-André Lureau Date: Thu, 11 Mar 2021 07:45:33 +0000 (+0400) Subject: ui: make gl_block use a counter X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a4ddc31417199eab96211b254097a0a0869d5bea;p=qemu.git ui: make gl_block use a counter Track multiple callers blocking requests. Signed-off-by: Marc-André Lureau Acked-by: Gerd Hoffmann --- diff --git a/ui/console.c b/ui/console.c index 87f897e46d..39f7b66baf 100644 --- a/ui/console.c +++ b/ui/console.c @@ -79,7 +79,7 @@ struct QemuConsole { DisplaySurface *surface; int dcls; DisplayChangeListener *gl; - bool gl_block; + int gl_block; int window_id; /* Graphic console state. */ @@ -237,10 +237,19 @@ void graphic_hw_gl_block(QemuConsole *con, bool block) { assert(con != NULL); - con->gl_block = block; - if (con->hw_ops->gl_block) { - con->hw_ops->gl_block(con->hw, block); + if (block) { + con->gl_block++; + } else { + con->gl_block--; + } + assert(con->gl_block >= 0); + if (!con->hw_ops->gl_block) { + return; + } + if ((block && con->gl_block != 1) || (!block && con->gl_block != 0)) { + return; } + con->hw_ops->gl_block(con->hw, block); } void graphic_hw_gl_flushed(QemuConsole *con)