[mutter/gnome-3-30] compositor: Disconnect from stage signals on destruction
- From: Marco Trevisan <marcotrevi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gnome-3-30] compositor: Disconnect from stage signals on destruction
- Date: Fri, 3 May 2019 18:30:46 +0000 (UTC)
commit 1d8c4285b9b521985c611fd77b59049b197c67f5
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Mon Apr 29 20:02:18 2019 +0000
compositor: Disconnect from stage signals on destruction
From this point there's not any need for the compositor to listen to signals
so we can disconnect from the stage ones we are connected to.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/556
(cherry picked from commit 3ba79961fed2c70df3201b3e588990c92aadcd7f)
src/compositor/compositor-private.h | 3 +++
src/compositor/compositor.c | 21 ++++++++++++++++-----
2 files changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/src/compositor/compositor-private.h b/src/compositor/compositor-private.h
index 125a0afe8..5d9e830ca 100644
--- a/src/compositor/compositor-private.h
+++ b/src/compositor/compositor-private.h
@@ -18,6 +18,9 @@ struct _MetaCompositor
guint pre_paint_func_id;
guint post_paint_func_id;
+ guint stage_presented_id;
+ guint stage_after_paint_id;
+
gint64 server_time_query_time;
gint64 server_time_offset;
diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c
index cc1455a8c..24ff72fe5 100644
--- a/src/compositor/compositor.c
+++ b/src/compositor/compositor.c
@@ -134,6 +134,15 @@ meta_switch_workspace_completed (MetaCompositor *compositor)
void
meta_compositor_destroy (MetaCompositor *compositor)
{
+ g_signal_handler_disconnect (compositor->stage,
+ compositor->stage_after_paint_id);
+ g_signal_handler_disconnect (compositor->stage,
+ compositor->stage_presented_id);
+
+ compositor->stage_after_paint_id = 0;
+ compositor->stage_presented_id = 0;
+ compositor->stage = NULL;
+
clutter_threads_remove_repaint_func (compositor->pre_paint_func_id);
clutter_threads_remove_repaint_func (compositor->post_paint_func_id);
@@ -519,9 +528,10 @@ meta_compositor_manage (MetaCompositor *compositor)
compositor->stage = meta_backend_get_stage (backend);
- g_signal_connect (compositor->stage, "presented",
- G_CALLBACK (on_presented),
- compositor);
+ compositor->stage_presented_id =
+ g_signal_connect (compositor->stage, "presented",
+ G_CALLBACK (on_presented),
+ compositor);
/* We use connect_after() here to accomodate code in GNOME Shell that,
* when benchmarking drawing performance, connects to ::after-paint
@@ -531,8 +541,9 @@ meta_compositor_manage (MetaCompositor *compositor)
* connections to ::after-paint, connect() vs. connect_after() doesn't
* matter.
*/
- g_signal_connect_after (CLUTTER_STAGE (compositor->stage), "after-paint",
- G_CALLBACK (after_stage_paint), compositor);
+ compositor->stage_after_paint_id =
+ g_signal_connect_after (compositor->stage, "after-paint",
+ G_CALLBACK (after_stage_paint), compositor);
clutter_stage_set_sync_delay (CLUTTER_STAGE (compositor->stage), META_SYNC_DELAY);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]