static void photos_base_item_print_load (GObject *source_object, GAsyncResult *res, gpointer user_data) { PhotosBaseItem *self = PHOTOS_BASE_ITEM (source_object); GtkWindow *toplevel = GTK_WINDOW (user_data); GeglNode *node; GtkPrintOperation *print_op; node = photos_base_item_load_finish (self, res, NULL); if (node == NULL) goto out; print_op = photos_print_operation_new (self, node); g_signal_connect_data (print_op, "done", G_CALLBACK (photos_base_item_print_operation_done), g_object_ref (self), (GClosureNotify) g_object_unref, G_CONNECT_SWAPPED); /* It is self managing. */ photos_print_notification_new (print_op); gtk_print_operation_run (print_op, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, toplevel, NULL); out: g_clear_object (&node); g_object_unref (toplevel); }
static void photos_item_manager_item_load (GObject *source_object, GAsyncResult *res, gpointer user_data) { PhotosItemManager *self = PHOTOS_ITEM_MANAGER (user_data); GError *error; GeglNode *node = NULL; PhotosBaseItem *item = PHOTOS_BASE_ITEM (source_object); g_clear_object (&self->loader_cancellable); error = NULL; node = photos_base_item_load_finish (item, res, &error); if (error != NULL) { if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) g_warning ("Unable to load the item: %s", error->message); self->load_state = PHOTOS_LOAD_STATE_ERROR; g_error_free (error); } else { self->load_state = PHOTOS_LOAD_STATE_FINISHED; } g_signal_emit (self, signals[LOAD_FINISHED], 0, item, node); g_clear_object (&node); g_object_unref (self); }