[Spice-devel] [PATCHv2 1/3] egl: don't destroy wayland egl context

Pavel Grunt pgrunt at redhat.com
Mon May 23 15:24:51 UTC 2016


On Mon, 2016-05-23 at 13:01 +0200, Marc-André Lureau wrote:
> The egl context is from Gtk on Wayland. Destroy it only on X11.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau at gmail.com>
Acked-by: Pavel Grunt <pgrunt at redhat.com>
> ---
>  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() */
> +
> +        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);
>      }
> -
> -    eglMakeCurrent(d->egl.display, EGL_NO_SURFACE, EGL_NO_SURFACE,
> -                   EGL_NO_CONTEXT);
> -    eglTerminate(d->egl.display);
>  }
>  
>  G_GNUC_INTERNAL


More information about the Spice-devel mailing list