Reviewed-by: Vivek Kasireddy <vivek.kasire...@intel.com>
> -----Original Message----- > From: Qemu-devel <qemu-devel-bounces+vivek.kasireddy=intel....@nongnu.org> On > Behalf Of Dongwon Kim > Sent: Friday, July 02, 2021 5:28 PM > To: qemu-devel@nongnu.org > Cc: Romli, Khairul Anuar <khairul.anuar.ro...@intel.com>; Kim, Dongwon > <dongwon....@intel.com> > 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 <dongwon....@intel.com> > Signed-off-by: Khairul Anuar Romli <khairul.anuar.ro...@intel.com> > --- > 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 >