62 lines
1.5 KiB
Diff
62 lines
1.5 KiB
Diff
diff -upNr compiz-0.7.2.orign/plugins/gconf.c compiz-0.7.2/plugins/gconf.c
|
|
--- compiz-0.7.2.orign/plugins/gconf.c 2008-03-06 18:52:26.000000000 +0100
|
|
+++ compiz-0.7.2/plugins/gconf.c 2008-03-27 19:44:11.000000000 +0100
|
|
@@ -443,6 +443,46 @@ gconfReadOptionValue (CompObject *o
|
|
return TRUE;
|
|
}
|
|
|
|
+
|
|
+static void
|
|
+gconfFixupPluginList (CompOptionValue *value)
|
|
+{
|
|
+ unsigned int i, j, length;
|
|
+ CompOptionValue *new;
|
|
+
|
|
+ for (i = 0; i < value->list.nValue; i++)
|
|
+ if (!strcmp (value->list.value[i].s, "core"))
|
|
+ break;
|
|
+
|
|
+ if (i != value->list.nValue)
|
|
+ return;
|
|
+
|
|
+ puts("fix up list");
|
|
+ length = value->list.nValue + 1;
|
|
+
|
|
+ new = calloc (length, sizeof (CompOptionValue));
|
|
+
|
|
+ if (!new)
|
|
+ return;
|
|
+
|
|
+ new[0].s = strdup ("core");
|
|
+
|
|
+ j = 1;
|
|
+
|
|
+ for (i = 0; i < value->list.nValue; i++)
|
|
+ {
|
|
+ if (strcmp (value->list.value[i].s, "core"))
|
|
+ new[j++].s = strdup (value->list.value[i].s);
|
|
+ free (value->list.value[i].s);
|
|
+ }
|
|
+
|
|
+ free (value->list.value);
|
|
+
|
|
+ value->list.value = new;
|
|
+ value->list.nValue = length;
|
|
+}
|
|
+
|
|
+
|
|
static void
|
|
gconfGetOption (CompObject *object,
|
|
CompOption *o,
|
|
@@ -462,6 +502,10 @@ gconfGetOption (CompObject *object,
|
|
|
|
if (gconfReadOptionValue (object, entry, o, &value))
|
|
{
|
|
+ if (strcmp (plugin, "core") == 0) {
|
|
+ if (!strcmp (o->name, "active_plugins"))
|
|
+ gconfFixupPluginList (&value);
|
|
+ }
|
|
(*core.setOptionForPlugin) (object, plugin, o->name, &value);
|
|
compFiniOptionValue (&value, o->type);
|
|
}
|