/dev/twasilczyk/imgupload: c568fcefdb82: Imgupload: hook newly c...

Tomasz Wasilczyk <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: c568fcefdb823946c45dd99cdfee0bafa1ba4927
Author:	 Tomasz Wasilczyk <[email protected]>
Date:	 2014-05-19 11:18 +0200
Branch:	 default
URL: https://hg.pidgin.im/dev/twasilczyk/imgupload/rev/c568fcefdb82

Description:

Imgupload: hook newly created connections

diffstat:

 libpurple/connection.c     |   3 ++-
 pidgin/plugins/imgupload.c |  22 ++++++++++++++++++----
 2 files changed, 20 insertions(+), 5 deletions(-)

diffs (63 lines):

diff --git a/libpurple/connection.c b/libpurple/connection.c
--- a/libpurple/connection.c
+++ b/libpurple/connection.c
@@ -266,7 +266,8 @@ purple_connection_set_flags(PurpleConnec
 
 	priv->flags = flags;
 
-	g_object_notify_by_pspec(G_OBJECT(gc), properties[PROP_FLAGS]);
+	if (!priv->is_finalizing)
+		g_object_notify_by_pspec(G_OBJECT(gc), properties[PROP_FLAGS]);
 }
 
 void
diff --git a/pidgin/plugins/imgupload.c b/pidgin/plugins/imgupload.c
--- a/pidgin/plugins/imgupload.c
+++ b/pidgin/plugins/imgupload.c
@@ -61,6 +61,8 @@ imgup_conv_init(PurpleConversation *conv
 	purple_conversation_set_features(conv,
 		purple_conversation_get_features(conv) &
 		~PURPLE_CONNECTION_FLAG_NO_IMAGES);
+
+	g_object_set_data(G_OBJECT(conv), "imgupload-set", GINT_TO_POINTER(TRUE));
 }
 
 static void
@@ -69,14 +71,19 @@ imgup_conv_uninit(PurpleConversation *co
 	PurpleConnection *gc;
 
 	gc = purple_conversation_get_connection(conv);
-	if (!gc)
-		return;
-	if (!imgup_conn_is_hooked(gc))
-		return;
+	if (gc) {
+		if (!imgup_conn_is_hooked(gc))
+			return;
+	} else {
+		if (!g_object_get_data(G_OBJECT(conv), "imgupload-set"))
+			return;
+	}
 
 	purple_conversation_set_features(conv,
 		purple_conversation_get_features(conv) |
 		PURPLE_CONNECTION_FLAG_NO_IMAGES);
+
+	g_object_set_data(G_OBJECT(conv), "imgupload-set", NULL);
 }
 
 static void
@@ -124,6 +131,13 @@ imgup_plugin_load(PurplePlugin *plugin)
 		imgup_conv_init(conv);
 	}
 
+	purple_signal_connect(purple_connections_get_handle(),
+		"signed-on", plugin,
+		PURPLE_CALLBACK(imgup_conn_init), NULL);
+	purple_signal_connect(purple_connections_get_handle(),
+		"signing-off", plugin,
+		PURPLE_CALLBACK(imgup_conn_uninit), NULL);
+
 	return TRUE;
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.