[gnome-builder] plugins/buffer-monitor: be robust during context destruction
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] plugins/buffer-monitor: be robust during context destruction
- Date: Tue, 12 Jul 2022 06:39:13 +0000 (UTC)
commit ef18f2274d2d9e46a695536a2259ab41652e6554
Author: Christian Hergert <chergert redhat com>
Date: Mon Jul 11 22:10:40 2022 -0700
plugins/buffer-monitor: be robust during context destruction
And remove dependency on editor.
src/plugins/buffer-monitor/buffer-monitor.plugin | 1 -
.../buffer-monitor/gbp-buffer-monitor-buffer-addin.c | 14 +++++++-------
2 files changed, 7 insertions(+), 8 deletions(-)
---
diff --git a/src/plugins/buffer-monitor/buffer-monitor.plugin
b/src/plugins/buffer-monitor/buffer-monitor.plugin
index e03a533a4..0cabe8139 100644
--- a/src/plugins/buffer-monitor/buffer-monitor.plugin
+++ b/src/plugins/buffer-monitor/buffer-monitor.plugin
@@ -2,7 +2,6 @@
Authors=Christian Hergert <christian hergert me>
Builtin=true
Copyright=Copyright © 2018 Christian Hergert
-Depends=editor;
Description=Watches buffers for changes on disk
Embedded=_gbp_buffer_monitor_register_types
Hidden=true
diff --git a/src/plugins/buffer-monitor/gbp-buffer-monitor-buffer-addin.c
b/src/plugins/buffer-monitor/gbp-buffer-monitor-buffer-addin.c
index 225f8bee5..32a7eb96e 100644
--- a/src/plugins/buffer-monitor/gbp-buffer-monitor-buffer-addin.c
+++ b/src/plugins/buffer-monitor/gbp-buffer-monitor-buffer-addin.c
@@ -36,6 +36,7 @@ struct _GbpBufferMonitorBufferAddin
IdeBuffer *buffer;
GFileMonitor *monitor;
+ IdeProject *project;
GDateTime *mtime;
guint mtime_set : 1;
@@ -246,7 +247,9 @@ gbp_buffer_monitor_buffer_addin_load (IdeBufferAddin *addin,
context = ide_buffer_ref_context (buffer);
project = ide_project_from_context (context);
- g_signal_connect_object (project,
+
+ self->project = g_object_ref (project);
+ g_signal_connect_object (self->project,
"file-renamed",
G_CALLBACK (file_renamed_cb),
self,
@@ -258,21 +261,18 @@ gbp_buffer_monitor_buffer_addin_unload (IdeBufferAddin *addin,
IdeBuffer *buffer)
{
GbpBufferMonitorBufferAddin *self = (GbpBufferMonitorBufferAddin *)addin;
- g_autoptr(IdeContext) context = NULL;
- IdeProject *project;
g_assert (GBP_IS_BUFFER_MONITOR_BUFFER_ADDIN (self));
g_assert (IDE_IS_BUFFER (buffer));
gbp_buffer_monitor_buffer_addin_setup_monitor (self, NULL);
- context = ide_buffer_ref_context (buffer);
- project = ide_project_from_context (context);
- g_signal_handlers_disconnect_by_func (project,
+ g_signal_handlers_disconnect_by_func (self->project,
G_CALLBACK (file_renamed_cb),
self);
g_clear_pointer (&self->mtime, g_date_time_unref);
+ g_clear_object (&self->project);
self->buffer = NULL;
}
@@ -343,7 +343,7 @@ buffer_addin_iface_init (IdeBufferAddinInterface *iface)
}
G_DEFINE_FINAL_TYPE_WITH_CODE (GbpBufferMonitorBufferAddin, gbp_buffer_monitor_buffer_addin, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
+ G_IMPLEMENT_INTERFACE (IDE_TYPE_BUFFER_ADDIN, buffer_addin_iface_init))
static void
gbp_buffer_monitor_buffer_addin_class_init (GbpBufferMonitorBufferAddinClass *klass)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]