compositor: add screenshooter destructor
Nothing was freeing the allocation from screenshooter_create().
Add enough boilerplate, that we can free it. Fixes a Valgrind leak.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
diff --git a/compositor/screenshooter.c b/compositor/screenshooter.c
index 02a8d21..27967c4 100644
--- a/compositor/screenshooter.c
+++ b/compositor/screenshooter.c
@@ -28,6 +28,7 @@
struct screenshooter {
struct wl_object base;
struct wlsc_compositor *ec;
+ struct wl_global *global;
};
static void
@@ -64,20 +65,30 @@
&screenshooter_implementation, id, data);
}
-void
+struct screenshooter *
screenshooter_create(struct wlsc_compositor *ec)
{
struct screenshooter *shooter;
shooter = malloc(sizeof *shooter);
if (shooter == NULL)
- return;
+ return NULL;
shooter->base.interface = &screenshooter_interface;
shooter->base.implementation =
(void(**)(void)) &screenshooter_implementation;
shooter->ec = ec;
- wl_display_add_global(ec->wl_display,
- &screenshooter_interface, shooter, bind_shooter);
-};
+ shooter->global = wl_display_add_global(ec->wl_display,
+ &screenshooter_interface,
+ shooter, bind_shooter);
+
+ return shooter;
+}
+
+void
+screenshooter_destroy(struct screenshooter *shooter)
+{
+ wl_display_remove_global(shooter->ec->wl_display, shooter->global);
+ free(shooter);
+}