[nautilus/wip/csoriano/search-popover: 2/13] query: make date range retrieval thread safe
- From: Carlos Soriano Sánchez <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/wip/csoriano/search-popover: 2/13] query: make date range retrieval thread safe
- Date: Wed, 3 Feb 2016 15:34:33 +0000 (UTC)
commit c12ffc6e80ff772157b5f6777991b140de7d3928
Author: Carlos Soriano <csoriano gnome org>
Date: Tue Feb 2 16:05:21 2016 +0100
query: make date range retrieval thread safe
We are accessing it from multiple threads of the search, so we need
to make sure we don't free it in the middle.
libnautilus-private/nautilus-query.c | 16 ++++++++++++++++
libnautilus-private/nautilus-search-engine-model.c | 1 +
.../nautilus-search-engine-simple.c | 1 +
.../nautilus-search-engine-tracker.c | 1 +
4 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/libnautilus-private/nautilus-query.c b/libnautilus-private/nautilus-query.c
index 2912847..86dbac4 100644
--- a/libnautilus-private/nautilus-query.c
+++ b/libnautilus-private/nautilus-query.c
@@ -506,11 +506,27 @@ nautilus_query_set_search_type (NautilusQuery *query,
}
}
+/**
+ * nautilus_query_get_date_range:
+ * @query: a #NautilusQuery
+ *
+ * Retrieves the #GptrArray composed of #GDateTime representing the date range.
+ * This function is thread safe.
+ *
+ * Returns: (transfer full): the #GptrArray composed of #GDateTime representing the date range.
+ */
GPtrArray*
nautilus_query_get_date_range (NautilusQuery *query)
{
+ static GMutex mutex;
+
g_return_val_if_fail (NAUTILUS_IS_QUERY (query), NULL);
+ g_mutex_lock (&mutex);
+ if (query->date_range)
+ g_ptr_array_ref (query->date_range);
+ g_mutex_unlock (&mutex);
+
return query->date_range;
}
diff --git a/libnautilus-private/nautilus-search-engine-model.c
b/libnautilus-private/nautilus-search-engine-model.c
index 8a6b7a2..3b2875c 100644
--- a/libnautilus-private/nautilus-search-engine-model.c
+++ b/libnautilus-private/nautilus-search-engine-model.c
@@ -174,6 +174,7 @@ model_directory_ready_cb (NautilusDirectory *directory,
found = nautilus_file_date_in_between (current_file_unix_time,
initial_date,
end_date);
+ g_ptr_array_unref (date_range);
}
if (found) {
diff --git a/libnautilus-private/nautilus-search-engine-simple.c
b/libnautilus-private/nautilus-search-engine-simple.c
index e6deed9..9ce05de 100644
--- a/libnautilus-private/nautilus-search-engine-simple.c
+++ b/libnautilus-private/nautilus-search-engine-simple.c
@@ -279,6 +279,7 @@ visit_directory (GFile *dir, SearchThreadData *data)
found = nautilus_file_date_in_between (current_file_time,
initial_date,
end_date);
+ g_ptr_array_unref (date_range);
}
if (found) {
diff --git a/libnautilus-private/nautilus-search-engine-tracker.c
b/libnautilus-private/nautilus-search-engine-tracker.c
index ff0a351..5a71600 100644
--- a/libnautilus-private/nautilus-search-engine-tracker.c
+++ b/libnautilus-private/nautilus-search-engine-tracker.c
@@ -351,6 +351,7 @@ nautilus_search_engine_tracker_start (NautilusSearchProvider *provider)
g_free (initial_date_format);
g_free (end_date_format);
+ g_ptr_array_unref (date_range);
}
if (mime_count > 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]