[gnome-builder/wip/chergert/pipeline-merge] build-manager: use EggSignalGroup for pipeline signals
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/pipeline-merge] build-manager: use EggSignalGroup for pipeline signals
- Date: Sat, 11 Feb 2017 01:09:58 +0000 (UTC)
commit a832817b3be4face6a118f5c312a40510457ef80
Author: Christian Hergert <chergert redhat com>
Date: Fri Feb 10 17:01:16 2017 -0800
build-manager: use EggSignalGroup for pipeline signals
This ensures that we disconnect from various signals when the pipeline
is no longer active.
libide/buildsystem/ide-build-manager.c | 67 ++++++++++++++++++--------------
1 files changed, 38 insertions(+), 29 deletions(-)
---
diff --git a/libide/buildsystem/ide-build-manager.c b/libide/buildsystem/ide-build-manager.c
index 4c46af0..e87f682 100644
--- a/libide/buildsystem/ide-build-manager.c
+++ b/libide/buildsystem/ide-build-manager.c
@@ -18,6 +18,8 @@
#define G_LOG_DOMAIN "ide-build-manager"
+#include <egg-signal-group.h>
+
#include "ide-context.h"
#include "ide-debug.h"
@@ -35,6 +37,7 @@ struct _IdeBuildManager
GDateTime *last_build_time;
GCancellable *cancellable;
GActionGroup *actions;
+ EggSignalGroup *pipeline_signals;
GTimer *running_time;
@@ -246,36 +249,8 @@ ide_build_manager_invalidate_pipeline (IdeBuildManager *self)
"context", context,
"configuration", config,
NULL);
+ egg_signal_group_set_target (self->pipeline_signals, self->pipeline);
- g_signal_connect_object (self->pipeline,
- "diagnostic",
- G_CALLBACK (ide_build_manager_handle_diagnostic),
- self,
- G_CONNECT_SWAPPED);
-
- g_signal_connect_object (self->pipeline,
- "notify::busy",
- G_CALLBACK (ide_build_manager_notify_busy),
- self,
- G_CONNECT_SWAPPED);
-
- g_signal_connect_object (self->pipeline,
- "notify::message",
- G_CALLBACK (ide_build_manager_notify_message),
- self,
- G_CONNECT_SWAPPED);
-
- g_signal_connect_object (self->pipeline,
- "started",
- G_CALLBACK (ide_build_manager_pipeline_started),
- self,
- G_CONNECT_SWAPPED);
-
- g_signal_connect_object (self->pipeline,
- "finished",
- G_CALLBACK (ide_build_manager_pipeline_finished),
- self,
- G_CONNECT_SWAPPED);
self->diagnostic_count = 0;
@@ -364,6 +339,7 @@ ide_build_manager_finalize (GObject *object)
IdeBuildManager *self = (IdeBuildManager *)object;
g_clear_object (&self->pipeline);
+ g_clear_object (&self->pipeline_signals);
g_clear_object (&self->cancellable);
g_clear_pointer (&self->last_build_time, g_date_time_unref);
g_clear_pointer (&self->running_time, g_timer_destroy);
@@ -638,6 +614,39 @@ ide_build_manager_init (IdeBuildManager *self)
G_N_ELEMENTS (actions),
self);
+ self->pipeline_signals = egg_signal_group_new (IDE_TYPE_BUILD_PIPELINE);
+
+ egg_signal_group_connect_object (self->pipeline_signals,
+ "diagnostic",
+ G_CALLBACK (ide_build_manager_handle_diagnostic),
+ self,
+ G_CONNECT_SWAPPED);
+
+ egg_signal_group_connect_object (self->pipeline_signals,
+ "notify::busy",
+ G_CALLBACK (ide_build_manager_notify_busy),
+ self,
+ G_CONNECT_SWAPPED);
+
+ egg_signal_group_connect_object (self->pipeline_signals,
+ "notify::message",
+ G_CALLBACK (ide_build_manager_notify_message),
+ self,
+ G_CONNECT_SWAPPED);
+
+ egg_signal_group_connect_object (self->pipeline_signals,
+ "started",
+ G_CALLBACK (ide_build_manager_pipeline_started),
+ self,
+ G_CONNECT_SWAPPED);
+
+ egg_signal_group_connect_object (self->pipeline_signals,
+ "finished",
+ G_CALLBACK (ide_build_manager_pipeline_finished),
+ self,
+ G_CONNECT_SWAPPED);
+
+
IDE_EXIT;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]