[Gimp-developer] Create and add new layers in a GimpPreview widget


my plugin performs a series of image algorithms and provides a GimpDrawablePreview widget.
One of those operations works by adding a new layer to the image, I have no problems when apply it to the 
"real" image... but things changes if I try to show a preview of it.

Basically, the algorithm is the following:

/* ----------------- */

// double the region
int new_layer = gimp_layer_new_from_drawable (drawable->drawable_id, gimp_drawable_get_image 

// pixel operation on the original layer/drawable....

// apply changes
if (preview) {
        gimp_drawable_preview_draw_region (GIMP_DRAWABLE_PREVIEW (preview), dst_rgn);
else {
        gimp_drawable_flush (drawable);
        gimp_drawable_merge_shadow (drawable->drawable_id, undo);
        gimp_drawable_update (drawable->drawable_id, dst_rgn->x, dst_rgn->y, dst_rgn->w, dst_rgn->h);

// set new layer's mode
gimp_layer_set_mode (drawable->drawable_id, GIMP_DIFFERENCE_MODE);

// add the layer and merge
gimp_image_add_layer (gimp_drawable_get_image (drawable->drawable_id), new_layer, 1);
int new_drawable = gimp_image_merge_visible_layers(gimp_drawable_get_image (drawable->drawable_id), 

/* ----------------- */

Problem is at the last line, when executed it says "tried reading from drawable 30 which was removed from the 
image (killing)"... but only in preview mode.
I guess that drawables in a preview widget must be managed in a different way... but how? Is there an example 
of plugin that uses layers plus a preview window?


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]