static void photos_tracker_controller_cursor_next (GObject *source_object, GAsyncResult *res, gpointer user_data) { PhotosTrackerController *self = PHOTOS_TRACKER_CONTROLLER (user_data); PhotosTrackerControllerPrivate *priv = self->priv; TrackerSparqlCursor *cursor = TRACKER_SPARQL_CURSOR (source_object); gboolean valid; gint64 now; valid = tracker_sparql_cursor_next_finish (cursor, res, NULL); /* TODO: use GError */ if (!valid) { tracker_sparql_cursor_close (cursor); photos_tracker_controller_query_finished (self, NULL); g_object_unref (self); return; } now = g_get_monotonic_time (); photos_debug (PHOTOS_DEBUG_TRACKER, "Query Cursor: %" G_GINT64_FORMAT, (now - priv->last_query_time) / 1000000); photos_item_manager_add_item (PHOTOS_ITEM_MANAGER (priv->item_mngr), cursor); tracker_sparql_cursor_next_async (cursor, priv->cancellable, photos_tracker_controller_cursor_next, self); }
static void photos_item_manager_item_created_executed (TrackerSparqlCursor *cursor, gpointer user_data) { PhotosItemManager *self = PHOTOS_ITEM_MANAGER (user_data); if (cursor == NULL) goto out; photos_item_manager_add_item (self, cursor); out: g_object_unref (self); }
static void photos_application_activate_query_executed (TrackerSparqlCursor *cursor, gpointer user_data) { PhotosApplication *self = PHOTOS_APPLICATION (user_data); PhotosApplicationPrivate *priv = self->priv; GObject *item; const gchar *identifier; if (cursor == NULL) goto out; photos_item_manager_add_item (PHOTOS_ITEM_MANAGER (priv->item_mngr), cursor); identifier = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_URN, NULL); item = photos_base_manager_get_object_by_id (priv->item_mngr, identifier); photos_application_activate_item (self, item); out: g_object_unref (self); }