[tracker/tracker-0.8] tracker-writeback: NB#185070: Loop over all subjects in the Writeback signal's array



commit 69cad33949f97620bd350edc594ec99c974bcdb0
Author: Philip Van Hoof <philip codeminded be>
Date:   Mon Aug 16 17:05:04 2010 +0200

    tracker-writeback: NB#185070: Loop over all subjects in the Writeback signal's array

 .../tracker-writeback-dispatcher.c                 |   41 ++++++-----
 src/tracker-writeback/tracker-writeback-file.c     |   74 ++++++++++----------
 2 files changed, 60 insertions(+), 55 deletions(-)
---
diff --git a/src/tracker-writeback/tracker-writeback-dispatcher.c b/src/tracker-writeback/tracker-writeback-dispatcher.c
index d41d4ed..3321aef 100644
--- a/src/tracker-writeback/tracker-writeback-dispatcher.c
+++ b/src/tracker-writeback/tracker-writeback-dispatcher.c
@@ -124,32 +124,39 @@ handle_writeback_signal (TrackerWritebackDispatcher *dispatcher,
 	g_free (signature);
 
 	while ((arg_type = dbus_message_iter_get_arg_type (&iter)) != DBUS_TYPE_INVALID) {
-		DBusMessageIter arr, dict, types_arr;
-		const gchar *subject;
-		GArray *rdf_types;
-
-		rdf_types = g_array_new (TRUE, TRUE, sizeof (gchar *));
+		DBusMessageIter arr;
 
 		dbus_message_iter_recurse (&iter, &arr);
-		dbus_message_iter_recurse (&arr, &dict);
 
-		dbus_message_iter_get_basic (&dict, &subject);
+		while ((arg_type = dbus_message_iter_get_arg_type (&arr)) != DBUS_TYPE_INVALID) {
+			DBusMessageIter dict, types_arr;
+			const gchar *subject;
+			GArray *rdf_types;
 
-		dbus_message_iter_next (&dict);
-		dbus_message_iter_recurse (&dict, &types_arr);
+			rdf_types = g_array_new (TRUE, TRUE, sizeof (gchar *));
 
-		while ((arg_type = dbus_message_iter_get_arg_type (&types_arr)) != DBUS_TYPE_INVALID) {
-			const gchar *type;
+			dbus_message_iter_recurse (&arr, &dict);
 
-			dbus_message_iter_get_basic (&types_arr, &type);
+			dbus_message_iter_get_basic (&dict, &subject);
 
-			g_array_append_val (rdf_types, type);
+			dbus_message_iter_next (&dict);
+			dbus_message_iter_recurse (&dict, &types_arr);
 
-			dbus_message_iter_next (&types_arr);
-		}
+			while ((arg_type = dbus_message_iter_get_arg_type (&types_arr)) != DBUS_TYPE_INVALID) {
+				const gchar *type;
+
+				dbus_message_iter_get_basic (&types_arr, &type);
+
+				g_array_append_val (rdf_types, type);
 
-		g_signal_emit (dispatcher, signals[WRITEBACK], 0, subject, rdf_types->data);
-		g_array_free (rdf_types, TRUE);
+				dbus_message_iter_next (&types_arr);
+			}
+
+			g_signal_emit (dispatcher, signals[WRITEBACK], 0, subject, rdf_types->data);
+			g_array_free (rdf_types, TRUE);
+
+			dbus_message_iter_next (&arr);
+		}
 
 		dbus_message_iter_next (&iter);
 	}
diff --git a/src/tracker-writeback/tracker-writeback-file.c b/src/tracker-writeback/tracker-writeback-file.c
index c234e5f..daa0933 100644
--- a/src/tracker-writeback/tracker-writeback-file.c
+++ b/src/tracker-writeback/tracker-writeback-file.c
@@ -72,7 +72,7 @@ tracker_writeback_file_update_metadata (TrackerWriteback *writeback,
 	GStrv row;
 	const gchar * const *content_types;
 	const gchar *mime_type;
-	guint n, x;
+	guint n;
 
 	writeback_file_class = TRACKER_WRITEBACK_FILE_GET_CLASS (writeback);
 
@@ -88,56 +88,54 @@ tracker_writeback_file_update_metadata (TrackerWriteback *writeback,
 		return FALSE;
 	}
 
-	for (x = 0 ; x < values->len ; x++) {
-		/* Get the file from the row */
-		row = g_ptr_array_index (values, x);
-		file = g_file_new_for_uri (row[0]);
-
-		file_info = g_file_query_info (file,
-		                               G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
-		                               G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
-		                               NULL, NULL);
-
-		if (!file_info) {
-			if (file) {
-				g_object_unref (file);
-			}
-			continue;
+	/* Get the file from the row */
+	row = g_ptr_array_index (values, 0);
+	file = g_file_new_for_uri (row[0]);
+
+	file_info = g_file_query_info (file,
+	                               G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+	                               G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+	                               NULL, NULL);
+
+	if (!file_info) {
+		if (file) {
+			g_object_unref (file);
 		}
+		return FALSE;
+	}
 
-		mime_type = g_file_info_get_content_type (file_info);
-		content_types = (writeback_file_class->content_types) (TRACKER_WRITEBACK_FILE (writeback));
+	mime_type = g_file_info_get_content_type (file_info);
+	content_types = (writeback_file_class->content_types) (TRACKER_WRITEBACK_FILE (writeback));
 
-		retval = FALSE;
+	retval = FALSE;
 
-		for (n = 0; content_types[n] != NULL; n++) {
-			if (g_strcmp0 (mime_type, content_types[n]) == 0) {
-				retval = TRUE;
-				break;
-			}
+	for (n = 0; content_types[n] != NULL; n++) {
+		if (g_strcmp0 (mime_type, content_types[n]) == 0) {
+			retval = TRUE;
+			break;
 		}
+	}
 
-		g_object_unref (file_info);
-
-		if (retval) {
-			g_message ("Locking file '%s' in order to write metadata", row[0]);
+	g_object_unref (file_info);
 
-			tracker_file_lock (file);
+	if (retval) {
+		g_message ("Locking file '%s' in order to write metadata", row[0]);
 
-			urls[0] = row[0];
+		tracker_file_lock (file);
 
-			tracker_miner_manager_ignore_next_update (tracker_writeback_get_miner_manager (),
-			                                          "org.freedesktop.Tracker1.Miner.Files",
-			                                          urls);
+		urls[0] = row[0];
 
-			retval = (writeback_file_class->update_file_metadata) (TRACKER_WRITEBACK_FILE (writeback),
-			                                                       file, values, client);
+		tracker_miner_manager_ignore_next_update (tracker_writeback_get_miner_manager (),
+		                                          "org.freedesktop.Tracker1.Miner.Files",
+		                                          urls);
 
-			g_timeout_add_seconds (3, file_unlock_cb, g_object_ref (file));
-		}
+		retval = (writeback_file_class->update_file_metadata) (TRACKER_WRITEBACK_FILE (writeback),
+		                                                       file, values, client);
 
-		g_object_unref (file);
+		g_timeout_add_seconds (3, file_unlock_cb, g_object_ref (file));
 	}
 
+	g_object_unref (file);
+
 	return retval;
 }



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