diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2016-02-24 12:45:38 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2016-02-24 12:45:38 +0100 |
commit | 01958c044ec06fe25e1ee430891352786a034e5b (patch) | |
tree | 3a2b626109e7df13addccebcba53d33a68f31f05 | |
parent | a50c8a5a223a331e792244cbe183e7cda912e2fc (diff) | |
download | tracker-01958c044ec06fe25e1ee430891352786a034e5b.tar.gz |
libtracker-miner: Fix TrackerFileNotifier cancellable maintenance
Resetting and reusing is not deemed safe. It is better to create new
cancellables and let the old ones be last unref'ed after async callbacks
finish.
-rw-r--r-- | src/libtracker-miner/tracker-file-notifier.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/libtracker-miner/tracker-file-notifier.c b/src/libtracker-miner/tracker-file-notifier.c index f6cbb4805..035fbba5f 100644 --- a/src/libtracker-miner/tracker-file-notifier.c +++ b/src/libtracker-miner/tracker-file-notifier.c @@ -622,7 +622,10 @@ crawl_directory_in_current_root (TrackerFileNotifier *notifier) return FALSE; priv->current_index_root->current_dir = directory; - g_cancellable_reset (priv->cancellable); + + if (priv->cancellable) + g_object_unref (priv->cancellable); + priv->cancellable = g_cancellable_new (); if ((priv->current_index_root->flags & TRACKER_DIRECTORY_FLAG_RECURSE) == 0) { /* Don't recurse */ @@ -1463,12 +1466,14 @@ tracker_file_notifier_finalize (GObject *object) g_object_unref (priv->data_provider); } - g_cancellable_cancel (priv->cancellable); + if (priv->cancellable) { + g_cancellable_cancel (priv->cancellable); + g_object_unref (priv->cancellable); + } g_object_unref (priv->crawler); g_object_unref (priv->monitor); g_object_unref (priv->file_system); - g_object_unref (priv->cancellable); g_clear_object (&priv->connection); if (priv->current_index_root) @@ -1654,7 +1659,6 @@ tracker_file_notifier_init (TrackerFileNotifier *notifier) TrackerFileNotifierPrivate); priv->connection = tracker_sparql_connection_get (NULL, &error); - priv->cancellable = g_cancellable_new (); if (error) { g_warning ("Could not get SPARQL connection: %s\n", |