Mercurial > pidgin
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 { |
