Hi
On Fri, Aug 8, 2025 at 12:08 PM Markus Armbruster <armbru@redhat.com> wrote:
> 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 <marcandre.lureau@redhat.com>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>
lgtm, thanks
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> 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
>
>