Index: src/trackerd/tracker-email-modest.c =================================================================== --- src/trackerd/tracker-email-modest.c (revision 1267) +++ src/trackerd/tracker-email-modest.c (working copy) @@ -911,9 +911,8 @@ email_free_mail_message (mail_msg); if (!tracker_cache_process_events (db_con->data, TRUE)) { - tracker->status = STATUS_SHUTDOWN; + tracker_set_status (tracker, STATUS_SHUTDOWN, 0, TRUE); tracker->shutdown = TRUE; - tracker_dbus_send_index_status_change_signal (); return; } Index: src/trackerd/tracker-utils.c =================================================================== --- src/trackerd/tracker-utils.c (revision 1267) +++ src/trackerd/tracker-utils.c (working copy) @@ -2621,8 +2621,17 @@ } +void +tracker_set_status (Tracker *tracker, TrackerStatus status, gdouble percentage, gboolean signal) +{ + TrackerStatus old = tracker->status; + tracker->status = status; + if (signal && old != status) + tracker_dbus_send_index_status_change_signal (); +} + gboolean tracker_pause (void) { Index: src/trackerd/tracker-utils.h =================================================================== --- src/trackerd/tracker-utils.h (revision 1267) +++ src/trackerd/tracker-utils.h (working copy) @@ -539,4 +539,6 @@ gboolean tracker_low_diskspace (void); gboolean tracker_pause (void); +void tracker_set_status (Tracker *tracker, TrackerStatus status, gdouble percentage, gboolean signal); + #endif Index: src/trackerd/trackerd.c =================================================================== --- src/trackerd/trackerd.c (revision 1267) +++ src/trackerd/trackerd.c (working copy) @@ -204,7 +204,7 @@ { GSList *black_list; - tracker->status = STATUS_SHUTDOWN; + tracker_set_status (tracker, STATUS_SHUTDOWN, 0, FALSE); if (sig_msg) { tracker_log ("Received signal '%s' so now shutting down", sig_msg); @@ -737,7 +737,7 @@ add_local_dbus_connection_monitoring (tracker->dbus_con); - tracker->status = STATUS_INIT; + tracker_set_status (tracker, STATUS_INIT, 0, FALSE); tracker->is_running = FALSE; tracker->shutdown = FALSE; Index: src/trackerd/tracker-email-evolution.c =================================================================== --- src/trackerd/tracker-email-evolution.c (revision 1267) +++ src/trackerd/tracker-email-evolution.c (working copy) @@ -1418,9 +1418,8 @@ email_free_mail_message (mail_msg); if (!tracker_cache_process_events (db_con->data, TRUE)) { - tracker->status = STATUS_SHUTDOWN; + tracker_set_status (tracker, STATUS_SHUTDOWN, 0, TRUE); tracker->shutdown = TRUE; - tracker_dbus_send_index_status_change_signal (); return; } Index: src/trackerd/tracker-process-files.c =================================================================== --- src/trackerd/tracker-process-files.c (revision 1267) +++ src/trackerd/tracker-process-files.c (working copy) @@ -1143,7 +1143,7 @@ tracker->index_status = INDEX_FINISHED; if (tracker->is_running && tracker->first_time_index) { - tracker->status = STATUS_OPTIMIZING; + tracker_set_status (tracker, STATUS_OPTIMIZING, 0, FALSE); tracker->do_optimize = FALSE; tracker->first_time_index = FALSE; @@ -1170,8 +1170,7 @@ * sleep until awoken by a new * signal. */ - tracker->status = STATUS_IDLE; - tracker_dbus_send_index_status_change_signal (); + tracker_set_status (tracker, STATUS_IDLE, 0, TRUE); g_cond_wait (tracker->file_thread_signal, tracker->files_signal_mutex); @@ -1493,16 +1492,12 @@ db_con = tracker->index_db; if (!tracker_cache_process_events (tracker->index_db, TRUE) ) { - tracker->status = STATUS_SHUTDOWN; - tracker_dbus_send_index_status_change_signal (); + tracker_set_status (tracker, STATUS_SHUTDOWN, 0, TRUE); break; } - if (tracker->status != STATUS_INDEXING) { - tracker->status = STATUS_INDEXING; - tracker_dbus_send_index_status_change_signal (); - } - + tracker_set_status (tracker, STATUS_INDEXING, 0, TRUE); + info = g_async_queue_try_pop (tracker->file_process_queue); /* Check pending table if we haven't got anything */ @@ -1535,7 +1530,7 @@ if (res) { gchar **row; - tracker->status = STATUS_PENDING; + tracker_set_status (tracker, STATUS_PENDING, 0, FALSE); while ((row = tracker_db_get_row (res, k))) { FileInfo *info_tmp; @@ -1576,7 +1571,7 @@ continue; } - tracker->status = STATUS_INDEXING; + tracker_set_status (tracker, STATUS_INDEXING, 0, TRUE); if (process_action_prechecks (tracker, info)) { continue; Index: src/trackerd/tracker-indexer.c =================================================================== --- src/trackerd/tracker-indexer.c (revision 1267) +++ src/trackerd/tracker-indexer.c (working copy) @@ -690,8 +690,7 @@ if (i > 101 && (i % 100 == 0)) { if (!tracker_cache_process_events (NULL, FALSE)) { - tracker->status = STATUS_SHUTDOWN; - tracker_dbus_send_index_status_change_signal (); + tracker_set_status (tracker, STATUS_SHUTDOWN, 0, TRUE); return; } }