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);