[tracker/libtracker-miner] Fix processor so we add newly created directories to the crawl list



commit 25e20bc33fb3929bda054afcb26fb80da958c4d9
Author: Martyn Russell <martyn imendio com>
Date:   Tue Aug 4 17:17:46 2009 +0100

    Fix processor so we add newly created directories to the crawl list

 src/libtracker-miner/tracker-processor.c |   56 +++++++++++++++++++++++++-----
 1 files changed, 47 insertions(+), 9 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-processor.c b/src/libtracker-miner/tracker-processor.c
index a14d0a5..1eac2d2 100644
--- a/src/libtracker-miner/tracker-processor.c
+++ b/src/libtracker-miner/tracker-processor.c
@@ -65,8 +65,6 @@ struct TrackerProcessorPrivate {
 
 	gboolean	finished_directories;
 	gboolean	finished_devices;
-	gboolean	finished_sending;
-	gboolean	finished_indexer;
 
 	/* Statistics */
 	guint		total_directories_found;
@@ -371,9 +369,9 @@ miner_started (TrackerMiner *miner)
 	processor->private->interrupted = FALSE;
 
 	processor->private->finished_directories = FALSE;
-	processor->private->finished_devices = FALSE;
-	processor->private->finished_sending = FALSE;
-	processor->private->finished_indexer = FALSE;
+
+	/* Disabled for now */
+	processor->private->finished_devices = TRUE;
 
 	process_next (processor);
 }
@@ -495,9 +493,17 @@ monitor_item_created_cb (TrackerMonitor *monitor,
 				tracker_monitor_add (processor->private->monitor, file);	     
 			}
 
-#ifdef FIX
-			tracker_crawler_add_unexpected_path (processor->private->crawler, path);
-#endif
+			/* Add to the list */
+			processor->private->directories = 
+				g_list_append (processor->private->directories, 
+					       directory_data_new (path, TRUE));
+
+			/* Make sure we are handling that list */
+			processor->private->finished_directories = FALSE;
+
+			if (processor->private->finished_devices) {
+				process_next (processor);
+			}
 		}
 
 		g_queue_push_tail (processor->private->items_created, 
@@ -568,6 +574,27 @@ monitor_item_deleted_cb (TrackerMonitor *monitor,
 		item_queue_handlers_set_up (processor);
 	}
 
+#if 0
+	/* FIXME: Should we do this for MOVE events too? */
+
+	/* Remove directory from list of directories we are going to
+	 * iterate if it is in there.
+	 */
+	l = g_list_find_custom (processor->private->directories, 
+				path, 
+				(GCompareFunc) g_strcmp0);
+
+	/* Make sure we don't remove the current device we are
+	 * processing, this is because we do this same clean up later
+	 * in process_device_next() 
+	 */
+	if (l && l != processor->private->current_directory) {
+		directory_data_free (l->data);
+		processor->private->directories = 
+			g_list_delete_link (processor->private->directories, l);
+	}
+#endif
+
 	g_free (path);
 }
 
@@ -803,7 +830,18 @@ process_directories_next (TrackerProcessor *processor)
 			processor->private->current_directory = processor->private->directories;
 		}
 	} else {
-		processor->private->current_directory = processor->private->current_directory->next;
+		GList *l;
+
+		l = processor->private->current_directory;
+		
+		/* Now free that device so we don't recrawl it */
+		if (l) {
+			directory_data_free (l->data);
+			
+			processor->private->current_directory = 
+			processor->private->directories = 
+				g_list_delete_link (processor->private->directories, l);
+		}
 	}
 
 	/* If we have no further modules to iterate */



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