>From GLib "Rules for use of GError":
A GError* must be initialized to NULL before passing its address
to a function that can report errors.
dbus_update_gl_cb() seemingly violates this rule: it passes &err to
qemu_dbus_display1_listener_call_update_dmabuf_finish() and to
qemu_dbus_display1_listener_win32_d3d11_call_update_texture2d_finish()
without clearing it in between. Harmless, because the first call is
guarded by #ifdef CONFIG_GBM, the second by #ifdef WIN32, and the two
are mutually exclusive. I think.
Clean this up to be obviously correct.
Cc: Marc-André Lureau <[email protected]>
Signed-off-by: Markus Armbruster <[email protected]>
Reviewed-by: Marc-André Lureau <[email protected]>
---
ui/dbus-listener.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/ui/dbus-listener.c b/ui/dbus-listener.c
index 42875b8eed..09d7a319b1 100644
--- a/ui/dbus-listener.c
+++ b/ui/dbus-listener.c
@@ -221,18 +221,21 @@ static void dbus_update_gl_cb(GObject *source_object,
#ifdef CONFIG_GBM
success = qemu_dbus_display1_listener_call_update_dmabuf_finish(
ddl->proxy, res, &err);
+ if (!success) {
+ error_report("Failed to call update: %s", err->message);
+ }
#endif
#ifdef WIN32
success =
qemu_dbus_display1_listener_win32_d3d11_call_update_texture2d_finish(
ddl->d3d11_proxy, res, &err);
- d3d_texture2d_acquire0(ddl->d3d_texture, &error_warn);
-#endif
-
if (!success) {
error_report("Failed to call update: %s", err->message);
}
+ d3d_texture2d_acquire0(ddl->d3d_texture, &error_warn);
+#endif
+
graphic_hw_gl_block(ddl->dcl.con, false);
g_object_unref(ddl);
}
--
2.49.0