[tracker] libtracker-common: Don't emit the changed signal for one edit



commit 81cd844be6f783a35aaf9cb6bc377b5cccb0ed33
Author: Martyn Russell <martyn lanedo com>
Date:   Mon Feb 8 16:10:46 2010 +0100

    libtracker-common: Don't emit the changed signal for one edit
    
    This occurred twice for vim edits.

 src/libtracker-common/tracker-config-file.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)
---
diff --git a/src/libtracker-common/tracker-config-file.c b/src/libtracker-common/tracker-config-file.c
index eb387e2..0bb5b98 100644
--- a/src/libtracker-common/tracker-config-file.c
+++ b/src/libtracker-common/tracker-config-file.c
@@ -230,20 +230,31 @@ config_changed_cb (GFileMonitor     *monitor,
                    gpointer          user_data)
 {
 	TrackerConfigFile *file;
-	gchar             *filename;
+	gchar *filename;
+	GTimeVal time_now;
+	static GTimeVal time_last = { 0 };
 
 	file = TRACKER_CONFIG_FILE (user_data);
 
 	/* Do we recreate if the file is deleted? */
 
+	/* Don't emit multiple signals for the same edit. */
+	g_get_current_time (&time_now);
+
 	switch (event_type) {
 	case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT:
 	case G_FILE_MONITOR_EVENT_CREATED:
+                if ((time_now.tv_sec - time_last.tv_sec) < 1) {
+                        return;
+                }
+
+		time_last = time_now;
+
 		file->file_exists = TRUE;
 
 		filename = g_file_get_path (this_file);
-		g_message ("Config file changed:'%s', reloading settings...",
-		           filename);
+		g_message ("Config file changed:'%s', reloading settings..., event:%d",
+		           filename, event_type);
 		g_free (filename);
 
 		config_load (file);



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