SF.net SVN: geany:[4047] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Thu Jul 30 11:56:25 UTC 2009


Revision: 4047
          http://geany.svn.sourceforge.net/geany/?rev=4047&view=rev
Author:   ntrel
Date:     2009-07-30 11:56:25 +0000 (Thu, 30 Jul 2009)

Log Message:
-----------
Fix disconnecting plugin signal id when not using geany_object.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/pluginprivate.h
    trunk/src/plugins.c
    trunk/src/pluginutils.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-07-30 11:29:53 UTC (rev 4046)
+++ trunk/ChangeLog	2009-07-30 11:56:25 UTC (rev 4047)
@@ -11,6 +11,8 @@
    tagmanager/parsers.h, tagmanager/makefile.win32,
    tagmanager/markdown.c, tagmanager/Makefile.am, wscript:
    Add Markdown filetype (patch by Jon Strait, thanks).
+ * src/pluginprivate.h, src/pluginutils.c, src/plugins.c:
+   Fix disconnecting plugin signal id when not using geany_object.
 
 
 2009-07-29  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>

Modified: trunk/src/pluginprivate.h
===================================================================
--- trunk/src/pluginprivate.h	2009-07-30 11:29:53 UTC (rev 4046)
+++ trunk/src/pluginprivate.h	2009-07-30 11:56:25 UTC (rev 4047)
@@ -28,11 +28,18 @@
 
 #include "ui_utils.h"
 
+typedef struct SignalConnection
+{
+	GObject	*object;
+	gulong	handler_id;
+}
+SignalConnection;
+
 typedef struct GeanyPluginPrivate
 {
 	GeanyAutoSeparator	toolbar_separator;
 	gboolean			resident;
-	GArray				*signal_ids;			/* gulong signal IDs to disconnect when unloading */
+	GArray				*signal_ids;			/* SignalConnection's to disconnect when unloading */
 }
 GeanyPluginPrivate;
 

Modified: trunk/src/plugins.c
===================================================================
--- trunk/src/plugins.c	2009-07-30 11:29:53 UTC (rev 4046)
+++ trunk/src/plugins.c	2009-07-30 11:56:25 UTC (rev 4047)
@@ -682,13 +682,13 @@
 static void remove_callbacks(Plugin *plugin)
 {
 	GArray *signal_ids = plugin->priv.signal_ids;
-	gulong *i;
+	SignalConnection *sc;
 
 	if (signal_ids == NULL)
 		return;
 
-	foreach_array(gulong, i, signal_ids)
-		g_signal_handler_disconnect(geany_object, *i);
+	foreach_array(SignalConnection, sc, signal_ids)
+		g_signal_handler_disconnect(sc->object, sc->handler_id);
 
 	g_array_free(signal_ids, TRUE);
 }

Modified: trunk/src/pluginutils.c
===================================================================
--- trunk/src/pluginutils.c	2009-07-30 11:29:53 UTC (rev 4046)
+++ trunk/src/pluginutils.c	2009-07-30 11:56:25 UTC (rev 4047)
@@ -107,6 +107,7 @@
 		GCallback callback, gpointer user_data)
 {
 	gulong id;
+	SignalConnection sc;
 
 	if (!object)
 		object = geany_object;
@@ -116,9 +117,11 @@
 		g_signal_connect(object, signal_name, callback, user_data);
 
 	if (!plugin->priv->signal_ids)
-		plugin->priv->signal_ids = g_array_new(FALSE, FALSE, sizeof(gulong));
+		plugin->priv->signal_ids = g_array_new(FALSE, FALSE, sizeof(SignalConnection));
 
-	g_array_append_val(plugin->priv->signal_ids, id);
+	sc.object = object;
+	sc.handler_id = id;
+	g_array_append_val(plugin->priv->signal_ids, sc);
 }
 
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list