[nautilus] search-engine-recent: remove add hits idle on finalize
- From: Ernestas Kulik <ernestask src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] search-engine-recent: remove add hits idle on finalize
- Date: Mon, 8 Oct 2018 13:22:49 +0000 (UTC)
commit 4c6d4eea995a66e80fb21ee83b66954d1ce71c08
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Thu Oct 4 18:19:31 2018 +0200
search-engine-recent: remove add hits idle on finalize
Use a new function to initialize it without having to redo the same
thing twice.
src/nautilus-search-engine-recent.c | 39 ++++++++++++++++++++++++-------------
1 file changed, 25 insertions(+), 14 deletions(-)
---
diff --git a/src/nautilus-search-engine-recent.c b/src/nautilus-search-engine-recent.c
index 0de060f83..8cc7b88f0 100644
--- a/src/nautilus-search-engine-recent.c
+++ b/src/nautilus-search-engine-recent.c
@@ -42,6 +42,7 @@ struct _NautilusSearchEngineRecent
NautilusQuery *query;
GCancellable *cancellable;
GtkRecentManager *recent_manager;
+ guint add_hits_idle_id;
};
static void nautilus_search_provider_init (NautilusSearchProviderInterface *iface);
@@ -71,10 +72,8 @@ nautilus_search_engine_recent_finalize (GObject *object)
{
NautilusSearchEngineRecent *self = NAUTILUS_SEARCH_ENGINE_RECENT (object);
- if (self->cancellable)
- {
- g_cancellable_cancel (self->cancellable);
- }
+ g_clear_handle_id (&self->add_hits_idle_id, g_source_remove);
+ g_cancellable_cancel (self->cancellable);
g_clear_object (&self->query);
g_clear_object (&self->cancellable);
@@ -96,6 +95,8 @@ search_thread_add_hits_idle (gpointer user_data)
NautilusSearchEngineRecent *self = search_hits->recent;
NautilusSearchProvider *provider = NAUTILUS_SEARCH_PROVIDER (self);
+ self->add_hits_idle_id = 0;
+
if (!g_cancellable_is_cancelled (self->cancellable))
{
nautilus_search_provider_hits_added (provider, search_hits->hits);
@@ -115,6 +116,24 @@ search_thread_add_hits_idle (gpointer user_data)
return FALSE;
}
+static void
+search_add_hits_idle (NautilusSearchEngineRecent *self,
+ GList *hits)
+{
+ SearchHitsData *search_hits;
+
+ if (self->add_hits_idle_id != 0)
+ {
+ return;
+ }
+
+ search_hits = g_new0 (SearchHitsData, 1);
+ search_hits->recent = self;
+ search_hits->hits = hits;
+
+ self->add_hits_idle_id = g_idle_add (search_thread_add_hits_idle, search_hits);
+}
+
static gboolean
is_file_valid_recursive (NautilusSearchEngineRecent *self,
GFile *file,
@@ -296,11 +315,7 @@ recent_thread_func (gpointer user_data)
}
}
- search_hits = g_new0 (SearchHitsData, 1);
- search_hits->recent = self;
- search_hits->hits = hits;
-
- g_idle_add (search_thread_add_hits_idle, search_hits);
+ search_add_hits_idle (self, hits);
g_list_free_full (recent_items, (GDestroyNotify) gtk_recent_info_unref);
g_list_free_full (mime_types, g_free);
@@ -324,11 +339,7 @@ nautilus_search_engine_recent_start (NautilusSearchProvider *provider)
nautilus_query_get_recursive (self->query),
location))
{
- SearchHitsData *search_hits;
- search_hits = g_new0 (SearchHitsData, 1);
- search_hits->recent = g_object_ref (self);
-
- g_idle_add (search_thread_add_hits_idle, search_hits);
+ search_add_hits_idle (self, NULL);
return;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]