summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-10-25 19:53:25 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-10-25 19:53:25 (GMT)
commitde62d34d2dc6135b42af7f8a103c8c7af09fd54f (patch)
tree1824e55a7e76678af516dd52f73a1707ae7cc82a /src
parent8a4274cb6a99184ff4d9203c784ffd1e78550002 (diff)
Ensured the Python modules are available for other plugins in standalone mode.
Diffstat (limited to 'src')
-rw-r--r--src/main.c2
-rw-r--r--src/plugins/pglist.c29
-rw-r--r--src/plugins/pglist.h8
-rw-r--r--src/plugins/plugin.c22
-rw-r--r--src/plugins/plugin.h3
5 files changed, 58 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c
index 3bcedf4..e05ccb6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -249,7 +249,7 @@ int main(int argc, char **argv)
if (!batch_mode)
gtk_widget_show_now(editor);
- init_all_plugins();
+ init_all_plugins(true);
config = get_main_configuration();
diff --git a/src/plugins/pglist.c b/src/plugins/pglist.c
index 2010cda..1f608b4 100644
--- a/src/plugins/pglist.c
+++ b/src/plugins/pglist.c
@@ -58,7 +58,7 @@ static void browse_directory_for_plugins(const char *);
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : load = procéde à un chargement dans la foulée ? *
* *
* Description : Procède au chargement des différents greffons trouvés. *
* *
@@ -68,13 +68,14 @@ static void browse_directory_for_plugins(const char *);
* *
******************************************************************************/
-bool init_all_plugins(void)
+bool init_all_plugins(bool load)
{
g_rw_lock_init(&_pg_lock);
browse_directory_for_plugins(PACKAGE_SOURCE_DIR "/plugins");
- load_remaning_plugins();
+ if (load)
+ load_remaning_plugins();
return true;
@@ -113,6 +114,28 @@ void exit_all_plugins(void)
/******************************************************************************
* *
+* Paramètres : lock = type d'action à mener. *
+* *
+* Description : Verrouille ou déverrouille l'accès en lecture à la liste. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void _lock_unlock_plugin_list_for_reading(bool lock)
+{
+ if (lock)
+ g_rw_lock_reader_lock(&_pg_lock);
+ else
+ g_rw_lock_reader_unlock(&_pg_lock);
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : entry = entrée de répertoire à analyser. *
* *
* Description : Filtre les répertoire et les modules de greffons pootentels. *
diff --git a/src/plugins/pglist.h b/src/plugins/pglist.h
index d2f2243..d406cc8 100644
--- a/src/plugins/pglist.h
+++ b/src/plugins/pglist.h
@@ -36,11 +36,17 @@
/* Procède au chargement des différents greffons trouvés. */
-bool init_all_plugins(void);
+bool init_all_plugins(bool);
/* Procède au déchargement des différents greffons présents. */
void exit_all_plugins(void);
+/* Verrouille ou déverrouille l'accès en lecture à la liste. */
+void _lock_unlock_plugin_list_for_reading(bool lock);
+
+#define lock_plugin_list_for_reading() _lock_unlock_plugin_list_for_reading(true)
+#define unlock_plugin_list_for_reading() _lock_unlock_plugin_list_for_reading(false)
+
/* Ajoute un greffon à la liste principale de greffons. */
void _register_plugin(GPluginModule *);
diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c
index a57cb6f..2cfb3de 100644
--- a/src/plugins/plugin.c
+++ b/src/plugins/plugin.c
@@ -391,6 +391,26 @@ PluginStatusFlags g_plugin_module_get_flags(const GPluginModule *plugin)
/******************************************************************************
* *
+* Paramètres : plugin = greffon à modifier. *
+* flags = fanions à ajouter brutalement au greffon. *
+* *
+* Description : Ajoute des indications sur l'état du greffon. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void g_plugin_module_override_flags(GPluginModule *plugin, PluginStatusFlags flags)
+{
+ plugin->flags |= flags;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : plugin = greffon à mettre à jour. *
* list = ensemble des greffons disponibles. *
* count = taille de cet ensemble. *
@@ -543,7 +563,7 @@ bool g_plugin_module_load(GPluginModule *plugin, GPluginModule **list, size_t co
plugin->flags |= PSF_FAILURE;
- }
+ }
}
diff --git a/src/plugins/plugin.h b/src/plugins/plugin.h
index 78dcaa6..d86682c 100644
--- a/src/plugins/plugin.h
+++ b/src/plugins/plugin.h
@@ -82,6 +82,9 @@ const plugin_interface *g_plugin_module_get_interface(const GPluginModule *);
/* Fournit des indications sur l'état du greffon. */
PluginStatusFlags g_plugin_module_get_flags(const GPluginModule *);
+/* Ajoute des indications sur l'état du greffon. */
+void g_plugin_module_override_flags(GPluginModule *, PluginStatusFlags);
+
/* Met à jour l'ensemble des dépendances du greffon. */
bool g_plugin_module_resolve_dependencies(GPluginModule *, GPluginModule **, size_t);