diff --git a/cogl/cogl-display.c b/cogl/cogl-display.c index ec13aa45a..1c64fe9e6 100644 --- a/cogl/cogl-display.c +++ b/cogl/cogl-display.c @@ -49,9 +49,24 @@ cogl_display_error_quark (void) return g_quark_from_static_string ("cogl-display-error-quark"); } +static const CoglWinsysVtable * +_cogl_display_get_winsys (CoglDisplay *display) +{ + return display->renderer->winsys_vtable; +} + static void _cogl_display_free (CoglDisplay *display) { + const CoglWinsysVtable *winsys; + + if (display->setup) + { + winsys = _cogl_display_get_winsys (display); + winsys->display_destroy (display); + display->setup = FALSE; + } + if (display->renderer) { cogl_object_unref (display->renderer); @@ -104,12 +119,6 @@ cogl_display_new (CoglRenderer *renderer, return _cogl_display_object_new (display); } -static const CoglWinsysVtable * -_cogl_display_get_winsys (CoglDisplay *display) -{ - return display->renderer->winsys_vtable; -} - gboolean cogl_display_setup (CoglDisplay *display, GError **error) diff --git a/cogl/winsys/cogl-winsys-egl.c b/cogl/winsys/cogl-winsys-egl.c index 4ee208a60..d4f83ac33 100644 --- a/cogl/winsys/cogl-winsys-egl.c +++ b/cogl/winsys/cogl-winsys-egl.c @@ -953,7 +953,14 @@ cleanup_context (CoglDisplay *display) egl_display->egl_context = EGL_NO_CONTEXT; } -#ifdef COGL_HAS_EGL_PLATFORM_POWERVR_X11_SUPPORT +#if defined (COGL_HAS_EGL_PLATFORM_POWERVR_NULL_SUPPORT) || \ + defined (COGL_HAS_EGL_PLATFORM_GDL_SUPPORT) + if (egl_display->egl_surface != EGL_NO_SURFACE) + { + eglDestroySurface (egl_renderer->edpy, egl_display->egl_surface); + egl_display->egl_surface = EGL_NO_SURFACE; + } +#elif COGL_HAS_EGL_PLATFORM_POWERVR_X11_SUPPORT if (egl_display->dummy_surface != EGL_NO_SURFACE) { eglDestroySurface (egl_renderer->edpy, egl_display->dummy_surface);