libpurple/e2ee.c

changeset 35917
76b701912a9d
parent 35916
96593c46d85c
child 40043
90446617d967
--- a/libpurple/e2ee.c	Sat Apr 26 16:56:31 2014 +0200
+++ b/libpurple/e2ee.c	Sat Apr 26 19:55:55 2014 +0200
@@ -168,7 +168,7 @@
 void
 purple_e2ee_provider_unregister(PurpleE2eeProvider *provider)
 {
-	GList *it;
+	GList *it, *clear_states = NULL;
 	g_return_if_fail(provider != NULL);
 
 	if (main_provider != provider) {
@@ -184,10 +184,14 @@
 		if (!state)
 			continue;
 		if (provider == purple_e2ee_state_get_provider(state))
-			purple_conversation_set_e2ee_state(conv, NULL);
+			clear_states = g_list_prepend(clear_states, conv);
 	}
 
 	main_provider = NULL;
+
+	for (it = clear_states; it; it = g_list_next(it))
+		purple_conversation_set_e2ee_state(it->data, NULL);
+	g_list_free(clear_states);
 }
 
 PurpleE2eeProvider *
@@ -230,3 +234,19 @@
 
 	return provider->conv_menu_cb;
 }
+
+GList *
+purple_e2ee_provider_get_conv_menu_actions(PurpleE2eeProvider *provider,
+	PurpleConversation *conv)
+{
+	PurpleE2eeConvMenuCallback cb;
+
+	g_return_val_if_fail(provider, NULL);
+	g_return_val_if_fail(conv, NULL);
+
+	cb = purple_e2ee_provider_get_conv_menu_cb(provider);
+	if (cb == NULL)
+		return NULL;
+
+	return cb(conv);
+}

mercurial