compositor: Move unbind_display call into gles2-renderer.c
authorKristian Høgsberg <krh@bitplanet.net>
Fri, 7 Sep 2012 01:44:24 +0000 (21:44 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Fri, 7 Sep 2012 01:44:24 +0000 (21:44 -0400)
src/compositor-android.c
src/compositor-drm.c
src/compositor-wayland.c
src/compositor-x11.c
src/compositor.c
src/compositor.h
src/gles2-renderer.c

index 4f56c34..50c66e6 100644 (file)
@@ -423,6 +423,8 @@ android_init_egl(struct android_compositor *compositor,
 static void
 android_fini_egl(struct android_compositor *compositor)
 {
+       gles2_renderer_destroy(&compositor->base);
+
        eglMakeCurrent(compositor->base.egl_display,
                       EGL_NO_SURFACE, EGL_NO_SURFACE,
                       EGL_NO_CONTEXT);
index 178fe28..0faf45c 100644 (file)
@@ -2034,6 +2034,8 @@ drm_destroy(struct weston_compositor *ec)
 
        weston_compositor_shutdown(ec);
 
+       gles2_renderer_destroy(ec);
+
        /* Work around crash in egl_dri2.c's dri2_make_current() */
        eglMakeCurrent(ec->egl_display, EGL_NO_SURFACE, EGL_NO_SURFACE,
                       EGL_NO_CONTEXT);
index adc863e..d665641 100644 (file)
@@ -797,6 +797,8 @@ wayland_restore(struct weston_compositor *ec)
 static void
 wayland_destroy(struct weston_compositor *ec)
 {
+       gles2_renderer_destroy(ec);
+
        weston_compositor_shutdown(ec);
 
        free(ec);
index 2974d47..7ec56ff 100644 (file)
@@ -273,6 +273,8 @@ x11_compositor_init_egl(struct x11_compositor *c)
 static void
 x11_compositor_fini_egl(struct x11_compositor *compositor)
 {
+       gles2_renderer_destroy(&compositor->base);
+
        eglMakeCurrent(compositor->base.egl_display,
                       EGL_NO_SURFACE, EGL_NO_SURFACE,
                       EGL_NO_CONTEXT);
index 47d0ec5..ce7f424 100644 (file)
@@ -3142,9 +3142,6 @@ int main(int argc, char *argv[])
 
        wl_signal_emit(&ec->destroy_signal, ec);
 
-       if (ec->has_bind_display)
-               ec->unbind_display(ec->egl_display, display);
-
        for (i = ARRAY_LENGTH(signals); i;)
                wl_event_source_remove(signals[--i]);
 
index 763decc..fd066e2 100644 (file)
@@ -803,5 +803,7 @@ weston_output_switch_mode(struct weston_output *output, struct weston_mode *mode
 
 int
 gles2_renderer_init(struct weston_compositor *ec);
+void
+gles2_renderer_destroy(struct weston_compositor *ec);
 
 #endif
index 470076b..f1941e6 100644 (file)
@@ -1039,6 +1039,13 @@ struct gles2_renderer {
        struct weston_renderer base;
 };
 
+WL_EXPORT void
+gles2_renderer_destroy(struct weston_compositor *ec)
+{
+       if (ec->has_bind_display)
+               ec->unbind_display(ec->egl_display, ec->wl_display);
+}
+
 WL_EXPORT int
 gles2_renderer_init(struct weston_compositor *ec)
 {