pixman-renderer, gl-renderer: Destroy debug bindings on clean up
Also make sure backends destroy the renderers before shutting down the
compositor to avoid a double call to weston_binding_destroy().
This is a step towards making renderers switchable during runtime.
diff --git a/src/gl-renderer.c b/src/gl-renderer.c
index 2cb24fa..0f0b5f7 100644
--- a/src/gl-renderer.c
+++ b/src/gl-renderer.c
@@ -85,6 +85,8 @@
struct weston_renderer base;
int fragment_shader_debug;
int fan_debug;
+ struct weston_binding *fragment_binding;
+ struct weston_binding *fan_binding;
EGLDisplay egl_display;
EGLContext egl_context;
@@ -1567,6 +1569,9 @@
wl_array_release(&gr->indices);
wl_array_release(&gr->vtxcnt);
+ weston_binding_destroy(gr->fragment_binding);
+ weston_binding_destroy(gr->fan_binding);
+
free(gr);
}
@@ -1859,10 +1864,14 @@
if (compile_shaders(ec))
return -1;
- weston_compositor_add_debug_binding(ec, KEY_S,
- fragment_debug_binding, ec);
- weston_compositor_add_debug_binding(ec, KEY_F,
- fan_debug_repaint_binding, ec);
+ gr->fragment_binding =
+ weston_compositor_add_debug_binding(ec, KEY_S,
+ fragment_debug_binding,
+ ec);
+ gr->fan_binding =
+ weston_compositor_add_debug_binding(ec, KEY_F,
+ fan_debug_repaint_binding,
+ ec);
weston_log("GL ES 2 renderer features:\n");
weston_log_continue(STAMP_SPACE "read-back format: %s\n",