diff options
author | Josselin Mouette <jmouette@src.gnome.org> | 2008-05-25 14:19:16 +0000 |
---|---|---|
committer | Josselin Mouette <jmouette@src.gnome.org> | 2008-05-25 14:19:16 +0000 |
commit | d8f3119f3092b5286c8302569d667f71b070f634 (patch) | |
tree | f85d5a42516677731e68fad2cc17c7a04ece06cb /gtk | |
parent | d0ffa630f53e55b1d6f0c8eb7bfde05ca4eb8fde (diff) | |
download | gtk+-d8f3119f3092b5286c8302569d667f71b070f634.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=/trunk/; revision=20149
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtksearchenginetracker.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gtk/gtksearchenginetracker.c b/gtk/gtksearchenginetracker.c index 7d357f202e..36c90c38c1 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; |