Reviewed-by: Vivek Kasireddy <[email protected]>
> -----Original Message----- > From: Qemu-devel <[email protected]> On > Behalf Of Dongwon Kim > Sent: Friday, July 02, 2021 5:28 PM > To: [email protected] > Cc: Romli, Khairul Anuar <[email protected]>; Kim, Dongwon > <[email protected]> > Subject: [PATCH 1/3] ui/gtk-egl: un-tab and re-tab should destroy egl surface > and context > > An old esurface should be destroyed and set to be NULL when doing > un-tab and re-tab so that a new esurface an context can be created > for the window widget that those will be bound to. > > Signed-off-by: Dongwon Kim <[email protected]> > Signed-off-by: Khairul Anuar Romli <[email protected]> > --- > ui/gtk.c | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/ui/gtk.c b/ui/gtk.c > index 98046f577b..bfb95f3b4b 100644 > --- a/ui/gtk.c > +++ b/ui/gtk.c > @@ -1232,6 +1232,14 @@ static gboolean gd_tab_window_close(GtkWidget *widget, > GdkEvent *event, > vc->tab_item, vc->label); > gtk_widget_destroy(vc->window); > vc->window = NULL; > + if (vc->gfx.esurface) { > + eglDestroySurface(qemu_egl_display, vc->gfx.esurface); > + vc->gfx.esurface = NULL; > + } > + if (vc->gfx.ectx) { > + eglDestroyContext(qemu_egl_display, vc->gfx.ectx); > + vc->gfx.ectx = NULL; > + } > return TRUE; > } > > @@ -1261,6 +1269,14 @@ static void gd_menu_untabify(GtkMenuItem *item, void > *opaque) > if (!vc->window) { > gtk_widget_set_sensitive(vc->menu_item, false); > vc->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); > + if (vc->gfx.esurface) { > + eglDestroySurface(qemu_egl_display, vc->gfx.esurface); > + vc->gfx.esurface = NULL; > + } > + if (vc->gfx.esurface) { > + eglDestroyContext(qemu_egl_display, vc->gfx.ectx); > + vc->gfx.ectx = NULL; > + } > gd_widget_reparent(s->notebook, vc->window, vc->tab_item); > > g_signal_connect(vc->window, "delete-event", > -- > 2.17.1 >
