qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 1/1] ui/gtk: Launching GTK UI with OpenGL on causes the refre


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH 1/1] ui/gtk: Launching GTK UI with OpenGL on causes the refreshrate update to not run
Date: Sun, 6 Dec 2020 12:42:40 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0

Hi Nikola,

On 12/6/20 11:43 AM, Nikola Pavlica wrote:
> I've discussed this issue back January and September. But it still
> occurs on my machine, despite the two patches. This time, the issue is
> that the UI refresh rate doesn't get updated when I launch QEMU with
> gl=on. My fix for this issue is to move the code for updating the
> refresh rate above the code that checks for OpenGL.
> 
> Or because OpenGL is meant to be called back with the "render" callback,
> should we instead add the refresh 
> rate checking code there?

This is not my area, but I think you are right, the the refresh rate
should be updated in the "render" callback.

To speed things you can send another patch, and Gerd will pick the
correct/best one :)

> Anyway, regardless of method, I'm happy with any solution that just
> fixes the issue.
> Signed-off-by: Nikola Pavlica (pavlica.nikola@gmail.com)---
> diff --git a/ui/gtk.c b/ui/gtk.c
> index a752aa22be..74287edde8 100644
> --- a/ui/gtk.c
> +++ b/ui/gtk.c
> @@ -776,18 +776,6 @@ static gboolean gd_draw_event(GtkWidget *widget,
> cairo_t *cr, void *opaque)
>      int fbw, fbh;
>      int refresh_rate_millihz;
>  
> -#if defined(CONFIG_OPENGL)
> -    if (vc->gfx.gls) {
> -        if (gtk_use_gl_area) {
> -            /* invoke render callback please */
> -            return FALSE;
> -        } else {
> -            gd_egl_draw(vc);
> -            return TRUE;
> -        }
> -    }
> -#endif
> -
>      if (!gtk_widget_get_realized(widget)) {
>          return FALSE;
>      }
> @@ -801,6 +789,18 @@ static gboolean gd_draw_event(GtkWidget *widget,
> cairo_t *cr, void *opaque)
>          vc->gfx.dcl.update_interval = MILLISEC_PER_SEC /
> refresh_rate_millihz;
>      }
>  
> +#if defined(CONFIG_OPENGL)
> +    if (vc->gfx.gls) {
> +        if (gtk_use_gl_area) {
> +            /* invoke render callback please */
> +            return FALSE;
> +        } else {
> +            gd_egl_draw(vc);
> +            return TRUE;
> +        }
> +    }
> +#endif
> +
>      fbw = surface_width(vc->gfx.ds);
>      fbh = surface_height(vc->gfx.ds);
> -- 
> 2.21.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]