Index: src/plugin.c
===================================================================
--- src/plugin.c (Revision 987)
+++ src/plugin.c (Arbeitskopie)
@@ -697,9 +702,8 @@
CompOption *o;
CompPlugin *p, *prev = NULL;
int i, j, old_num = 0, new_num = 0;
+ Bool settingsLoaded = FALSE;
- o = &d->opt[COMP_DISPLAY_OPTION_ACTIVE_PLUGINS];
-
/* Unload by default. */
pr_debug("Pop: ");
p = plugins;
@@ -709,6 +713,7 @@
if (!strcmp(p->vTable->name,"settings"))
{
p->state = BerylPluginReady;
+ settingsLoaded = TRUE;
}
else
{
@@ -721,6 +726,25 @@
pr_debug("Old number of plugins is %d.\n", old_num);
+ /* first load settings plugin (unconditionally) upon
+ * first startup to get the list of plugins to be
+ * activated
+ * if it wasn't loaded before, unload after that
+ */
+
+ if (!settingsLoaded) {
+ CompPlugin *settPlugin;
+ settPlugin = loadPlugin("settings", d);
+ pr_debug("initially loaded settings plugin (%p)\n", settPlugin);
+ if (settPlugin) {
+ initPlugin(settPlugin);
+ finiPlugin(settPlugin);
+ unloadPlugin(settPlugin, d);
+ }
+ }
+
+ o = &d->opt[COMP_DISPLAY_OPTION_ACTIVE_PLUGINS];
+
/*
* Now mark names still in the list as ok, and
* find how many plugins we'll have in the new