summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarsha M M <harsha.manjulamallikarjun@in.bosch.com>2018-08-07 19:05:02 +0530
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2018-08-08 12:22:24 +0300
commitb8b2c72709a16382fe7a75a3476236bd31c0e54c (patch)
treeabf67ed9c4376c0ce417065284b5d66d9cb45f3a
parent103dc42b5ec134362db9b6dfb32edf10344e6769 (diff)
downloadweston-b8b2c72709a16382fe7a75a3476236bd31c0e54c.tar.gz
weston-b8b2c72709a16382fe7a75a3476236bd31c0e54c.tar.bz2
weston-b8b2c72709a16382fe7a75a3476236bd31c0e54c.zip
libweston: Remove signals from the list during de-init
During de-init ensure removal of added signals from list. Otherwise a dongling pointer is left behind which will affect other plugins. Signed-off-by: Harsha M M <harsha.manjulamallikarjun@in.bosch.com> Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-rw-r--r--compositor/text-backend.c3
-rw-r--r--compositor/weston-screenshooter.c2
-rw-r--r--desktop-shell/shell.c1
3 files changed, 6 insertions, 0 deletions
diff --git a/compositor/text-backend.c b/compositor/text-backend.c
index 54242427..4b2e8543 100644
--- a/compositor/text-backend.c
+++ b/compositor/text-backend.c
@@ -452,6 +452,7 @@ text_input_manager_notifier_destroy(struct wl_listener *listener, void *data)
struct text_input_manager,
destroy_listener);
+ wl_list_remove(&text_input_manager->destroy_listener.link);
wl_global_destroy(text_input_manager->text_input_manager_global);
free(text_input_manager);
@@ -1060,6 +1061,8 @@ text_backend_configuration(struct text_backend *text_backend)
WL_EXPORT void
text_backend_destroy(struct text_backend *text_backend)
{
+ wl_list_remove(&text_backend->seat_created_listener.link);
+
if (text_backend->input_method.client) {
/* disable respawn */
wl_list_remove(&text_backend->client_listener.link);
diff --git a/compositor/weston-screenshooter.c b/compositor/weston-screenshooter.c
index 0994cb4f..981aff86 100644
--- a/compositor/weston-screenshooter.c
+++ b/compositor/weston-screenshooter.c
@@ -162,6 +162,8 @@ screenshooter_destroy(struct wl_listener *listener, void *data)
struct screenshooter *shooter =
container_of(listener, struct screenshooter, destroy_listener);
+ wl_list_remove(&shooter->destroy_listener.link);
+
wl_global_destroy(shooter->global);
free(shooter);
}
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index ea3c4535..9a447159 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -4911,6 +4911,7 @@ shell_destroy(struct wl_listener *listener, void *data)
wl_client_destroy(shell->child.client);
}
+ wl_list_remove(&shell->destroy_listener.link);
wl_list_remove(&shell->idle_listener.link);
wl_list_remove(&shell->wake_listener.link);
wl_list_remove(&shell->transform_listener.link);