From cb9252441471a4f0f877f58f754c55e2cececc55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Fri, 20 May 2016 15:36:09 +0200 Subject: [PATCH] egl: don't destroy wayland egl context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The egl context is from Gtk on Wayland. Destroy it only on X11. Signed-off-by: Marc-André Lureau Acked-by: Pavel Grunt Acked-by: Victor Toso --- src/spice-widget-egl.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/spice-widget-egl.c b/src/spice-widget-egl.c index 961dcfa..a3db856 100644 --- a/src/spice-widget-egl.c +++ b/src/spice-widget-egl.c @@ -364,10 +364,6 @@ void spice_egl_unrealize_display(SpiceDisplay *display) d->egl.tex_pointer_id = 0; } - if (d->egl.surface != EGL_NO_SURFACE) { - eglDestroySurface(d->egl.display, d->egl.surface); - d->egl.surface = EGL_NO_SURFACE; - } if (d->egl.vbuf_id) { glDeleteBuffers(1, &d->egl.vbuf_id); d->egl.vbuf_id = 0; @@ -378,14 +374,24 @@ void spice_egl_unrealize_display(SpiceDisplay *display) d->egl.prog = 0; } - if (d->egl.ctx) { - eglDestroyContext(d->egl.display, d->egl.ctx); - d->egl.ctx = 0; - } + if (GDK_IS_X11_DISPLAY(gdk_display_get_default())) { + /* egl.surface && egl.ctx are only created on x11, see + spice_egl_init() */ - eglMakeCurrent(d->egl.display, EGL_NO_SURFACE, EGL_NO_SURFACE, - EGL_NO_CONTEXT); - eglTerminate(d->egl.display); + if (d->egl.surface != EGL_NO_SURFACE) { + eglDestroySurface(d->egl.display, d->egl.surface); + d->egl.surface = EGL_NO_SURFACE; + } + + if (d->egl.ctx) { + eglDestroyContext(d->egl.display, d->egl.ctx); + d->egl.ctx = 0; + } + + eglMakeCurrent(d->egl.display, EGL_NO_SURFACE, EGL_NO_SURFACE, + EGL_NO_CONTEXT); + eglTerminate(d->egl.display); + } } G_GNUC_INTERNAL