Branch: refs/heads/master Author: Thomas Martitz kugel@rockbox.org Committer: Colomban Wendling ban@herbesfolles.org Date: Tue, 06 Oct 2015 13:40:57 UTC Commit: 6cb443e8631681c7b74ccef25c7656bdbc9f9305 https://github.com/geany/geany/commit/6cb443e8631681c7b74ccef25c7656bdbc9f93...
Log Message: ----------- plugins: enforce geany_plugin_register_proxy() can be called once
In the future we might want to enable calling it again to set new supported plugin types/extensions. This is not implemented yet, but in order to allow this in the future we have to prevent it now, otherwise we'd need to break the API.
Modified Paths: -------------- src/plugins.c
Modified: src/plugins.c 11 lines changed, 10 insertions(+), 1 deletions(-) =================================================================== @@ -1985,6 +1985,8 @@ gboolean geany_plugin_register_proxy(GeanyPlugin *plugin, const gchar **extensio { Plugin *p; const gchar **ext; + PluginProxy *proxy; + GList *node;
g_return_val_if_fail(plugin != NULL, FALSE); g_return_val_if_fail(extensions != NULL, FALSE); @@ -1993,10 +1995,17 @@ gboolean geany_plugin_register_proxy(GeanyPlugin *plugin, const gchar **extensio g_return_val_if_fail(plugin->proxy_funcs->unload != NULL, FALSE);
p = plugin->priv; + /* Check if this was called aready. We want to reserve for the use case of calling + * this again to set new supported extensions (for example, based on proxy configuration). */ + foreach_list(node, active_proxies.head) + { + proxy = node->data; + g_return_if_fail(p != proxy->plugin); + }
foreach_strv(ext, extensions) { - PluginProxy *proxy = g_new(PluginProxy, 1); + proxy = g_new(PluginProxy, 1); g_strlcpy(proxy->extension, *ext, sizeof(proxy->extension)); proxy->plugin = p; /* prepend, so that plugins automatically override core providers for a given extension */
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).