[gtk+] searchenginetracker: Keep a reference on the search engine while querying
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] searchenginetracker: Keep a reference on the search engine while querying
- Date: Tue, 3 Mar 2015 16:57:57 +0000 (UTC)
commit b2f3b674946ae9b1f335b4222f7942067f232baa
Author: Carlos Garnacho <carlosg gnome org>
Date: Tue Mar 3 13:36:07 2015 +0100
searchenginetracker: Keep a reference on the search engine while querying
The object might be destroyed when mid operation, causing crashes as the
query callback still expects the object pointer to be valid. Also, remove
the gdk_threads_enter/leave pairs, the callback will be executed on the
caller (UI) thread, so this is not necessary.
https://bugzilla.gnome.org/show_bug.cgi?id=745479
gtk/gtksearchenginetracker.c | 10 ++++------
1 files changed, 4 insertions(+), 6 deletions(-)
---
diff --git a/gtk/gtksearchenginetracker.c b/gtk/gtksearchenginetracker.c
index 9102eb5..d1505c1 100644
--- a/gtk/gtksearchenginetracker.c
+++ b/gtk/gtksearchenginetracker.c
@@ -287,8 +287,6 @@ query_callback (GObject *object,
GError *error = NULL;
gint i, n;
- gdk_threads_enter ();
-
tracker = GTK_SEARCH_ENGINE_TRACKER (user_data);
tracker->priv->query_pending = FALSE;
@@ -298,14 +296,14 @@ query_callback (GObject *object,
{
_gtk_search_engine_error (GTK_SEARCH_ENGINE (tracker), error->message);
g_error_free (error);
- gdk_threads_leave ();
+ g_object_unref (tracker);
return;
}
if (!reply)
{
_gtk_search_engine_finished (GTK_SEARCH_ENGINE (tracker));
- gdk_threads_leave ();
+ g_object_unref (tracker);
return;
}
@@ -333,7 +331,7 @@ query_callback (GObject *object,
g_variant_unref (reply);
g_variant_unref (r);
- gdk_threads_leave ();
+ g_object_unref (tracker);
}
static void
@@ -393,7 +391,7 @@ gtk_search_engine_tracker_start (GtkSearchEngine *engine)
g_debug ("SearchEngineTracker: query: %s", sparql->str);
- get_query_results (tracker, sparql->str, query_callback, tracker);
+ get_query_results (tracker, sparql->str, query_callback, g_object_ref (tracker));
g_string_free (sparql, TRUE);
g_free (search_text);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]