libpurple/e2ee.c

changeset 35917
76b701912a9d
parent 35916
96593c46d85c
child 40043
90446617d967
equal deleted inserted replaced
35916:96593c46d85c 35917:76b701912a9d
166 } 166 }
167 167
168 void 168 void
169 purple_e2ee_provider_unregister(PurpleE2eeProvider *provider) 169 purple_e2ee_provider_unregister(PurpleE2eeProvider *provider)
170 { 170 {
171 GList *it; 171 GList *it, *clear_states = NULL;
172 g_return_if_fail(provider != NULL); 172 g_return_if_fail(provider != NULL);
173 173
174 if (main_provider != provider) { 174 if (main_provider != provider) {
175 purple_debug_warning("e2ee", "This provider is not registered"); 175 purple_debug_warning("e2ee", "This provider is not registered");
176 return; 176 return;
182 182
183 state = purple_conversation_get_e2ee_state(conv); 183 state = purple_conversation_get_e2ee_state(conv);
184 if (!state) 184 if (!state)
185 continue; 185 continue;
186 if (provider == purple_e2ee_state_get_provider(state)) 186 if (provider == purple_e2ee_state_get_provider(state))
187 purple_conversation_set_e2ee_state(conv, NULL); 187 clear_states = g_list_prepend(clear_states, conv);
188 } 188 }
189 189
190 main_provider = NULL; 190 main_provider = NULL;
191
192 for (it = clear_states; it; it = g_list_next(it))
193 purple_conversation_set_e2ee_state(it->data, NULL);
194 g_list_free(clear_states);
191 } 195 }
192 196
193 PurpleE2eeProvider * 197 PurpleE2eeProvider *
194 purple_e2ee_provider_get_main(void) 198 purple_e2ee_provider_get_main(void)
195 { 199 {
228 { 232 {
229 g_return_val_if_fail(provider != NULL, NULL); 233 g_return_val_if_fail(provider != NULL, NULL);
230 234
231 return provider->conv_menu_cb; 235 return provider->conv_menu_cb;
232 } 236 }
237
238 GList *
239 purple_e2ee_provider_get_conv_menu_actions(PurpleE2eeProvider *provider,
240 PurpleConversation *conv)
241 {
242 PurpleE2eeConvMenuCallback cb;
243
244 g_return_val_if_fail(provider, NULL);
245 g_return_val_if_fail(conv, NULL);
246
247 cb = purple_e2ee_provider_get_conv_menu_cb(provider);
248 if (cb == NULL)
249 return NULL;
250
251 return cb(conv);
252 }

mercurial