summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2008-06-02 21:45:59 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2008-06-02 21:45:59 +0000
commit3ed0663ea06d0b20aa0ebf715154cbc867aa57ab (patch)
treea41940766065727c607dc1d643fc6822583bd08f
parenta5c7f5c70889165f51815d95be30b62f5486721e (diff)
downloadgdk-pixbuf-3ed0663ea06d0b20aa0ebf715154cbc867aa57ab.tar.gz
check that tracker is actually working before using it. Fixes bug #479197.
* gtk/gtksearchenginetracker.c: (_gtk_search_engine_tracker_new): check that tracker is actually working before using it. Fixes bug #479197. svn path=/branches/gtk-2-12/; revision=20276
-rw-r--r--ChangeLog8
-rw-r--r--gtk/gtksearchenginetracker.c15
2 files changed, 23 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index f529a3601..5a736eec6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,14 @@
Merge from trunk:
+ * gtk/gtksearchenginetracker.c: (_gtk_search_engine_tracker_new):
+ check that tracker is actually working before using it. Fixes
+ bug #479197.
+
+2008-06-02 Matthias Clasen <mclasen@redhat.com>
+
+ Merge from trunk:
+
* gtk/gtkfilechooserdefault.c:
(shortcuts_activate_volume_mount_cb): Ignore G_IO_ERROR_FAILED_HANDLED
errors (#532262).
diff --git a/gtk/gtksearchenginetracker.c b/gtk/gtksearchenginetracker.c
index 7d357f202..36c90c38c 100644
--- a/gtk/gtksearchenginetracker.c
+++ b/gtk/gtksearchenginetracker.c
@@ -35,6 +35,7 @@ typedef void (*TrackerArrayReply) (char **result, GError *error, gpointer user_d
static TrackerClient * (*tracker_connect) (gboolean enable_warnings) = NULL;
static void (*tracker_disconnect) (TrackerClient *client) = NULL;
+static int (*tracker_get_version) (TrackerClient *client, GError **error) = NULL;
static void (*tracker_cancel_last_call) (TrackerClient *client) = NULL;
static void (*tracker_search_metadata_by_text_async) (TrackerClient *client,
@@ -56,6 +57,7 @@ static struct TrackerDlMapping
#define MAP(a) { #a, (gpointer *)&a }
MAP (tracker_connect),
MAP (tracker_disconnect),
+ MAP (tracker_get_version),
MAP (tracker_cancel_last_call),
MAP (tracker_search_metadata_by_text_async),
MAP (tracker_search_metadata_by_text_and_location_async),
@@ -285,6 +287,7 @@ _gtk_search_engine_tracker_new (void)
{
GtkSearchEngineTracker *engine;
TrackerClient *tracker_client;
+ GError *err = NULL;
open_libtracker ();
@@ -296,6 +299,18 @@ _gtk_search_engine_tracker_new (void)
if (!tracker_client)
return NULL;
+ if (!tracker_get_version)
+ return NULL;
+
+ tracker_get_version (tracker_client, &err);
+
+ if (err != NULL)
+ {
+ g_error_free (err);
+ tracker_disconnect (tracker_client);
+ return NULL;
+ }
+
engine = g_object_new (GTK_TYPE_SEARCH_ENGINE_TRACKER, NULL);
engine->priv->client = tracker_client;