Charalampos contacted me off-list with his original patch and I made a few
suggestions after testing it. So I'm not sure the 'Co-developed-by' tag is
warranted given I didn't write any code. In any case, this patch worked in
the testing I did on macOS, and it looks to be near-zero risk on other
platforms. I can't think of a simpler fix to the problem.

Signed-off-by: Phil Dennis-Jordan <p...@philjordan.eu>
or
Reviewed-by: Phil Dennis-Jordan <p...@philjordan.eu>
Tested-by: Phil Dennis-Jordan <p...@philjordan.eu>

whichever is deemed appropriate in these circumstances.


On Thu, 21 Nov 2024 at 17:23, Charalampos Mitrodimas <charmi...@posteo.net>
wrote:

> The GTK+ UI was not properly handling events on macOS due to missing
> event loop polling in the Cocoa backend. Add polling of the GLib main
> context during display refresh to ensure UI events are processed.
>
> This fixes UI responsiveness issues when running QEMU with the GTK
> display (--display gtk) on macOS hosts.
>
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2676
>
> Co-developed-by: Phil Dennis-Jordan <p...@philjordan.eu>
> Signed-off-by: Charalampos Mitrodimas <charmi...@posteo.net>
> ---
>  ui/gtk.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/ui/gtk.c b/ui/gtk.c
> index bf9d3dd679..979210255f 100644
> --- a/ui/gtk.c
> +++ b/ui/gtk.c
> @@ -437,6 +437,15 @@ static void gd_update(DisplayChangeListener *dcl,
>
>  static void gd_refresh(DisplayChangeListener *dcl)
>  {
> +#ifdef GDK_WINDOWING_QUARTZ
> +    GMainContext *context;
> +    if (GDK_IS_QUARTZ_DISPLAY(gdk_display_get_default())) {
> +        context = g_main_context_default();
> +        while (g_main_context_pending(context)) {
> +            g_main_context_iteration(context, FALSE);
> +        }
> +    }
> +#endif
>      graphic_hw_update(dcl->con);
>  }
>
> --
> 2.39.5 (Apple Git-154)
>
>
>

Reply via email to