[maemo-commits] [maemo-commits] r15987 - projects/haf/branches/hildon-thumbnail/daemonize/daemon

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Sep 3 15:56:13 EEST 2008
Author: pvanhoof
Date: 2008-09-03 15:56:11 +0300 (Wed, 03 Sep 2008)
New Revision: 15987

Modified:
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer-marshal.list
   projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c
Log:
Specification changes

Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer-marshal.list
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer-marshal.list	2008-09-03 12:45:11 UTC (rev 15986)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer-marshal.list	2008-09-03 12:56:11 UTC (rev 15987)
@@ -1 +1 @@
-VOID:UINT,STRING
+VOID:UINT,INT,STRING

Modified: projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c	2008-09-03 12:45:11 UTC (rev 15986)
+++ projects/haf/branches/hildon-thumbnail/daemonize/daemon/thumbnailer.c	2008-09-03 12:56:11 UTC (rev 15987)
@@ -112,13 +112,6 @@
 	g_object_unref (file);
 }
 
-static void
-cleanup_hash (gpointer key, gpointer value, gpointer user_data)
-{
-	if (value)
-		g_list_free (value);
-}
-
 typedef struct {
 	Thumbnailer *object;
 	GStrv urls;
@@ -199,10 +192,9 @@
 	ThumbnailerPrivate *priv = THUMBNAILER_GET_PRIVATE (task->object);
 	GHashTable *hash;
 	GStrv urls = task->urls;
-	guint i = 0;
+	guint i;
 	GHashTableIter iter;
 	gpointer key, value;
-	gboolean had_error = FALSE;
 	GList *thumb_items = NULL, *copy;
 	GStrv cached_items;
 
@@ -222,6 +214,8 @@
 
 	hash = g_hash_table_new (g_str_hash, g_str_equal);
 
+	i = 0;
+
 	while (urls[i] != NULL) {
 		GList *urls_for_mime = NULL;
 		gchar *mime_type = NULL;
@@ -245,10 +239,14 @@
 	cached_items = (GStrv) g_malloc0 (sizeof (gchar*) * (g_list_length (thumb_items) + 1));
 	copy = thumb_items;
 
+	i = 0;
+
 	while (copy) {
 		cached_items[i] = g_strdup (copy->data);
 		copy = g_list_next (copy);
+		i++;
 	}
+
 	cached_items[i] = NULL;
 
 	g_signal_emit (task->object, signals[READY_SIGNAL], 0,
@@ -262,12 +260,14 @@
 
 	/* Foreach of the groups that have items that require creating a thumbnail */
 
-	while (g_hash_table_iter_next (&iter, &key, &value) && !had_error) {
+	while (g_hash_table_iter_next (&iter, &key, &value)) {
 
 		GList *urlm = value, *copy = urlm;
-		GStrv urlss = (GStrv) g_malloc0 (sizeof (gchar *) * (g_list_length (urlm) + 1));
+		GStrv urlss;
 		DBusGProxy *proxy;
 
+ 		urlss = (GStrv) g_malloc0 (sizeof (gchar *) * (g_list_length (urlm) + 1));
+
 		i = 0;
 
 		while (copy) {
@@ -275,8 +275,11 @@
 			i++;
 			copy = g_list_next (copy);
 		}
+
 		urlss[i] = NULL;
 
+		/* Free the value in the hash and remove the key */
+
 		g_list_free (urlm);
 		g_hash_table_iter_remove (&iter);
 
@@ -294,14 +297,14 @@
 			g_object_unref (proxy);
 
 			if (error) {
-				had_error = TRUE;
-				g_signal_emit (task->object, signals[ERROR_SIGNAL], 0,
-					       task->num, error->message);
+				g_signal_emit (task->object, signals[ERROR_SIGNAL],
+					       0, task->num, 1, error->message);
 				g_clear_error (&error);
-				g_strfreev (urlss);
-				break;
-			}
+			} else
+				g_signal_emit (task->object, signals[READY_SIGNAL], 
+					       0, urlss);
 
+
 		/* If not if we have a plugin that can handle it, we let the 
 		 * plugin have a go at it */
 
@@ -313,28 +316,27 @@
 				hildon_thumbnail_plugin_do_create (module, urlss, &error);
 
 				if (error) {
-					had_error = TRUE;
-					g_signal_emit (task->object, signals[ERROR_SIGNAL], 0,
-						       task->num, error->message);
+					g_signal_emit (task->object, signals[ERROR_SIGNAL],
+						       0, task->num, 1, error->message);
 					g_clear_error (&error);
-					g_strfreev (urlss);
-					break;
-				}
+				} else
+					g_signal_emit (task->object, signals[READY_SIGNAL], 
+						       0, urlss);
 
 			/* And if even that is not the case, we are very sorry */
 
-			} else
-				g_message ("No handler for %s", (gchar*) key);
+			} else {
+				gchar *str = g_strdup_printf ("No handler for %s", (gchar*) key);
+				g_signal_emit (task->object, signals[ERROR_SIGNAL],
+						       0, task->num, 0, str);
+				g_free (str);
+			}
 		}
 
 		g_strfreev (urlss);
 	}
 
-	if (!had_error)
-		g_signal_emit (task->object, signals[READY_SIGNAL], 0,
-			       task->urls);
-	else
-		g_hash_table_foreach (hash, cleanup_hash, NULL);
+	g_assert (g_hash_table_size (hash) == 0);
 
 	g_hash_table_unref (hash);
 
@@ -500,10 +502,11 @@
 			      G_SIGNAL_RUN_LAST,
 			      G_STRUCT_OFFSET (ThumbnailerClass, error),
 			      NULL, NULL,
-			      thumbnailer_marshal_VOID__UINT_STRING,
+			      thumbnailer_marshal_VOID__UINT_INT_STRING,
 			      G_TYPE_NONE,
 			      2,
 			      G_TYPE_UINT,
+			      G_TYPE_INT,
 			      G_TYPE_STRING);
 
 	g_type_class_add_private (object_class, sizeof (ThumbnailerPrivate));


More information about the maemo-commits mailing list