summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-02-24 12:45:38 +0100
committerCarlos Garnacho <carlosg@gnome.org>2016-02-24 12:45:38 +0100
commit01958c044ec06fe25e1ee430891352786a034e5b (patch)
tree3a2b626109e7df13addccebcba53d33a68f31f05
parenta50c8a5a223a331e792244cbe183e7cda912e2fc (diff)
downloadtracker-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.c12
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",