Message ID | 20231017111642.1155545-1-marcandre.lureau@redhat.com |
---|---|
State | New |
Headers | show |
Series | gtk: force realization of drawing area | expand |
Reviewed-by: Antonio Caggiano <quic_acaggian@quicinc.com> On 17/10/2023 13:16, marcandre.lureau@redhat.com wrote: > From: Marc-André Lureau <marcandre.lureau@redhat.com> > > Fixes the GL context creation from a widget that isn't yet realized (in > a hidden tab for example). > > Resolves: > https://gitlab.com/qemu-project/qemu/-/issues/1727 > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > ui/gtk.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/ui/gtk.c b/ui/gtk.c > index 935de1209b..2a4c9b84ba 100644 > --- a/ui/gtk.c > +++ b/ui/gtk.c > @@ -2371,6 +2371,7 @@ static void gtk_display_init(DisplayState *ds, DisplayOptions *opts) > GdkDisplay *window_display; > GtkIconTheme *theme; > char *dir; > + int idx; > > if (!gtkinit) { > fprintf(stderr, "gtk initialization failed\n"); > @@ -2434,6 +2435,15 @@ static void gtk_display_init(DisplayState *ds, DisplayOptions *opts) > gtk_container_add(GTK_CONTAINER(s->window), s->vbox); > > gtk_widget_show_all(s->window); > + > + for (idx = 0;; idx++) { > + QemuConsole *con = qemu_console_lookup_by_index(idx); > + if (!con) { > + break; > + } > + gtk_widget_realize(s->vc[idx].gfx.drawing_area); > + } > + > if (opts->u.gtk.has_show_menubar && > !opts->u.gtk.show_menubar) { > gtk_widget_hide(s->menu_bar);
diff --git a/ui/gtk.c b/ui/gtk.c index 935de1209b..2a4c9b84ba 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2371,6 +2371,7 @@ static void gtk_display_init(DisplayState *ds, DisplayOptions *opts) GdkDisplay *window_display; GtkIconTheme *theme; char *dir; + int idx; if (!gtkinit) { fprintf(stderr, "gtk initialization failed\n"); @@ -2434,6 +2435,15 @@ static void gtk_display_init(DisplayState *ds, DisplayOptions *opts) gtk_container_add(GTK_CONTAINER(s->window), s->vbox); gtk_widget_show_all(s->window); + + for (idx = 0;; idx++) { + QemuConsole *con = qemu_console_lookup_by_index(idx); + if (!con) { + break; + } + gtk_widget_realize(s->vc[idx].gfx.drawing_area); + } + if (opts->u.gtk.has_show_menubar && !opts->u.gtk.show_menubar) { gtk_widget_hide(s->menu_bar);