[gimp/gimp-2-10] app: in gimp_drawable_merge_filter(), align undo rect to tile grid
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-2-10] app: in gimp_drawable_merge_filter(), align undo rect to tile grid
- Date: Fri, 28 Dec 2018 13:31:30 +0000 (UTC)
commit c650c51cbcadd4703533b384b57e469eb2a87cf8
Author: Ell <ell_se yahoo com>
Date: Fri Dec 28 08:29:10 2018 -0500
app: in gimp_drawable_merge_filter(), align undo rect to tile grid
In gimp_drawable_merge_filter(), align the region copied to the
undo buffer to the drawable buffer's tile grid, so that the copied
tiles are COWed.
(cherry picked from commit cba4bc4781aa2e5f023c4c50464748f8748f898d)
app/core/gimpdrawable-filters.c | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
---
diff --git a/app/core/gimpdrawable-filters.c b/app/core/gimpdrawable-filters.c
index 0fbafbc15e..0a8f5338ec 100644
--- a/app/core/gimpdrawable-filters.c
+++ b/app/core/gimpdrawable-filters.c
@@ -28,6 +28,7 @@
#include "gegl/gimpapplicator.h"
#include "gegl/gimp-gegl-apply-operation.h"
#include "gegl/gimp-gegl-loops.h"
+#include "gegl/gimp-gegl-utils.h"
#include "gimp-utils.h"
#include "gimpdrawable.h"
@@ -123,18 +124,24 @@ gimp_drawable_merge_filter (GimpDrawable *drawable,
{
GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable));
GeglBuffer *undo_buffer;
+ GeglRectangle undo_rect;
GimpApplicator *applicator;
GeglBuffer *cache = NULL;
GeglRectangle *rects = NULL;
gint n_rects = 0;
+ gimp_gegl_rectangle_align_to_tile_grid (
+ &undo_rect,
+ &rect,
+ gimp_drawable_get_buffer (drawable));
+
undo_buffer = gegl_buffer_new (GEGL_RECTANGLE (0, 0,
- rect.width, rect.height),
+ undo_rect.width,
+ undo_rect.height),
gimp_drawable_get_format (drawable));
gimp_gegl_buffer_copy (gimp_drawable_get_buffer (drawable),
- GEGL_RECTANGLE (rect.x, rect.y,
- rect.width, rect.height),
+ &undo_rect,
GEGL_ABYSS_NONE,
undo_buffer,
GEGL_RECTANGLE (0, 0, 0, 0));
@@ -170,18 +177,20 @@ gimp_drawable_merge_filter (GimpDrawable *drawable,
/* finished successfully */
gimp_drawable_push_undo (drawable, undo_desc, undo_buffer,
- rect.x, rect.y,
- rect.width, rect.height);
+ undo_rect.x, undo_rect.y,
+ undo_rect.width, undo_rect.height);
}
else
{
/* canceled by the user */
gimp_gegl_buffer_copy (undo_buffer,
- GEGL_RECTANGLE (0, 0, rect.width, rect.height),
+ GEGL_RECTANGLE (0, 0,
+ undo_rect.width,
+ undo_rect.height),
GEGL_ABYSS_NONE,
gimp_drawable_get_buffer (drawable),
- GEGL_RECTANGLE (rect.x, rect.y, 0, 0));
+ &undo_rect);
success = FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]