[tracker/libtracker-miner] TrackerMinerFS: Implement pause() and resume().
- From: Carlos Garnacho <carlosg src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tracker/libtracker-miner] TrackerMinerFS: Implement pause() and resume().
- Date: Mon, 31 Aug 2009 15:51:59 +0000 (UTC)
commit 421515730eef1b828d83453e6dece7323ef7517b
Author: Carlos Garnacho <carlos lanedo com>
Date: Mon Aug 31 16:53:11 2009 +0200
TrackerMinerFS: Implement pause() and resume().
src/libtracker-miner/tracker-miner-fs.c | 46 ++++++++++++++++++++++++++-----
1 files changed, 39 insertions(+), 7 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index bada6fa..fd327f8 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -67,6 +67,7 @@ struct TrackerMinerFSPrivate {
guint been_started : 1;
guint been_crawled : 1;
guint shown_totals : 1;
+ guint paused : 1;
/* Statistics */
guint total_directories_found;
@@ -101,6 +102,9 @@ static gboolean fs_defaults (TrackerMinerFS *fs,
GFile *file);
static void miner_started (TrackerMiner *miner);
static void miner_stopped (TrackerMiner *miner);
+static void miner_paused (TrackerMiner *miner);
+static void miner_resumed (TrackerMiner *miner);
+
static DirectoryData *directory_data_new (GFile *file,
gboolean recurse);
static void directory_data_free (DirectoryData *dd);
@@ -160,17 +164,13 @@ tracker_miner_fs_class_init (TrackerMinerFSClass *klass)
miner_class->started = miner_started;
miner_class->stopped = miner_stopped;
+ miner_class->paused = miner_paused;
+ miner_class->resumed = miner_resumed;
fs_class->check_file = fs_defaults;
fs_class->check_directory = fs_defaults;
fs_class->monitor_directory = fs_defaults;
- /*
- miner_class->stopped = miner_crawler_stopped;
- miner_class->paused = miner_crawler_paused;
- miner_class->resumed = miner_crawler_resumed;
- */
-
signals[CHECK_FILE] =
g_signal_new ("check-file",
G_OBJECT_CLASS_TYPE (object_class),
@@ -346,6 +346,34 @@ miner_stopped (TrackerMiner *miner)
NULL);
}
+static void
+miner_paused (TrackerMiner *miner)
+{
+ TrackerMinerFSPrivate *priv;
+
+ priv = TRACKER_MINER_FS (miner)->private;
+
+ priv->paused = TRUE;
+
+ /* FIXME: also pause crawler, if running */
+
+ if (priv->item_queues_handler_id) {
+ g_source_remove (priv->item_queues_handler_id);
+ priv->item_queues_handler_id = 0;
+ }
+}
+
+static void
+miner_resumed (TrackerMiner *miner)
+{
+ TrackerMinerFSPrivate *priv;
+
+ priv = TRACKER_MINER_FS (miner)->private;
+
+ priv->paused = FALSE;
+ item_queue_handlers_set_up (TRACKER_MINER_FS (miner));
+}
+
static DirectoryData *
directory_data_new (GFile *file,
gboolean recurse)
@@ -831,7 +859,11 @@ item_queue_handlers_set_up (TrackerMinerFS *fs)
if (fs->private->item_queues_handler_id != 0) {
return;
}
-
+
+ if (fs->private->paused) {
+ return;
+ }
+
g_object_get (fs, "status", &status, NULL);
if (g_strcmp0 (status, _("Processing files")) != 0) {
/* Don't spam this */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]