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);
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);
static void
wayland_destroy(struct weston_compositor *ec)
{
+ gles2_renderer_destroy(ec);
+
weston_compositor_shutdown(ec);
free(ec);
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);
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]);
int
gles2_renderer_init(struct weston_compositor *ec);
+void
+gles2_renderer_destroy(struct weston_compositor *ec);
#endif
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)
{