static void photos_search_provider_fetch_ids_executed (GObject *source_object, GAsyncResult *res, gpointer user_data) { GApplication *app; GDBusMethodInvocation *invocation = G_DBUS_METHOD_INVOCATION (user_data); PhotosFetchIdsJob *job = PHOTOS_FETCH_IDS_JOB (source_object); GError *error = NULL; GVariant *parameters; const gchar *const *ids; app = g_application_get_default (); g_application_release (app); ids = photos_fetch_ids_job_finish (job, res, &error); if (error != NULL) { g_dbus_method_invocation_take_error (invocation, error); goto out; } parameters = g_variant_new ("(^as)", ids); g_dbus_method_invocation_return_value (invocation, parameters); out: g_object_unref (invocation); }
static void photos_fetch_ids_job_finalize (GObject *object) { PhotosFetchIdsJob *self = PHOTOS_FETCH_IDS_JOB (object); g_strfreev (self->terms); G_OBJECT_CLASS (photos_fetch_ids_job_parent_class)->finalize (object); }
static void photos_fetch_ids_job_dispose (GObject *object) { PhotosFetchIdsJob *self = PHOTOS_FETCH_IDS_JOB (object); g_clear_pointer (&self->ids, (GDestroyNotify) g_ptr_array_unref); g_clear_object (&self->queue); G_OBJECT_CLASS (photos_fetch_ids_job_parent_class)->dispose (object); }
static void photos_fetch_ids_job_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { PhotosFetchIdsJob *self = PHOTOS_FETCH_IDS_JOB (object); switch (prop_id) { case PROP_TERMS: self->terms = g_value_dup_boxed (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void photos_fetch_ids_job_cursor_next (GObject *source_object, GAsyncResult *res, gpointer user_data) { PhotosFetchIdsJob *self; GCancellable *cancellable; g_autoptr (GTask) task = G_TASK (user_data); TrackerSparqlCursor *cursor = TRACKER_SPARQL_CURSOR (source_object); GError *error; gboolean success; self = PHOTOS_FETCH_IDS_JOB (g_task_get_source_object (task)); cancellable = g_task_get_cancellable (task); error = NULL; /* Note that tracker_sparql_cursor_next_finish can return FALSE even * without an error. */ success = tracker_sparql_cursor_next_finish (cursor, res, &error); if (error != NULL) { g_task_return_error (task, error); goto end; } if (success) { const gchar *id; id = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_URN, NULL); g_ptr_array_add (self->ids, g_strdup (id)); tracker_sparql_cursor_next_async (cursor, cancellable, photos_fetch_ids_job_cursor_next, g_object_ref (task)); return; } g_ptr_array_add (self->ids, NULL); g_task_return_pointer (task, self->ids->pdata, NULL); end: return; }