[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libcompizconfig: Changes to 'debian-unstable'



 Makefile.am                     |   10 
 VERSION                         |    2 
 config/config                   |    5 
 configure.ac                    |   28 
 debian/changelog                |   10 
 debian/control                  |    7 
 debian/gbp.conf                 |    8 
 debian/libcompizconfig0.install |    1 
 include/ccs.h                   |   44 
 metadata/Makefile.am            |    7 
 metadata/global.xml             |  416 -----
 plugin/ccp.c                    |   99 -
 src/Makefile.am                 |   46 
 src/ccs-private.h               |    5 
 src/compiz.c                    | 1570 --------------------
 src/compiz.cpp                  | 3137 ++++++++++++++++++++++++++++++++++++++++
 src/compizconfig.proto          |  164 ++
 src/config.c                    |   13 
 src/ini.c                       |  131 -
 src/lists.c                     |    6 
 src/main.c                      |   65 
 21 files changed, 3632 insertions(+), 2142 deletions(-)

New commits:
commit 40bbe774c362fe7e2fd236e9b9326f845c087c40
Author: Sean Finney <seanius@debian.org>
Date:   Sun Apr 5 21:51:13 2009 +0200

    prep changelog for upload

diff --git a/debian/changelog b/debian/changelog
index a876151..d47afe1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+libcompizconfig (0.8.2-1) unstable; urgency=low
+
+  * New upstream release.
+  * Add gbp.conf for use with git-buildpackage
+  * Add build-dep on libprotobuf-dev and protobuf-compiler.
+  * Update Standards-Version to 3.8.1
+  * Remove usr/share/compizconfig from libcompizconfig0.install
+
+ -- Sean Finney <seanius@debian.org>  Sun, 05 Apr 2009 21:47:59 +0200
+
 libcompizconfig (0.7.6-1) unstable; urgency=low
 
   * New upstream release.  Includes ABI change so build-deps changed

commit c1eb7402fb8e0d1d11b18bdb90da4e6ab2729fc9
Author: Sean Finney <seanius@debian.org>
Date:   Sun Apr 5 21:47:48 2009 +0200

    remove usr/share/compizconfig from libcompizconfig0.install

diff --git a/debian/libcompizconfig0.install b/debian/libcompizconfig0.install
index 1c035b2..8cdfd85 100644
--- a/debian/libcompizconfig0.install
+++ b/debian/libcompizconfig0.install
@@ -2,5 +2,4 @@ usr/lib/libcompizconfig.so.*
 usr/lib/compiz/*.so
 usr/lib/compizconfig/backends/*.so
 usr/share/compiz/*xml
-usr/share/compizconfig
 etc/compizconfig/config

commit de92318a6060dbec6ab4f45613abc40218f4001a
Author: Sean Finney <seanius@debian.org>
Date:   Sun Apr 5 21:45:20 2009 +0200

    update standard-version to 3.8.1

diff --git a/debian/control b/debian/control
index 786c4c8..b0d9c3c 100644
--- a/debian/control
+++ b/debian/control
@@ -6,7 +6,7 @@ Build-Depends: debhelper (>= 5), autoconf, automake1.9, autotools-dev, compiz-de
  libprotobuf-dev,
  libxml2-dev, libxslt1-dev,
  protobuf-compiler
-Standards-Version: 3.7.2
+Standards-Version: 3.8.1
 Section: libs
 
 Package: libcompizconfig-dev

commit 9d0092b5031182aa889935643bd51f9a2ac4e065
Author: Sean Finney <seanius@debian.org>
Date:   Sun Apr 5 21:41:52 2009 +0200

    add build-dep on libprotobuf-dev and protobuf-compiler

diff --git a/debian/control b/debian/control
index f8ef646..786c4c8 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,10 @@ Source: libcompizconfig
 Priority: extra
 Maintainer: Debian X Strike Force <debian-x@lists.debian.org>
 Uploaders: Sean Finney <seanius@debian.org>
-Build-Depends: debhelper (>= 5), autoconf, automake1.9, autotools-dev, compiz-dev (>= 0.7.6), intltool, libtool, libglib2.0-dev, libxml2-dev, libxslt1-dev
+Build-Depends: debhelper (>= 5), autoconf, automake1.9, autotools-dev, compiz-dev (>= 0.7.6), intltool, libtool, libglib2.0-dev, 
+ libprotobuf-dev,
+ libxml2-dev, libxslt1-dev,
+ protobuf-compiler
 Standards-Version: 3.7.2
 Section: libs
 

commit e788f7aa01b00466f75283e745f3d66bf390a123
Author: Sean Finney <seanius@debian.org>
Date:   Sun Apr 5 19:16:38 2009 +0200

    add gbp.conf for use with git-buildpackage

diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 0000000..6b6b4c7
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,8 @@
+[DEFAULT]
+debian-branch = debian-unstable
+debian-tag = libcompizconfig-%(version)s
+upstream-branch = upstream-unstable
+upstream-tag = %(version)s
+
+[git-dch]
+meta = 1

commit cbbdcceea27f671f96ff86902478487f76cd3f12
Author: Guillaume Seguin <guillaume@segu.in>
Date:   Mon Mar 9 15:43:46 2009 +0100

    * Bump version to 0.8.2

diff --git a/VERSION b/VERSION
index 1357b31..2dcc312 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-VERSION=0.7.9
+VERSION=0.8.2

commit bb0ec725b1f5ed60d719ecb37843150b6713cc1f
Author: Guillaume Seguin <guillaume@segu.in>
Date:   Thu Mar 5 16:28:32 2009 +0100

    Fix compizconfig.proto dist inclusion

diff --git a/src/Makefile.am b/src/Makefile.am
index 6dfae9c..788bda2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -4,8 +4,6 @@ PROTOBUF_LIB = -lprotobuf
 PROTOBUF_DEFINES = \
 	-DUSE_PROTOBUF=1
 
-EXTRA_DIST = compizconfig.proto
-
 compizconfig.pb.cc: compizconfig.proto
 	protoc --cpp_out=. compizconfig.proto
 
@@ -21,6 +19,7 @@ clean-local:
 
 endif
 
+EXTRA_DIST = compizconfig.proto
 
 INCLUDES =			               \
 	@COMPIZ_CFLAGS@                        \

commit 00646fe0c31ccaa81dae69ed74393cf151a3e963
Author: Danny Baumann <dannybaumann@web.de>
Date:   Tue Dec 2 11:13:47 2008 +0100

    Revert accidential change.

diff --git a/configure.ac b/configure.ac
index 38e8503..0ce5d31 100644
--- a/configure.ac
+++ b/configure.ac
@@ -96,7 +96,7 @@ AC_SUBST(LIBXML2_REQUIRES)
 
 AC_ARG_ENABLE(protobuf,
   [  --disable-protobuf      Disable Protocol Buffers],
-  [use_protobuf=no], [use_protobuf=yes])
+  [use_protobuf=$enableval], [use_protobuf=yes])
 
 if test "x$use_protobuf" = "xyes"; then
   protobuf_error_msg="\nWARNING: You need to install Protocol Buffers to get faster program startup.\n        Sources are available at http://code.google.com/p/protobuf/downloads/list\n         Package names for Ubuntu/Debian: libprotobuf0, libprotobuf-dev, protobuf-compiler\n         Package names for other distributions: protobuf, protobuf-devel\n        Disabling protobuf.\n"

commit 79c0f14071db762bba256da6c0588115725219a3
Author: Danny Baumann <dannybaumann@web.de>
Date:   Tue Dec 2 11:03:43 2008 +0100

    Mem leak fixes and minor cleanup.

diff --git a/configure.ac b/configure.ac
index 0ce5d31..38e8503 100644
--- a/configure.ac
+++ b/configure.ac
@@ -96,7 +96,7 @@ AC_SUBST(LIBXML2_REQUIRES)
 
 AC_ARG_ENABLE(protobuf,
   [  --disable-protobuf      Disable Protocol Buffers],
-  [use_protobuf=$enableval], [use_protobuf=yes])
+  [use_protobuf=no], [use_protobuf=yes])
 
 if test "x$use_protobuf" = "xyes"; then
   protobuf_error_msg="\nWARNING: You need to install Protocol Buffers to get faster program startup.\n        Sources are available at http://code.google.com/p/protobuf/downloads/list\n         Package names for Ubuntu/Debian: libprotobuf0, libprotobuf-dev, protobuf-compiler\n         Package names for other distributions: protobuf, protobuf-devel\n        Disabling protobuf.\n"
diff --git a/src/compiz.cpp b/src/compiz.cpp
index ddcb82c..5b36a4d 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -2755,6 +2755,9 @@ updatePBFilePath (CCSContext * context, char *name, char *pbFilePath)
     if (plugin)
     {
 	PLUGIN_PRIV (plugin);
+
+	if (pPrivate->pbFilePath)
+	    free (pPrivate->pbFilePath);
 	pPrivate->pbFilePath = strdup (pbFilePath);
     }
 }
@@ -2791,15 +2794,14 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
 	Bool error = TRUE;
 	int lenXMLName = strlen (xmlName);
 	struct stat pbStat;
-	name = (char *) malloc (lenXMLName - 4 + 1);
+
+	name = strndup (xmlName, strlen (xmlName) - 4);
 	if (!name)
 	{
 	    fprintf (stderr, "[ERROR]: Can't allocate memory\n");
 	    free (xmlFilePath);
 	    return;
 	}
-	strncpy (name, xmlName, lenXMLName - 4);
-	name[lenXMLName - 4] = '\0';
 
 	if (createProtoBufCacheDir () &&
 	    metadataCacheDir.length () > 0)
@@ -2861,12 +2863,13 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
     if (usingProtobuf && xmlLoaded)
     {
 	writePBFile (pbFilePath, NULL, &persistentPluginBriefPB);
-
 	updatePBFilePath (context, name, pbFilePath);
+    }
 
+    if (pbFilePath)
 	free (pbFilePath);
+    if (name)
 	free (name);
-    }
 #endif
 }
 

commit 6202217f3efa974a55aed34bf467f0462f2cf8a0
Author: Danny Baumann <dannybaumann@web.de>
Date:   Mon Nov 24 09:40:24 2008 +0100

    Sanity check input values of ccsFindSetting.

diff --git a/src/main.c b/src/main.c
index 1747b2a..d2680eb 100644
--- a/src/main.c
+++ b/src/main.c
@@ -242,8 +242,14 @@ CCSSetting *
 ccsFindSetting (CCSPlugin * plugin, const char *name,
 		Bool isScreen, unsigned int screenNum)
 {
+    if (!plugin)
+	return NULL;
+
     PLUGIN_PRIV (plugin);
 
+    if (!name)
+	name = "";
+
     if (!pPrivate->loaded)
 	ccsLoadPluginSettings (plugin);
 

commit 890a30e25eb3a1499b08d69ea7b97bdc6dbc76db
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Fri Nov 7 00:39:05 2008 -0600

    Don't write .pb for ini, gconf, ccp, kconfig.
    
    Fixes these errors:
    libprotobuf ERROR google/protobuf/message.cc:110] Can't parse message of
      type "metadata.PluginBrief" because it is missing required fields: info
    libprotobuf FATAL google/protobuf/message.cc:198] CHECK failed:
      IsInitialized(): Can't serialize message of type "metadata.PluginBrief"
      because it is missing required fields: info.name

diff --git a/src/compiz.cpp b/src/compiz.cpp
index 1efabb4..ddcb82c 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -2480,7 +2480,8 @@ fillBasicInfoIntoPB (CCSPlugin *plugin, PluginInfoMetadata *pluginInfoPB)
 }
 #endif
 
-static void
+/* Returns TRUE on success. */
+static Bool
 addPluginFromXMLNode (CCSContext * context,
 		      xmlNode * node,
 		      char * file,
@@ -2491,7 +2492,7 @@ addPluginFromXMLNode (CCSContext * context,
     CCSPluginPrivate *pPrivate;
 
     if (!node)
-	return;
+	return FALSE;
 
     name = getStringFromXPath (node->doc, node, "@name");
 
@@ -2499,31 +2500,31 @@ addPluginFromXMLNode (CCSContext * context,
     {
 	if (name)
 	    free (name);
-	return;
+	return FALSE;
     }
 
     if (!strcmp (name, "ini") || !strcmp (name, "gconf") ||
 	!strcmp (name, "ccp") || !strcmp (name, "kconfig"))
     {
 	free (name);
-	return;
+	return FALSE;
     }
 
     if (ccsFindPlugin (context, name))
     {
 	free (name);
-	return;
+	return FALSE;
     }
 
     plugin = (CCSPlugin *) calloc (1, sizeof (CCSPlugin));
     if (!plugin)
-	return;
+	return FALSE;
 
     pPrivate = (CCSPluginPrivate *) calloc (1, sizeof (CCSPluginPrivate));
     if (!pPrivate)
     {
 	free (plugin);
-	return;
+	return FALSE;
     }
 
     plugin->ccsPrivate = (void *) pPrivate;
@@ -2558,9 +2559,12 @@ addPluginFromXMLNode (CCSContext * context,
 
     context->plugins = ccsPluginListAppend (context->plugins, plugin);
     free (name);
+
+    return TRUE;
 }
 
-static void
+/* Returns TRUE on success. */
+static Bool
 addCoreSettingsFromXMLNode (CCSContext * context,
 			    xmlNode * node,
 			    char *file,
@@ -2570,20 +2574,20 @@ addCoreSettingsFromXMLNode (CCSContext * context,
     CCSPluginPrivate *pPrivate;
 
     if (!node)
-	return;
+	return FALSE;
 
     if (ccsFindPlugin (context, "core"))
-	return;
+	return FALSE;
 
     plugin = (CCSPlugin *) calloc (1, sizeof (CCSPlugin));
     if (!plugin)
-	return;
+	return FALSE;
 
     pPrivate = (CCSPluginPrivate *) calloc (1, sizeof (CCSPluginPrivate));
     if (!pPrivate)
     {
 	free (plugin);
-	return;
+	return FALSE;
     }
 
     plugin->ccsPrivate = (void *) pPrivate;
@@ -2616,6 +2620,8 @@ addCoreSettingsFromXMLNode (CCSContext * context,
 
     initRulesFromRootNode (plugin, node, pluginInfoPBv);
     context->plugins = ccsPluginListAppend (context->plugins, plugin);
+
+    return TRUE;
 }
 
 /* End of XML parsing */
@@ -2711,7 +2717,8 @@ writePBFile (char *pbFilePath,
 }
 #endif
 
-static void
+/* Returns TRUE on success. */
+static Bool
 loadPluginFromXML (CCSContext * context,
 		   xmlDoc * doc,
 		   char *filename,
@@ -2719,20 +2726,25 @@ loadPluginFromXML (CCSContext * context,
 {
     xmlNode **nodes;
     int num;
+    Bool success = FALSE;
 
     nodes = getNodesFromXPath (doc, NULL, "/compiz/core", &num);
     if (num)
     {
-	addCoreSettingsFromXMLNode (context, nodes[0], filename, pluginInfoPBv);
+	success = addCoreSettingsFromXMLNode (context, nodes[0], filename,
+					      pluginInfoPBv);
 	free (nodes);
+	return success;
     }
 
     nodes = getNodesFromXPath (doc, NULL, "/compiz/plugin", &num);
     if (num)
     {
-	addPluginFromXMLNode (context, nodes[0], filename, pluginInfoPBv);
+	success = addPluginFromXMLNode (context, nodes[0], filename,
+					pluginInfoPBv);
 	free (nodes);
     }
+    return success;
 }
 
 #ifdef USE_PROTOBUF
@@ -2830,6 +2842,7 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
 
     // Load from .xml
     FILE *fp = fopen (xmlFilePath, "r");
+    Bool xmlLoaded = FALSE;
 
     if (fp)
     {
@@ -2837,14 +2850,15 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
 	xmlDoc *doc = xmlReadFile (xmlFilePath, NULL, 0);
 	if (doc)
 	{
-	    loadPluginFromXML (context, doc, xmlFilePath, pluginInfoPBv);
+	    xmlLoaded = loadPluginFromXML (context, doc, xmlFilePath,
+					   pluginInfoPBv);
 	    xmlFreeDoc (doc);
 	}
     }
     free (xmlFilePath);
 
 #ifdef USE_PROTOBUF
-    if (usingProtobuf)
+    if (usingProtobuf && xmlLoaded)
     {
 	writePBFile (pbFilePath, NULL, &persistentPluginBriefPB);
 

commit f6f66a73f13b42390ecd47ab769c37debf116943
Author: Danny Baumann <dannybaumann@web.de>
Date:   Thu Nov 6 13:07:47 2008 +0100

    Fix memory leak.

diff --git a/src/compiz.cpp b/src/compiz.cpp
index f507a0f..1efabb4 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -2502,6 +2502,13 @@ addPluginFromXMLNode (CCSContext * context,
 	return;
     }
 
+    if (!strcmp (name, "ini") || !strcmp (name, "gconf") ||
+	!strcmp (name, "ccp") || !strcmp (name, "kconfig"))
+    {
+	free (name);
+	return;
+    }
+
     if (ccsFindPlugin (context, name))
     {
 	free (name);
@@ -2547,13 +2554,6 @@ addPluginFromXMLNode (CCSContext * context,
     fillBasicInfoIntoPB (plugin, (PluginInfoMetadata *) pluginInfoPBv);
 #endif
 
-    if (!strcmp (name, "ini") || !strcmp (name, "gconf") ||
-	!strcmp (name, "ccp") || !strcmp (name, "kconfig"))
-    {
-	free (name);
-	return;
-    }
-
     initRulesFromRootNode (plugin, node, pluginInfoPBv);
 
     context->plugins = ccsPluginListAppend (context->plugins, plugin);

commit 246006056a24c087112a22b3c72611f8c0683270
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Wed Oct 22 17:33:33 2008 -0500

    Create protobuf cache dir recursively.
    
    Enables using ".../x/y" as cache dir when ".../x" doesn't exist.

diff --git a/include/ccs.h b/include/ccs.h
index e9cd44e..9d886d5 100644
--- a/include/ccs.h
+++ b/include/ccs.h
@@ -715,6 +715,8 @@ void ccsIniClose (IniDictionary *dictionary);
 void ccsIniSave (IniDictionary *dictionary,
 		 const char    *fileName);
 
+Bool ccsCreateDirFor (const char *fileName);
+
 Bool ccsIniGetString (IniDictionary *dictionary,
 		      const char    *section,
 		      const char    *entry,
diff --git a/src/compiz.cpp b/src/compiz.cpp
index 0c46ea4..f507a0f 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -1933,14 +1933,13 @@ createProtoBufCacheDir ()
     if (cacheBaseDir)
     {
 	metadataCacheDir = cacheBaseDir;
-	metadataCacheDir += "/compizconfig";
-
-	// Create base dir
-	mkdir (cacheBaseDir, 0700);
+	if (metadataCacheDir[metadataCacheDir.length () - 1] != '/')
+	    metadataCacheDir += "/";
+	metadataCacheDir += "compizconfig";
+	std::string metadataCacheFileDummy = metadataCacheDir + "/dummy";
 
 	// Create cache dir
-	Bool success = !mkdir (metadataCacheDir.c_str (), 0700);
-	success |= (errno == EEXIST);
+	Bool success = ccsCreateDirFor (metadataCacheFileDummy.c_str ());
 	if (!success)
 	    fprintf (stderr, "[ERROR]: Error creating directory \"%s\"\n",
 		     metadataCacheDir.c_str ());
diff --git a/src/ini.c b/src/ini.c
index 3c3c419..5f8e2bc 100644
--- a/src/ini.c
+++ b/src/ini.c
@@ -35,7 +35,7 @@
  * @return: True if the parent directory of the file now exists
 **/
 
-static Bool
+Bool
 ccsCreateDirFor (const char *fileName)
 {
     char *path, *delim;

commit d6ecf8ae663dbac371729da70f37f8a3c8821e51
Author: Lubos Lunak <llunak@suse.cz>
Date:   Wed Oct 22 12:13:16 2008 +0200

    Fix copy'n'paste mistakes in allocation size.

diff --git a/src/lists.c b/src/lists.c
index 103f13a..5f58a2a 100644
--- a/src/lists.c
+++ b/src/lists.c
@@ -257,7 +257,7 @@ char ** ccsGetStringArrayFromValueList (CCSSettingValueList list, int *num)
 
     if (length)
     {
-	rv = calloc (length, sizeof (int));
+	rv = calloc (length, sizeof (char *));
 	if (!rv)
 	    return NULL;
     }
@@ -278,7 +278,7 @@ char ** ccsGetMatchArrayFromValueList (CCSSettingValueList list, int *num)
 
     if (length)
     {
-	rv = calloc (length, sizeof (int));
+	rv = calloc (length, sizeof (char *));
 	if (!rv)
 	    return NULL;
     }

commit fae747aa92479c3ff9ab62ad5aa333c175fcab7a
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sun Oct 19 17:25:15 2008 -0500

    Disable protobuf if cache dir cannot be created.

diff --git a/src/compiz.cpp b/src/compiz.cpp
index 9e610e0..0c46ea4 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -1952,6 +1952,7 @@ createProtoBufCacheDir ()
 	metadataCacheDir = ""; // invalidate metadataCacheDir
     }
 
+    usingProtobuf = FALSE; // Disable protobuf if cache dir cannot be created
     return FALSE;
 }
 

commit 5519ac6e74c056750eca8fb543822326fd0f43b8
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sun Oct 19 17:04:42 2008 -0500

    Use $XDG_CACHE_HOME/compizconfig/ as protobuf cache directory.
    
    As protobuf cache dir, we now use $XDG_CACHE_HOME/compizconfig/
    if $XDG_CACHE_HOME is defined and ~/.cache/compizconfig/ otherwise,
    to conform to the standards described at
    http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html

diff --git a/src/compiz.cpp b/src/compiz.cpp
index 18db39e..9e610e0 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -55,8 +55,6 @@ Bool usingProtobuf = TRUE;
 
 #define PB_ABI_VERSION 20081004
 
-#define METADATA_CACHE_DIR ".config/compiz/compizconfig/cache"
-
 typedef metadata::PluginInfo PluginInfoMetadata;
 typedef metadata::PluginBrief PluginBriefMetadata;
 typedef metadata::Plugin PluginMetadata;
@@ -74,6 +72,8 @@ PluginMetadata persistentPluginPB; // Made global so that it gets reused,
 					 // for better performance (to avoid
 					 // mem alloc/free for each plugin)
 
+std::string metadataCacheDir = "";
+
 static char *
 getLocale ()
 {
@@ -1908,25 +1908,50 @@ checkAddGroupSubgroup (OptionMetadata *optPB,
 static Bool
 createProtoBufCacheDir ()
 {
-    char *path = NULL;
-    char *home = getenv ("HOME");
+    if (metadataCacheDir.length () > 0)
+    {
+	// Cache dir must have been created already, since otherwise it would
+	// be "". So we can return here.
+	return TRUE;
+    }
+    char *cacheBaseDir = NULL;
+    char *cacheHome = getenv ("XDG_CACHE_HOME");
 
-    if (home && strlen (home))
+    if (cacheHome && strlen (cacheHome))
     {
-	asprintf (&path, "%s/%s", home, METADATA_CACHE_DIR);
-	if (path)
+	asprintf (&cacheBaseDir, "%s", cacheHome);
+    }
+    else
+    {
+	char *home = getenv ("HOME");
+	if (home && strlen (home))
 	{
-	    Bool success = !mkdir (path, 0700);
-	    success |= (errno == EEXIST);
-	    if (!success)
-		fprintf (stderr, "[ERROR]: Error creating directory \"%s\"\n",
-			 path);
-	    free (path);
-
-	    if (success)
-		return TRUE;
+	    asprintf (&cacheBaseDir, "%s/.cache", home);
 	}
     }
+
+    if (cacheBaseDir)
+    {
+	metadataCacheDir = cacheBaseDir;
+	metadataCacheDir += "/compizconfig";
+
+	// Create base dir
+	mkdir (cacheBaseDir, 0700);
+
+	// Create cache dir
+	Bool success = !mkdir (metadataCacheDir.c_str (), 0700);
+	success |= (errno == EEXIST);
+	if (!success)
+	    fprintf (stderr, "[ERROR]: Error creating directory \"%s\"\n",
+		     metadataCacheDir.c_str ());
+	free (cacheBaseDir);
+
+	if (success)
+	    return TRUE; // metadataCacheDir will be used later in this case
+
+	metadataCacheDir = ""; // invalidate metadataCacheDir
+    }
+
     return FALSE;
 }
 
@@ -2764,11 +2789,10 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
 	strncpy (name, xmlName, lenXMLName - 4);
 	name[lenXMLName - 4] = '\0';
 
-	char *home = getenv ("HOME");
-	if (home && strlen (home))
+	if (createProtoBufCacheDir () &&
+	    metadataCacheDir.length () > 0)
 	{
-	    asprintf (&pbFilePath, "%s/%s/%s.pb",
-		      home, METADATA_CACHE_DIR, name);
+	    asprintf (&pbFilePath, "%s/%s.pb", metadataCacheDir.c_str (), name);
 	    if (!pbFilePath)
 	    {
 		fprintf (stderr, "[ERROR]: Can't allocate memory\n");

commit afe4ed1ece82778cfcdade60057d58aeeb9818d8
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sun Oct 19 15:55:00 2008 -0500

    Fix circular dependency error (bug 1061).

diff --git a/configure.ac b/configure.ac
index b1926c6..0ce5d31 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6,6 +6,8 @@ AC_INIT([libcompizconfig],esyscmd(. ./VERSION;echo -n $VERSION), [dev@opencompos
 
 AM_INIT_AUTOMAKE([1.9 dist-bzip2])
 
+AC_PROG_CXX
+
 AC_CONFIG_HEADER([config.h])
 AM_MAINTAINER_MODE
 
@@ -97,7 +99,6 @@ AC_ARG_ENABLE(protobuf,
   [use_protobuf=$enableval], [use_protobuf=yes])
 
 if test "x$use_protobuf" = "xyes"; then
-  AC_LANG([C++])
   protobuf_error_msg="\nWARNING: You need to install Protocol Buffers to get faster program startup.\n        Sources are available at http://code.google.com/p/protobuf/downloads/list\n         Package names for Ubuntu/Debian: libprotobuf0, libprotobuf-dev, protobuf-compiler\n         Package names for other distributions: protobuf, protobuf-devel\n        Disabling protobuf.\n"
   AC_CHECK_PROG(have_protoc, protoc, yes, no)
   if test "x$have_protoc" = "xno"; then
@@ -106,11 +107,12 @@ if test "x$use_protobuf" = "xyes"; then
     AC_CHECK_LIB(protobuf, _ZN6google8protobuf7MessageD2Ev, [], [
       echo -e $protobuf_error_msg; use_protobuf=no ])
     if test "x$use_protobuf" = "xyes"; then
+      AC_LANG([C++])
       AC_CHECK_HEADER([google/protobuf/message.h],,[
         echo -e $protobuf_error_msg; use_protobuf=no ])
+      AC_LANG([C])
     fi
   fi
-  AC_LANG([C])
 fi
 AM_CONDITIONAL([USE_PROTOBUF], [test "x$use_protobuf" = "xyes"])
 

commit 21bda9debec54b37342eb5ee037fc81aeb32cbc8
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sun Oct 19 10:04:02 2008 -0500

    Add source URL to protobuf warning message.

diff --git a/configure.ac b/configure.ac
index db96a78..b1926c6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -98,7 +98,7 @@ AC_ARG_ENABLE(protobuf,
 
 if test "x$use_protobuf" = "xyes"; then
   AC_LANG([C++])
-  protobuf_error_msg="\nWARNING: You need to install Protocol Buffers to get faster program startup.\n        Package names for Ubuntu/Debian: libprotobuf0, libprotobuf-dev, protobuf-compiler\n         Package names for other distributions: protobuf, protobuf-devel\n        Disabling protobuf.\n"
+  protobuf_error_msg="\nWARNING: You need to install Protocol Buffers to get faster program startup.\n        Sources are available at http://code.google.com/p/protobuf/downloads/list\n         Package names for Ubuntu/Debian: libprotobuf0, libprotobuf-dev, protobuf-compiler\n         Package names for other distributions: protobuf, protobuf-devel\n        Disabling protobuf.\n"
   AC_CHECK_PROG(have_protoc, protoc, yes, no)
   if test "x$have_protoc" = "xno"; then
     echo -e $protobuf_error_msg; use_protobuf=no

commit 514ba489124b029960f4d8e94cac6bd0c3205de6
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sun Oct 19 09:23:25 2008 -0500

    Add compizconfig.proto to dist. Simplify Makefile.am.

diff --git a/src/Makefile.am b/src/Makefile.am
index 1411996..5782087 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -4,6 +4,8 @@ PROTOBUF_LIB = -lprotobuf
 PROTOBUF_DEFINES = \
 	-DUSE_PROTOBUF=1
 
+EXTRA_DIST = compizconfig.proto
+
 compizconfig.pb.cc: compizconfig.proto
 	protoc --cpp_out=. compizconfig.proto
 
@@ -17,11 +19,6 @@ nodist_libcompizconfig_la_SOURCES = \
 clean-local:
 	rm -f compizconfig.pb.cc compizconfig.pb.h
 
-else
-
-PROTOBUF_LIB =
-nodist_libcompizconfig_la_SOURCES =
-
 endif
 
 

commit 741f99ade7e9b9d19e367253273c11519ac348f0
Author: Danny Baumann <dannybaumann@web.de>
Date:   Sun Oct 19 14:03:15 2008 +0200

    Link against libX11 because we need it for XStringToKeysym.

diff --git a/configure.ac b/configure.ac
index 1668771..1f8cbb4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,6 +73,7 @@ fi
 
 AC_C_BIGENDIAN
 
+PKG_CHECK_MODULES(LIBX11, "x11")
 PKG_CHECK_MODULES(COMPIZ, "compiz")
 
 if test -z "$PKG_CONFIG"; then
diff --git a/src/Makefile.am b/src/Makefile.am
index ac7424f..5dff962 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,11 +1,12 @@
-INCLUDES =			     \
-	@COMPIZ_CFLAGS@ \
-	@LIBXML2_CFLAGS@ \
-	-I$(top_srcdir)/include	     \
-	-I$(top_srcdir)/src \
-	-DPLUGINDIR=\"$(PLUGINDIR)\" \
-	-DMETADATADIR=\"$(METADATADIR)\" \
-	-DLIBDIR=\"$(libdir)\" \
+INCLUDES =			               \
+	@COMPIZ_CFLAGS@                        \
+	@LIBX11_CFLAGS@                        \
+	@LIBXML2_CFLAGS@                       \
+	-I$(top_srcdir)/include	               \
+	-I$(top_srcdir)/src                    \
+	-DPLUGINDIR=\"$(PLUGINDIR)\"           \
+	-DMETADATADIR=\"$(METADATADIR)\"       \
+	-DLIBDIR=\"$(libdir)\"                 \
 	-DGLOBALMETADATA=\"$(globalmetadata)\" \
 	-DSYSCONFDIR=\"$(sysconfdir)\"
 
@@ -22,7 +23,7 @@ libcompizconfig_la_SOURCES = \
 	ccs-private.h	\
 	iniparser.h
 
-libcompizconfig_la_LIBADD = @LIBXML2_LIBS@
+libcompizconfig_la_LIBADD = @LIBXML2_LIBS@ @LIBX11_LIBS@
 
 lib_LTLIBRARIES=libcompizconfig.la
 

commit 4431eeec30226cb81ffa2df868d9bbe9b2f76145
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sat Oct 18 15:44:50 2008 -0500

    Clean up whitespace.

diff --git a/src/compiz.cpp b/src/compiz.cpp
index d6d38d9..18db39e 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -999,13 +999,13 @@ getOptionType (const char *name)
 	{ "bool", TypeBool },
 	{ "int", TypeInt },
 	{ "float", TypeFloat },
-      	{ "string", TypeString },
+	{ "string", TypeString },
 	{ "color", TypeColor },
 	{ "action", TypeAction },
 	{ "key", TypeKey },
 	{ "button", TypeButton },
- 	{ "edge", TypeEdge },
-  	{ "bell", TypeBell },
+	{ "edge", TypeEdge },
+	{ "bell", TypeBell },
 	{ "match", TypeMatch },
 	{ "list", TypeList }
     };
@@ -1448,7 +1448,7 @@ initEdgeValue (CCSSettingValue * v,
 	"Right",
 	"Top",
 	"Bottom",
-    	"TopLeft",
+	"TopLeft",
 	"TopRight",
 	"BottomLeft",
 	"BottomRight"
@@ -1622,7 +1622,7 @@ initIntInfo (CCSSettingInfo * i, xmlNode * node, void * optionPBv)
 		    if (val >= i->forInt.min && val <= i->forInt.max)
 		    {
 			name = stringFromNodeDefTrans (nodes[j],
-						       "name/child::text()", 
+						       "name/child::text()",
 						       NULL);
 			if (name)
 			{
@@ -1910,7 +1910,7 @@ createProtoBufCacheDir ()
 {
     char *path = NULL;
     char *home = getenv ("HOME");
-    
+
     if (home && strlen (home))
     {
 	asprintf (&path, "%s/%s", home, METADATA_CACHE_DIR);
@@ -2588,7 +2588,7 @@ addCoreSettingsFromXMLNode (CCSContext * context,
 #ifdef USE_PROTOBUF
     fillBasicInfoIntoPB (plugin, (PluginInfoMetadata *) pluginInfoPBv);
 #endif
-    
+
     initRulesFromRootNode (plugin, node, pluginInfoPBv);
     context->plugins = ccsPluginListAppend (context->plugins, plugin);
 }
@@ -2743,7 +2743,7 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
     if (usingProtobuf)
     {
 	struct stat xmlStat;
-    
+
 	if (stat (xmlFilePath, &xmlStat))
 	{
 	    free (xmlFilePath);

commit 6706b47468cb9adb8d39a891a38bd30984aab4a5
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sat Oct 18 15:26:33 2008 -0500

    Disable protobuf automatically if not installed.

diff --git a/configure.ac b/configure.ac
index c798edb..9f9edea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -96,9 +96,20 @@ AC_ARG_ENABLE(protobuf,
   [use_protobuf=$enableval], [use_protobuf=yes])
 
 if test "x$use_protobuf" = "xyes"; then
-  AC_CHECK_PROG(have_protoc, protoc, yes)
-
-  AC_CHECK_LIB(protobuf, _ZN6google8protobuf7MessageD2Ev)
+  AC_LANG([C++])
+  protobuf_error_msg="\nWARNING: You need to install Protocol Buffers to get faster program startup.\n        Package names for Ubuntu/Debian: libprotobuf0, libprotobuf-dev, protobuf-compiler\n         Package names for other distributions: protobuf, protobuf-devel\n        Disabling protobuf.\n"
+  AC_CHECK_PROG(have_protoc, protoc, yes, no)
+  if test "x$have_protoc" = "xno"; then
+    echo -e $protobuf_error_msg; use_protobuf=no
+  else
+    AC_CHECK_LIB(protobuf, _ZN6google8protobuf7MessageD2Ev, [], [
+      echo -e $protobuf_error_msg; use_protobuf=no ])
+    if test "x$use_protobuf" = "xyes"; then
+      AC_CHECK_HEADER([google/protobuf/message.h],,[
+        echo -e $protobuf_error_msg; use_protobuf=no ])
+    fi
+  fi
+  AC_LANG([C])
 fi
 AM_CONDITIONAL([USE_PROTOBUF], [test "x$use_protobuf" = "xyes"])
 

commit 37dab05e44d3c8d1f75a1fa15f69a8ee7b18aed7
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sat Oct 4 17:58:17 2008 -0500

    Speed up metadata parsing via protocol buffers.
    
    Reduces startup times for compiz, ccsm, and simple-ccsm.

diff --git a/configure.ac b/configure.ac
index 19f2e38..c798edb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -91,6 +91,17 @@ AC_SUBST(plugindir)


Reply to: