rendered paste body GdkPixbuf *screenshot, *image; GError *error = NULL; GThread *thread; GeglNode *root, *load, *border, *shadow, *save; GeglProcessor *processor; gchar *filename; GeglRectangle roi; gdouble progress; filename = g_strconcat (G_OBJECT_TYPE_NAME (widget), ".png", NULL); screenshot = get_pixbuf (widget); root = gegl_node_new (); load = gegl_node_new_child (root, "operation", "pixbuf", "pixbuf", screenshot, NULL); shadow = gegl_node_new_child (root, "operation", "dropshadow", "opacity", .5, "radius", 6., NULL); save = gegl_node_new_child (root, "operation", "png-save", "path", filename, NULL); gegl_node_link_many (load, shadow, save, NULL); processor = gegl_node_new_processor (save, NULL); while (gegl_processor_work (processor, &progress)) g_debug ("%3.2f%% complete.", progress * 100); gegl_processor_destroy (processor); g_object_unref (screenshot); g_free (filename); g_debug ("Saved.");