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

libcompizconfig: Changes to 'upstream-unstable'



 VERSION                |    2 -
 backend/ini.c          |   11 +++++
 configure.ac           |    2 -
 src/bindings.c         |   14 +++++--
 src/compiz.cpp         |   97 +++++++++++++++++++++++++------------------------
 src/compizconfig.proto |   17 ++++----
 src/main.c             |   19 ++++++++-
 7 files changed, 98 insertions(+), 64 deletions(-)

New commits:
commit a728704db3c3b89808aaf79d1d3ff0d62135da28
Author: Guillaume Seguin <guillaume@segu.in>
Date:   Wed Oct 14 04:09:05 2009 +0200

    * Bump version to 0.8.4

diff --git a/VERSION b/VERSION
index 9b265c0..e4184f4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-VERSION=0.8.3
+VERSION=0.8.4

commit 0001e60f79edaeac2ff8ec80bd28aebebfac77ff
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Thu Sep 24 13:01:56 2009 -0500

    Fix compiler warnings.

diff --git a/src/compiz.cpp b/src/compiz.cpp
index 2755d47..179a43a 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -281,8 +281,6 @@ initEdgeValuePB (CCSSettingValue * v,
 		 CCSSettingInfo * i,
 		 const GenericValueMetadata & value)
 {
-    int k, num;
-
     v->value.asEdge = 0;
 
     if (value.has_edge_value ())
@@ -516,7 +514,6 @@ addOptionForPluginPB (CCSPlugin * plugin,
 		      const StringList & subgroups,
 		      const OptionMetadata & option)
 {
-    int num = 0;
     CCSSetting *setting;
 
     if (ccsFindSetting (plugin, name, isScreen, screen))
@@ -677,7 +674,6 @@ addOptionFromPB (CCSPlugin * plugin,
 {
     const char *name;
     Bool readonly = FALSE;
-    int i;
 
     name = option.name ().c_str ();
 
@@ -688,7 +684,7 @@ addOptionFromPB (CCSPlugin * plugin,
 
     if (isScreen)
     {
-	for (i = 0; i < plugin->context->numScreens; i++)
+	for (unsigned i = 0; i < plugin->context->numScreens; i++)
 	    addOptionForPluginPB (plugin, name, TRUE,
 				  plugin->context->screens[i],
 				  groups, subgroups, option);
@@ -1009,9 +1005,7 @@ getOptionType (const char *name)
 	{ "match", TypeMatch },
 	{ "list", TypeList }
     };
-    int i;
-
-    for (i = 0; i < sizeof (map) / sizeof (map[0]); i++)
+    for (unsigned i = 0; i < sizeof (map) / sizeof (map[0]); i++)
 	if (strcasecmp (name, map[i].name) == 0)
 	    return map[i].type;
 
@@ -1439,7 +1433,7 @@ initEdgeValue (CCSSettingValue * v,
 {
     xmlNode **nodes;
     char *value;
-    int j, k, num;
+    int k, num;
 
     v->value.asEdge = 0;
 
@@ -1461,7 +1455,7 @@ initEdgeValue (CCSSettingValue * v,
 	value = getStringFromXPath (node->doc, nodes[k], "@name");
 	if (value)
 	{
-	    for (j = 0; j < sizeof (edge) / sizeof (edge[0]); j++)
+	    for (unsigned j = 0; j < sizeof (edge) / sizeof (edge[0]); j++)
 	    {
 		if (strcasecmp ((char *) value, edge[j]) == 0)
 		    v->value.asEdge |= (1 << j);
@@ -2170,8 +2164,6 @@ addOptionFromXMLNode (CCSPlugin * plugin,
     char *type;
     char *readonly;
     Bool isReadonly;
-    Bool screen;
-    int i;
 
     if (!node)
 	return;
@@ -2201,7 +2193,7 @@ addOptionFromXMLNode (CCSPlugin * plugin,
 
     if (isScreen)
     {
-	for (i = 0; i < plugin->context->numScreens; i++)
+	for (unsigned i = 0; i < plugin->context->numScreens; i++)
 	    addOptionForPlugin (plugin, name, type, isReadonly, TRUE,
 				plugin->context->screens[i], node,
 				groupListPBv, subgroupListPBv, optionPBv);
@@ -2658,7 +2650,6 @@ checkAndLoadProtoBuf (char *pbPath,
 		      struct stat *xmlStat,
 		      PluginBriefMetadata *pluginBriefPB)
 {
-    Bool needsUpdate = FALSE;
     const PluginInfoMetadata &pluginInfoPB = pluginBriefPB->info ();
 
     if (pbStat->st_mtime < xmlStat->st_mtime ||     // is .pb older than .xml?
@@ -2793,7 +2784,6 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
 
 	// Check if the corresponding .pb exists in cache
 	Bool error = TRUE;
-	int lenXMLName = strlen (xmlName);
 	struct stat pbStat;
 
 	name = strndup (xmlName, strlen (xmlName) - 4);
@@ -2886,7 +2876,6 @@ static void
 loadPluginsFromXMLFiles (CCSContext * context, char *path)
 {
     struct dirent **nameList;
-    char *metadataPath;
     int nFile, i;
 
     if (!path)

commit b4aa1026111293bc1848a20673441142bb3d9ee1
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Thu Sep 24 12:59:56 2009 -0500

    Fix checking of libprotobuf version >= 2.1.

diff --git a/configure.ac b/configure.ac
index 0ce5d31..4dde084 100644
--- a/configure.ac
+++ b/configure.ac
@@ -105,7 +105,7 @@ if test "x$use_protobuf" = "xyes"; then
     echo -e $protobuf_error_msg; use_protobuf=no
   else
     AC_CHECK_LIB(protobuf, _ZN6google8protobuf7MessageD2Ev, [], [
-      echo -e $protobuf_error_msg; use_protobuf=no ])
+      echo -e $protobuf_error_msg; use_protobuf=no ], -lpthread)
     if test "x$use_protobuf" = "xyes"; then
       AC_LANG([C++])
       AC_CHECK_HEADER([google/protobuf/message.h],,[

commit a13ca4ed66b18b72a611231cce163e9c499ee20c
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sun Sep 20 20:53:39 2009 -0500

    Fix crash when LANG has no value.

diff --git a/src/compiz.cpp b/src/compiz.cpp
index 0faa945..2755d47 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -85,7 +85,7 @@ getLocale ()
     if (!lang || !strlen (lang))
 	lang = getenv ("LC_MESSAGES");
 
-    return lang;
+    return lang ? lang : (char *)"";
 }
 
 std::string curLocale = std::string (getLocale ());

commit b9229e357af89a20c090ac8a0b3c64a4d477d83e
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Mon Aug 31 23:17:14 2009 -0500

    Fix encoding of corner followed by adjacent edge case.

diff --git a/src/bindings.c b/src/bindings.c
index 3659b8b..8482668 100644
--- a/src/bindings.c
+++ b/src/bindings.c
@@ -248,18 +248,24 @@ unsigned int
 ccsStringToEdges (const char *binding)
 {
     unsigned int edgeMask = 0;
-    char         *needle;
+    const char   *needle;
     int          i;
 
     for (i = 0; i < N_EDGES; i++)
     {
-        needle = strstr (binding, edgeList[i].name);
-        if (needle)
+        int edgeLen = strlen (edgeList[i].name);
+
+        /* Look for all occurrences of edgeList[i].name in binding */
+        needle = binding;
+        while ((needle = strstr (needle, edgeList[i].name)) != NULL)
         {
             if (needle != binding && isalnum (*(needle - 1)))
+            {
+                needle += edgeLen;
                 continue;
+            }
 
-            needle += strlen (edgeList[i].name);
+            needle += edgeLen;
 
             if (*needle && isalnum (*needle))
                 continue;

commit ab2c199a5bbdc38b8026febc76682fa21dac5197
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Mon Aug 24 23:46:53 2009 -0500

    Avoid allocating 0-size memory. Fix memory leak.

diff --git a/src/main.c b/src/main.c
index 4d0e32c..2edc49d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1515,13 +1515,20 @@ ccsGetSortedPluginStringList (CCSContext * context)
 	ap = ccsPluginListRemove (ap, p, FALSE);
 
     int len = ccsPluginListLength (ap);
-    
+    if (len == 0)
+    {
+	ccsStringListFree (rv, TRUE);
+	return NULL;
+    }
     int i, j;
     /* TODO: conflict handling */
 
     PluginSortHelper *plugins = calloc (1, len * sizeof (PluginSortHelper));
     if (!plugins)
+    {
+	ccsStringListFree (rv, TRUE);
 	return NULL;
+    }
 
     for (i = 0, list = ap; i < len; i++, list = list->next)
     {

commit 05c8c6176a8d2ff67310167e0c25cd498244c48f
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sun Aug 23 10:05:43 2009 -0500

    Fix memory leaks.

diff --git a/backend/ini.c b/backend/ini.c
index c32ed90..82094e6 100644
--- a/backend/ini.c
+++ b/backend/ini.c
@@ -117,6 +117,8 @@ processFileEvent (unsigned int watchId,
     data->iniFile = ccsIniOpen (fileName);
 
     ccsReadSettings (data->context);
+
+    free (fileName);
 }
 
 static void
@@ -151,12 +153,17 @@ setProfile (IniPrivData *data,
 	    file = fopen (fileName, "w");
 
 	    if (!file)
+	    {
+		free (fileName);
 		return;
-
+	    }
 	    fclose (file);
 	}
 	else
+	{
+	    free (fileName);
 	    return;
+	}
     }
 
     data->iniWatchId = ccsAddFileWatch (fileName, TRUE,

commit 5987214a45b61e47571f58e72331f4873250a8ca
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Wed Aug 19 18:05:01 2009 -0500

    Fix memory leaks.

diff --git a/backend/ini.c b/backend/ini.c
index c540571..c32ed90 100644
--- a/backend/ini.c
+++ b/backend/ini.c
@@ -272,6 +272,7 @@ readSetting (CCSContext *context,
 				 keyName, &value))
 	    {
 		ccsSetString (setting, value);
+		free (value);
 		status = TRUE;
 	    }
 	}
@@ -283,6 +284,7 @@ readSetting (CCSContext *context,
 				 keyName, &value))
 	    {
 		ccsSetMatch (setting, value);
+		free (value);
 		status = TRUE;
 	    }
 	}
diff --git a/src/main.c b/src/main.c
index d2680eb..4d0e32c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2636,7 +2636,10 @@ ccsImportFromFile (CCSContext *context,
 
 		    if (ccsIniGetString (importFile, plugin->name,
 					 keyName, &value))
-			ccsSetString (setting, value);
+		    {
+		    	ccsSetString (setting, value);
+		    	free (value);
+		    }
 		}
 		break;
 	    case TypeKey:
@@ -2689,7 +2692,10 @@ ccsImportFromFile (CCSContext *context,
 		    char *value;
 		    if (ccsIniGetString (importFile, plugin->name,
 					 keyName, &value))
-			ccsSetMatch (setting, value);
+		    {
+		    	ccsSetMatch (setting, value);
+		    	free (value);
+		    }
 		}
 		break;
 	    case TypeList:

commit 9eb45bed918905833fb61a785369f8883ccc4ef6
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Wed Aug 19 18:04:36 2009 -0500

    Compare string find result with npos.

diff --git a/src/compiz.cpp b/src/compiz.cpp
index ac7a9d9..0faa945 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -89,7 +89,7 @@ getLocale ()
 }
 
 std::string curLocale = std::string (getLocale ());
-std::string shortLocale = curLocale.find ('.') < 0 ?
+std::string shortLocale = curLocale.find ('.') == std::string::npos ?
     curLocale : curLocale.substr (0, curLocale.find ('.'));
 
 #endif

commit 5dab250c7da6020ec3efbe85f511d3af4ccf79b7
Author: Erkin Bahceci <erkinbah@gmail.com>
Date:   Sat Mar 14 14:30:43 2009 -0500

    Update .pb when an older .xml is used, too.

diff --git a/src/compiz.cpp b/src/compiz.cpp
index 5b36a4d..ac7a9d9 100644
--- a/src/compiz.cpp
+++ b/src/compiz.cpp
@@ -53,7 +53,7 @@ extern int xmlLoadExtDtdDefaultValue;
 
 Bool usingProtobuf = TRUE;
 
-#define PB_ABI_VERSION 20081004
+#define PB_ABI_VERSION 20090314
 
 typedef metadata::PluginInfo PluginInfoMetadata;
 typedef metadata::PluginBrief PluginBriefMetadata;
@@ -2665,13 +2665,12 @@ checkAndLoadProtoBuf (char *pbPath,
 	!loadPluginMetadataFromProtoBuf (pbPath, pluginBriefPB, NULL) ||
 	(!basicMetadata && pluginBriefPB->info ().basic_metadata ()) ||
 	pluginInfoPB.pb_abi_version () != PB_ABI_VERSION ||
+	pluginInfoPB.time () != (unsigned long)xmlStat->st_mtime ||
+	// xml modification time mismatch?
 	(pluginInfoPB.locale () != "NONE" &&
 	 pluginInfoPB.locale () != shortLocale))
     {
 	// .pb needs update
-
-	remove (pbPath); // Attempt to remove .pb
-
 	return FALSE;
     }
     return TRUE;
@@ -2681,7 +2680,8 @@ checkAndLoadProtoBuf (char *pbPath,
 static void
 writePBFile (char *pbFilePath,
 	     PluginMetadata *pluginPB,
-	     PluginBriefMetadata *pluginBriefPB)
+	     PluginBriefMetadata *pluginBriefPB,
+	     struct stat *xmlStat)
 {
     if (!createProtoBufCacheDir ())
 	return;
@@ -2698,6 +2698,7 @@ writePBFile (char *pbFilePath,
 	pluginInfoPB = pluginBriefPB->mutable_info ();
 	pluginInfoPB->set_pb_abi_version (PB_ABI_VERSION);
 	pluginInfoPB->set_locale (shortLocale);
+	pluginInfoPB->set_time ((unsigned long)xmlStat->st_mtime);
 	pluginInfoPB->set_brief_metadata (TRUE);
     }
 
@@ -2779,11 +2780,11 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
 
 #ifdef USE_PROTOBUF
     char *name = NULL;
+    struct stat xmlStat;
+    Bool removePB = FALSE;
 
     if (usingProtobuf)
     {
-	struct stat xmlStat;
-
 	if (stat (xmlFilePath, &xmlStat))
 	{
 	    free (xmlFilePath);
@@ -2817,26 +2818,32 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
 	    error = stat (pbFilePath, &pbStat);
 	}
 
-	if (!error &&
-	    checkAndLoadProtoBuf (pbFilePath, &pbStat, &xmlStat,
-				  &persistentPluginBriefPB))
+	if (!error)
 	{
-	    // Found and loaded .pb
-	    if (!strcmp (name, "core"))
-		addCoreSettingsFromPB (context, persistentPluginBriefPB.info (),
-				       pbFilePath, xmlFilePath);
+	    if (checkAndLoadProtoBuf (pbFilePath, &pbStat, &xmlStat,
+				      &persistentPluginBriefPB))
+	    {
+		// Found and loaded .pb
+		if (!strcmp (name, "core"))
+		    addCoreSettingsFromPB (context,
+					   persistentPluginBriefPB.info (),
+					   pbFilePath, xmlFilePath);
+		else
+		    addPluginFromPB (context, persistentPluginBriefPB.info (),
+				     pbFilePath, xmlFilePath);
+		
+		updatePBFilePath (context, name, pbFilePath);
+		
+		free (xmlFilePath);
+		free (pbFilePath);
+		free (name);
+		return;
+	    }
 	    else
-		addPluginFromPB (context, persistentPluginBriefPB.info (),
-				 pbFilePath, xmlFilePath);
-
-	    updatePBFilePath (context, name, pbFilePath);
-
-	    free (xmlFilePath);
-	    free (pbFilePath);
-	    free (name);
-	    return;
+	    {
+		removePB = TRUE;
+	    }
 	}
-
 	persistentPluginBriefPB.Clear ();
 	pluginInfoPBv = persistentPluginBriefPB.mutable_info ();
     }
@@ -2862,7 +2869,9 @@ loadPluginFromXMLFile (CCSContext * context, char *xmlName, char *xmlDirPath)
 #ifdef USE_PROTOBUF
     if (usingProtobuf && xmlLoaded)
     {
-	writePBFile (pbFilePath, NULL, &persistentPluginBriefPB);
+	if (removePB)
+	    remove (pbFilePath); // Attempt to remove .pb
+	writePBFile (pbFilePath, NULL, &persistentPluginBriefPB, &xmlStat);
 	updatePBFilePath (context, name, pbFilePath);
     }
 
@@ -3050,13 +3059,18 @@ ccsLoadPlugins (CCSContext * context)
 
 static void
 loadOptionsStringExtensionsFromXML (CCSPlugin * plugin,
-				    void * pluginPBv)
+				    void * pluginPBv,
+				    struct stat *xmlStat)
 {
     PLUGIN_PRIV (plugin);
 
     xmlDoc *doc = NULL;
     xmlNode **nodes;
     int num;
+
+    if (stat (pPrivate->xmlFile, xmlStat))
+	return;
+
     FILE *fp = fopen (pPrivate->xmlFile, "r");
     if (!fp)
 	return;
@@ -3120,14 +3134,16 @@ ccsLoadPluginSettings (CCSPlugin * plugin)
     }
 #endif
 
+    struct stat xmlStat;
+
     // Load from .xml
     if (!ignoreXML && pPrivate->xmlFile)
-	loadOptionsStringExtensionsFromXML (plugin, pluginPBToWrite);
+	loadOptionsStringExtensionsFromXML (plugin, pluginPBToWrite, &xmlStat);
 
 #ifdef USE_PROTOBUF
     if (pluginPBToWrite && pPrivate->pbFilePath && loadedAtLeastBriefPB)
 	writePBFile (pPrivate->pbFilePath, (PluginMetadata *) pluginPBToWrite,
-		     NULL);
+		     NULL, &xmlStat);
 #endif
     D (D_FULL, "done\n");
 
diff --git a/src/compizconfig.proto b/src/compizconfig.proto
index f4eedd1..5834842 100644
--- a/src/compizconfig.proto
+++ b/src/compizconfig.proto
@@ -7,21 +7,22 @@ message PluginInfo
 {
   required sint32 pb_abi_version = 1;
   required string locale = 2;
+  required uint64 time = 3;   // modification time of source .xml file
 
   // true if container is missing options and extensions, and only includes
   // plugin info
-  required bool brief_metadata = 3;
+  required bool brief_metadata = 4;
 
   // true if container is missing extensions, string restrictions, and
   // short/long descriptions for the plugin and its options
-  required bool basic_metadata = 4;
+  required bool basic_metadata = 5;
 
-  required string name = 5;
-  optional string short_desc = 6;
-  optional string long_desc = 7;
-  optional string category = 8;
+  required string name = 6;
+  optional string short_desc = 7;
+  optional string long_desc = 8;
+  optional string category = 9;
 
-  repeated string feature = 9;
+  repeated string feature = 10;
 
   message Dependencies
   {
@@ -35,7 +36,7 @@ message PluginInfo
     repeated string conflict_feature = 6;
   }
 
-  optional Dependencies deps = 10;
+  optional Dependencies deps = 11;
 }
 
 

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

    * Bump version to 0.8.3

diff --git a/VERSION b/VERSION
index 2dcc312..9b265c0 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-VERSION=0.8.2
+VERSION=0.8.3


Reply to: