comparison libpurple/plugin.c @ 32819:2c6510167895 default tip

propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24) to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sat, 02 Jun 2012 02:30:49 +0000
parents 4f6b06139734
children
comparison
equal deleted inserted replaced
32818:01ff09d4a463 32819:2c6510167895
62 static GList *load_queue = NULL; 62 static GList *load_queue = NULL;
63 static GList *plugin_loaders = NULL; 63 static GList *plugin_loaders = NULL;
64 static GList *plugins_to_disable = NULL; 64 static GList *plugins_to_disable = NULL;
65 #endif 65 #endif
66 66
67 static void (*probe_cb)(void *) = NULL;
68 static void *probe_cb_data = NULL;
69 static void (*load_cb)(PurplePlugin *, void *) = NULL;
70 static void *load_cb_data = NULL;
71 static void (*unload_cb)(PurplePlugin *, void *) = NULL;
72 static void *unload_cb_data = NULL;
73
74 #ifdef PURPLE_PLUGINS 67 #ifdef PURPLE_PLUGINS
75 68
76 static gboolean 69 static gboolean
77 has_file_extension(const char *filename, const char *ext) 70 has_file_extension(const char *filename, const char *ext)
78 { 71 {
613 606
614 loaded_plugins = g_list_insert_sorted(loaded_plugins, plugin, compare_plugins); 607 loaded_plugins = g_list_insert_sorted(loaded_plugins, plugin, compare_plugins);
615 608
616 plugin->loaded = TRUE; 609 plugin->loaded = TRUE;
617 610
618 if (load_cb != NULL)
619 load_cb(plugin, load_cb_data);
620
621 purple_signal_emit(purple_plugins_get_handle(), "plugin-load", plugin); 611 purple_signal_emit(purple_plugins_get_handle(), "plugin-load", plugin);
622 612
623 return TRUE; 613 return TRUE;
624 614
625 #else 615 #else
743 * unload failure. It's obviously okay now. 733 * unload failure. It's obviously okay now.
744 */ 734 */
745 g_free(plugin->error); 735 g_free(plugin->error);
746 plugin->error = NULL; 736 plugin->error = NULL;
747 737
748 if (unload_cb != NULL)
749 unload_cb(plugin, unload_cb_data);
750
751 purple_signal_emit(purple_plugins_get_handle(), "plugin-unload", plugin); 738 purple_signal_emit(purple_plugins_get_handle(), "plugin-unload", plugin);
752 739
753 purple_prefs_disconnect_by_handle(plugin); 740 purple_prefs_disconnect_by_handle(plugin);
754 741
755 return TRUE; 742 return TRUE;
1437 1424
1438 protocol_plugins = g_list_insert_sorted(protocol_plugins, plugin, 1425 protocol_plugins = g_list_insert_sorted(protocol_plugins, plugin,
1439 (GCompareFunc)compare_prpl); 1426 (GCompareFunc)compare_prpl);
1440 } 1427 }
1441 } 1428 }
1442
1443 if (probe_cb != NULL)
1444 probe_cb(probe_cb_data);
1445
1446 #endif /* PURPLE_PLUGINS */ 1429 #endif /* PURPLE_PLUGINS */
1447 } 1430 }
1448 1431
1449 gboolean 1432 gboolean
1450 purple_plugin_register(PurplePlugin *plugin) 1433 purple_plugin_register(PurplePlugin *plugin)
1509 #ifdef PURPLE_PLUGINS 1492 #ifdef PURPLE_PLUGINS
1510 return TRUE; 1493 return TRUE;
1511 #else 1494 #else
1512 return FALSE; 1495 return FALSE;
1513 #endif 1496 #endif
1514 }
1515
1516 void
1517 purple_plugins_register_probe_notify_cb(void (*func)(void *), void *data)
1518 {
1519 probe_cb = func;
1520 probe_cb_data = data;
1521 }
1522
1523 void
1524 purple_plugins_unregister_probe_notify_cb(void (*func)(void *))
1525 {
1526 probe_cb = NULL;
1527 probe_cb_data = NULL;
1528 }
1529
1530 void
1531 purple_plugins_register_load_notify_cb(void (*func)(PurplePlugin *, void *),
1532 void *data)
1533 {
1534 load_cb = func;
1535 load_cb_data = data;
1536 }
1537
1538 void
1539 purple_plugins_unregister_load_notify_cb(void (*func)(PurplePlugin *, void *))
1540 {
1541 load_cb = NULL;
1542 load_cb_data = NULL;
1543 }
1544
1545 void
1546 purple_plugins_register_unload_notify_cb(void (*func)(PurplePlugin *, void *),
1547 void *data)
1548 {
1549 unload_cb = func;
1550 unload_cb_data = data;
1551 }
1552
1553 void
1554 purple_plugins_unregister_unload_notify_cb(void (*func)(PurplePlugin *, void *))
1555 {
1556 unload_cb = NULL;
1557 unload_cb_data = NULL;
1558 } 1497 }
1559 1498
1560 PurplePlugin * 1499 PurplePlugin *
1561 purple_plugins_find_with_name(const char *name) 1500 purple_plugins_find_with_name(const char *name)
1562 { 1501 {