SF.net SVN: geany: [2614] trunk
ntrel at users.sourceforge.net
ntrel at xxxxx
Mon May 26 14:17:42 UTC 2008
Revision: 2614
http://geany.svn.sourceforge.net/geany/?rev=2614&view=rev
Author: ntrel
Date: 2008-05-26 07:17:41 -0700 (Mon, 26 May 2008)
Log Message:
-----------
Move all symbol lookups except plugin_set_info() into plugin_init().
Add debug message for missing init() function in a plugin.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/plugins.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2008-05-25 19:40:56 UTC (rev 2613)
+++ trunk/ChangeLog 2008-05-26 14:17:41 UTC (rev 2614)
@@ -1,3 +1,10 @@
+2008-05-26 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/plugins.c:
+ Move all symbol lookups except plugin_set_info() into plugin_init().
+ Add debug message for missing init() function in a plugin.
+
+
2008-05-23 Nick Treleaven <nick(dot)treleaven(at)btinternet(dot)com>
* src/plugindata.h, src/plugins.c, doc/plugin-symbols.c,
Modified: trunk/src/plugins.c
===================================================================
--- trunk/src/plugins.c 2008-05-25 19:40:56 UTC (rev 2613)
+++ trunk/src/plugins.c 2008-05-26 14:17:41 UTC (rev 2614)
@@ -431,19 +431,45 @@
PluginCallback *callbacks;
PluginInfo **p_info;
- if (plugin->init)
+ /* set these symbols before init() is called */
+ g_module_symbol(plugin->module, "plugin_info", (void *) &p_info);
+ if (p_info)
+ *p_info = &plugin->info;
+ g_module_symbol(module, "geany_data", (void *) &p_geany_data);
+ if (p_geany_data)
+ *p_geany_data = &geany_data;
+ g_module_symbol(module, "geany_functions", (void *) &p_geany_functions);
+ if (p_geany_functions)
+ *p_geany_functions = &geany_functions;
+ g_module_symbol(module, "plugin_fields", (void *) &plugin_fields);
+ if (plugin_fields)
+ *plugin_fields = &plugin->fields;
+
+ /* start the plugin */
+ g_module_symbol(module, "init", (void *) &plugin->init);
+ if (plugin->init != NULL)
plugin->init(&geany_data);
+ else
+ geany_debug("Plugin '%s' has no init() function!", plugin->info.name);
+ /* store some function pointers for later use */
+ g_module_symbol(module, "configure", (void *) &plugin->configure);
+ g_module_symbol(module, "cleanup", (void *) &plugin->cleanup);
+ if (plugin->init != NULL && plugin->cleanup == NULL)
+ {
+ if (app->debug_mode)
+ g_warning("Plugin '%s' has no cleanup() function - there may be memory leaks!",
+ plugin->info.name);
+ }
+
+ /* now read any plugin-owned data that might have been set in init() */
+
if (plugin->fields.flags & PLUGIN_IS_DOCUMENT_SENSITIVE)
{
gboolean enable = gtk_notebook_get_n_pages(GTK_NOTEBOOK(main_widgets.notebook)) ? TRUE : FALSE;
gtk_widget_set_sensitive(plugin->fields.menu_item, enable);
}
- g_module_symbol(plugin->module, "plugin_info", (void *) &p_info);
- if (p_info)
- *p_info = &plugin->info;
-
g_module_symbol(plugin->module, "plugin_callbacks", (void *) &callbacks);
if (callbacks)
add_callbacks(plugin, callbacks);
@@ -453,6 +479,7 @@
if (plugin->key_group)
add_kb_group(plugin);
+ /* remember which plugins are active */
active_plugin_list = g_list_append(active_plugin_list, plugin);
geany_debug("Loaded: %s (%s)", plugin->filename,
@@ -546,26 +573,6 @@
plugin->filename = g_strdup(fname);
plugin->module = module;
- g_module_symbol(module, "geany_data", (void *) &p_geany_data);
- if (p_geany_data)
- *p_geany_data = &geany_data;
- g_module_symbol(module, "geany_functions", (void *) &p_geany_functions);
- if (p_geany_functions)
- *p_geany_functions = &geany_functions;
- g_module_symbol(module, "plugin_fields", (void *) &plugin_fields);
- if (plugin_fields)
- *plugin_fields = &plugin->fields;
-
- g_module_symbol(module, "init", (void *) &plugin->init);
- g_module_symbol(module, "configure", (void *) &plugin->configure);
- g_module_symbol(module, "cleanup", (void *) &plugin->cleanup);
- if (plugin->init != NULL && plugin->cleanup == NULL)
- {
- if (app->debug_mode)
- g_warning("Plugin '%s' has no cleanup() function - there may be memory leaks!",
- plugin->info.name);
- }
-
if (init_plugin)
plugin_init(plugin);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list