[gimp/goat-invasion] app: add "take_ownerspip" param to gimp_temp_buf_create_buffer()
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/goat-invasion] app: add "take_ownerspip" param to gimp_temp_buf_create_buffer()
- Date: Sun, 1 Apr 2012 20:01:18 +0000 (UTC)
commit b8837f7d3da94eb72e61b6a89b4f4461dc24809f
Author: Michael Natterer <mitch gimp org>
Date: Sun Apr 1 21:59:36 2012 +0200
app: add "take_ownerspip" param to gimp_temp_buf_create_buffer()
and get rid of some more intermediate buffer creation/destruction, and
some redundant temp_buf_free() plus g_object_unref().
app/core/gimpbrush-boundary.c | 3 +-
app/core/gimpbrushclipboard.c | 5 ++-
app/core/gimppattern.c | 2 +-
app/gegl/gimp-gegl-utils.c | 17 +++++++----
app/gegl/gimp-gegl-utils.h | 3 +-
app/paint/gimpbrushcore.c | 18 ++++++------
app/paint/gimpconvolve.c | 6 +---
app/paint/gimpdodgeburn.c | 10 +++---
app/paint/gimpheal.c | 10 +++++--
app/paint/gimpink.c | 26 +++++++++---------
app/paint/gimppaintcore.c | 36 +++++++++++-------------
app/paint/gimppaintcore.h | 3 +-
app/paint/gimpsmudge.c | 61 ++++++++++++++++++-----------------------
app/paint/gimpsmudge.h | 2 +-
14 files changed, 100 insertions(+), 102 deletions(-)
---
diff --git a/app/core/gimpbrush-boundary.c b/app/core/gimpbrush-boundary.c
index 0ad883f..34979be 100644
--- a/app/core/gimpbrush-boundary.c
+++ b/app/core/gimpbrush-boundary.c
@@ -49,7 +49,8 @@ gimp_brush_transform_boundary_exact (GimpBrush *brush,
gint n_bound_segs;
buffer = gimp_temp_buf_create_buffer ((TempBuf *) mask,
- babl_format ("Y u8"));
+ babl_format ("Y u8"),
+ FALSE);
bound_segs = gimp_boundary_find (buffer, NULL,
GIMP_BOUNDARY_WITHIN_BOUNDS,
diff --git a/app/core/gimpbrushclipboard.c b/app/core/gimpbrushclipboard.c
index 29d1a14..b952b97 100644
--- a/app/core/gimpbrushclipboard.c
+++ b/app/core/gimpbrushclipboard.c
@@ -210,7 +210,8 @@ gimp_brush_clipboard_buffer_changed (Gimp *gimp,
if (babl_format_has_alpha (format))
{
dest_buffer = gimp_temp_buf_create_buffer (brush->mask,
- babl_format ("A u8"));
+ babl_format ("A u8"),
+ FALSE);
gegl_buffer_copy (buffer, NULL, dest_buffer, NULL);
@@ -223,7 +224,7 @@ gimp_brush_clipboard_buffer_changed (Gimp *gimp,
}
/* copy the color channels into the brush's pixmap */
- dest_buffer = gimp_temp_buf_create_buffer (brush->pixmap, NULL);
+ dest_buffer = gimp_temp_buf_create_buffer (brush->pixmap, NULL, FALSE);
gegl_buffer_copy (buffer, NULL, dest_buffer, NULL);
diff --git a/app/core/gimppattern.c b/app/core/gimppattern.c
index d53c93b..f3f1c41 100644
--- a/app/core/gimppattern.c
+++ b/app/core/gimppattern.c
@@ -271,5 +271,5 @@ gimp_pattern_create_buffer (const GimpPattern *pattern)
{
g_return_val_if_fail (GIMP_IS_PATTERN (pattern), NULL);
- return gimp_temp_buf_create_buffer (pattern->mask, NULL);
+ return gimp_temp_buf_create_buffer (pattern->mask, NULL, FALSE);
}
diff --git a/app/gegl/gimp-gegl-utils.c b/app/gegl/gimp-gegl-utils.c
index 0ee4f2c..8c237fa 100644
--- a/app/gegl/gimp-gegl-utils.c
+++ b/app/gegl/gimp-gegl-utils.c
@@ -200,7 +200,8 @@ gimp_gegl_buffer_get_tiles (GeglBuffer *buffer)
GeglBuffer *
gimp_temp_buf_create_buffer (TempBuf *temp_buf,
- const Babl *format)
+ const Babl *format,
+ gboolean take_ownership)
{
GeglBuffer *buffer;
gint width, height, bytes;
@@ -217,11 +218,15 @@ gimp_temp_buf_create_buffer (TempBuf *temp_buf,
if (! format)
format = gimp_bpp_to_babl_format (bytes);
- buffer = gegl_buffer_linear_new_from_data (temp_buf_get_data (temp_buf),
- format,
- GIMP_GEGL_RECT (0, 0, width, height),
- width * bytes,
- NULL, NULL);
+ buffer =
+ gegl_buffer_linear_new_from_data (temp_buf_get_data (temp_buf),
+ format,
+ GIMP_GEGL_RECT (0, 0, width, height),
+ width * bytes,
+ take_ownership ?
+ (GDestroyNotify) temp_buf_free : NULL,
+ take_ownership ?
+ temp_buf : NULL);
g_object_set_data (G_OBJECT (buffer), "gimp-temp-buf", temp_buf);
diff --git a/app/gegl/gimp-gegl-utils.h b/app/gegl/gimp-gegl-utils.h
index 415b74b..2ff9058 100644
--- a/app/gegl/gimp-gegl-utils.h
+++ b/app/gegl/gimp-gegl-utils.h
@@ -39,7 +39,8 @@ GeglBuffer * gimp_tile_manager_create_buffer (TileManager *tm,
TileManager * gimp_gegl_buffer_get_tiles (GeglBuffer *buffer);
GeglBuffer * gimp_temp_buf_create_buffer (TempBuf *temp_buf,
- const Babl *format);
+ const Babl *format,
+ gboolean take_ownership);
TempBuf * gimp_gegl_buffer_get_temp_buf (GeglBuffer *buffer);
GeglBuffer * gimp_pixbuf_create_buffer (GdkPixbuf *pixbuf);
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index 23d72dd..e4c2073 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -831,10 +831,10 @@ gimp_brush_core_get_paint_buffer (GimpPaintCore *paint_core,
{
const Babl *format = gimp_drawable_get_format_with_alpha (drawable);
gint bytes = babl_format_get_bytes_per_pixel (format);
+ TempBuf *temp_buf;
- paint_core->paint_area = temp_buf_resize (paint_core->paint_area, bytes,
- x1, y1,
- (x2 - x1), (y2 - y1));
+ temp_buf = temp_buf_new ((x2 - x1), (y2 - y1), bytes,
+ 0, 0, NULL);
*paint_buffer_x = x1;
*paint_buffer_y = y1;
@@ -842,8 +842,8 @@ gimp_brush_core_get_paint_buffer (GimpPaintCore *paint_core,
if (paint_core->paint_buffer)
g_object_unref (paint_core->paint_buffer);
- paint_core->paint_buffer =
- gimp_temp_buf_create_buffer (paint_core->paint_area, format);
+ paint_core->paint_buffer = gimp_temp_buf_create_buffer (temp_buf, format,
+ TRUE);
return paint_core->paint_buffer;
}
@@ -951,8 +951,8 @@ gimp_brush_core_paste_canvas (GimpBrushCore *core,
pixel_region_init_temp_buf (&brush_maskPR, (TempBuf *) brush_mask,
off_x, off_y,
- paint_core->paint_area->width,
- paint_core->paint_area->height);
+ gegl_buffer_get_width (paint_core->paint_buffer),
+ gegl_buffer_get_height (paint_core->paint_buffer));
gimp_paint_core_paste (paint_core, &brush_maskPR, drawable,
brush_opacity,
@@ -997,8 +997,8 @@ gimp_brush_core_replace_canvas (GimpBrushCore *core,
pixel_region_init_temp_buf (&brush_maskPR, (TempBuf *) brush_mask,
off_x, off_y,
- paint_core->paint_area->width,
- paint_core->paint_area->height);
+ gegl_buffer_get_width (paint_core->paint_buffer),
+ gegl_buffer_get_height (paint_core->paint_buffer));
gimp_paint_core_replace (paint_core, &brush_maskPR, drawable,
brush_opacity,
diff --git a/app/paint/gimpconvolve.c b/app/paint/gimpconvolve.c
index 0ad1a64..9e86ee6 100644
--- a/app/paint/gimpconvolve.c
+++ b/app/paint/gimpconvolve.c
@@ -193,7 +193,7 @@ gimp_convolve_motion (GimpPaintCore *paint_core,
babl_format_get_bytes_per_pixel (format),
0, 0, NULL);
- convolve_buffer = gimp_temp_buf_create_buffer (convolve_temp, format);
+ convolve_buffer = gimp_temp_buf_create_buffer (convolve_temp, format, TRUE);
gegl_buffer_copy (gimp_drawable_get_buffer (drawable),
GIMP_GEGL_RECT (paint_buffer_x,
@@ -203,8 +203,6 @@ gimp_convolve_motion (GimpPaintCore *paint_core,
convolve_buffer,
GIMP_GEGL_RECT (0, 0, 0, 0));
- g_object_unref (convolve_buffer);
-
/* Convolve the region */
pixel_region_init_temp_buf (&tempPR, convolve_temp,
0, 0,
@@ -221,7 +219,7 @@ gimp_convolve_motion (GimpPaintCore *paint_core,
convolve->matrix, 3, convolve->matrix_divisor,
GIMP_NORMAL_CONVOL, TRUE);
- temp_buf_free (convolve_temp);
+ g_object_unref (convolve_buffer);
gimp_brush_core_replace_canvas (brush_core, drawable,
coords,
diff --git a/app/paint/gimpdodgeburn.c b/app/paint/gimpdodgeburn.c
index 9df66a9..fae0aff 100644
--- a/app/paint/gimpdodgeburn.c
+++ b/app/paint/gimpdodgeburn.c
@@ -238,12 +238,12 @@ gimp_dodge_burn_motion (GimpPaintCore *paint_core,
babl_format_get_bytes_per_pixel (orig_format),
0, 0, NULL);
- orig_buffer = gimp_temp_buf_create_buffer (orig_temp, orig_format);
+ orig_buffer = gimp_temp_buf_create_buffer (orig_temp, orig_format, TRUE);
+
gegl_buffer_copy (gimp_paint_core_get_orig_image (paint_core),
&orig_rect,
orig_buffer,
GIMP_GEGL_RECT (0, 0, 0, 0));
- g_object_unref (orig_buffer);
pixel_region_init_temp_buf (&srcPR, orig_temp,
0, 0, orig_rect.width, orig_rect.height);
@@ -252,6 +252,7 @@ gimp_dodge_burn_motion (GimpPaintCore *paint_core,
db_temp = temp_buf_new (orig_rect.width, orig_rect.height,
babl_format_get_bytes_per_pixel (orig_format),
0, 0, NULL);
+ db_buffer = gimp_temp_buf_create_buffer (db_temp, orig_format, TRUE);
pixel_region_init_temp_buf (&tempPR, db_temp,
0, 0, db_temp->width, db_temp->height);
@@ -259,12 +260,11 @@ gimp_dodge_burn_motion (GimpPaintCore *paint_core,
/* DodgeBurn the region */
gimp_lut_process (dodgeburn->lut, &srcPR, &tempPR);
- db_buffer = gimp_temp_buf_create_buffer (db_temp, orig_format);
+ g_object_unref (orig_buffer);
+
gegl_buffer_copy (db_buffer, NULL, paint_buffer, NULL);
g_object_unref (db_buffer);
- temp_buf_free (db_temp);
-
hardness_output = gimp_dynamics_get_output (dynamics,
GIMP_DYNAMICS_OUTPUT_HARDNESS);
diff --git a/app/paint/gimpheal.c b/app/paint/gimpheal.c
index 39c5c66..5ff5cb0 100644
--- a/app/paint/gimpheal.c
+++ b/app/paint/gimpheal.c
@@ -494,7 +494,8 @@ gimp_heal_motion (GimpSourceCore *source_core,
0, 0, NULL);
tmp = gimp_temp_buf_create_buffer (src_temp_buf,
- gimp_drawable_get_format_with_alpha (drawable));
+ gimp_drawable_get_format_with_alpha (drawable),
+ FALSE);
gegl_buffer_copy (src_buffer, src_rect,
tmp, GIMP_GEGL_RECT (0, 0, 0, 0));
@@ -508,7 +509,8 @@ gimp_heal_motion (GimpSourceCore *source_core,
dest_buffer =
gimp_temp_buf_create_buffer (dest_temp_buf,
- gimp_drawable_get_format_with_alpha (drawable));
+ gimp_drawable_get_format_with_alpha (drawable),
+ TRUE);
gegl_buffer_copy (gimp_drawable_get_buffer (drawable),
GIMP_GEGL_RECT (paint_buffer_x, paint_buffer_y,
@@ -528,7 +530,7 @@ gimp_heal_motion (GimpSourceCore *source_core,
don't do anything */
temp_buf_free (src_temp_buf);
- temp_buf_free (dest_temp_buf);
+ g_object_unref (dest_buffer);
return;
}
@@ -551,6 +553,8 @@ gimp_heal_motion (GimpSourceCore *source_core,
paint_area_width,
paint_area_height));
+ g_object_unref (dest_buffer);
+
/* replace the canvas with our healed data */
gimp_brush_core_replace_canvas (GIMP_BRUSH_CORE (paint_core), drawable,
coords,
diff --git a/app/paint/gimpink.c b/app/paint/gimpink.c
index 2061a90..53fb699 100644
--- a/app/paint/gimpink.c
+++ b/app/paint/gimpink.c
@@ -222,10 +222,10 @@ gimp_ink_get_paint_buffer (GimpPaintCore *paint_core,
{
const Babl *format = gimp_drawable_get_format_with_alpha (drawable);
gint bytes = babl_format_get_bytes_per_pixel (format);
+ TempBuf *temp_buf;
- paint_core->paint_area = temp_buf_resize (paint_core->paint_area, bytes,
- x1, y1,
- (x2 - x1), (y2 - y1));
+ temp_buf = temp_buf_new ((x2 - x1), (y2 - y1), bytes,
+ 0, 0, NULL);
*paint_buffer_x = x1;
*paint_buffer_y = y1;
@@ -233,8 +233,8 @@ gimp_ink_get_paint_buffer (GimpPaintCore *paint_core,
if (paint_core->paint_buffer)
g_object_unref (paint_core->paint_buffer);
- paint_core->paint_buffer =
- gimp_temp_buf_create_buffer (paint_core->paint_area, format);
+ paint_core->paint_buffer = gimp_temp_buf_create_buffer (temp_buf, format,
+ TRUE);
return paint_core->paint_buffer;
}
@@ -328,10 +328,10 @@ gimp_ink_motion (GimpPaintCore *paint_core,
/* draw the blob directly to the canvas_buffer */
pixel_region_init (&blob_maskPR,
gimp_gegl_buffer_get_tiles (paint_core->canvas_buffer),
- paint_core->paint_area->x,
- paint_core->paint_area->y,
- paint_core->paint_area->width,
- paint_core->paint_area->height,
+ paint_core->paint_buffer_x,
+ paint_core->paint_buffer_y,
+ gegl_buffer_get_width (paint_core->paint_buffer),
+ gegl_buffer_get_height (paint_core->paint_buffer),
TRUE);
render_blob (blob_to_render, &blob_maskPR);
@@ -339,10 +339,10 @@ gimp_ink_motion (GimpPaintCore *paint_core,
/* draw the paint_area using the just rendered canvas_buffer as mask */
pixel_region_init (&blob_maskPR,
gimp_gegl_buffer_get_tiles (paint_core->canvas_buffer),
- paint_core->paint_area->x,
- paint_core->paint_area->y,
- paint_core->paint_area->width,
- paint_core->paint_area->height,
+ paint_core->paint_buffer_x,
+ paint_core->paint_buffer_y,
+ gegl_buffer_get_width (paint_core->paint_buffer),
+ gegl_buffer_get_height (paint_core->paint_buffer),
FALSE);
gimp_paint_core_paste (paint_core, &blob_maskPR, drawable,
diff --git a/app/paint/gimppaintcore.c b/app/paint/gimppaintcore.c
index f123ec5..71734d6 100644
--- a/app/paint/gimppaintcore.c
+++ b/app/paint/gimppaintcore.c
@@ -553,12 +553,6 @@ gimp_paint_core_cleanup (GimpPaintCore *core)
core->canvas_buffer = NULL;
}
- if (core->paint_area)
- {
- temp_buf_free (core->paint_area);
- core->paint_area = NULL;
- }
-
if (core->paint_buffer)
{
g_object_unref (core->paint_buffer);
@@ -934,17 +928,18 @@ canvas_buffer_to_paint_area (GimpPaintCore *core)
PixelRegion maskPR;
/* combine the canvas buffer and the paint area */
- pixel_region_init_temp_buf (&srcPR, core->paint_area,
+ pixel_region_init_temp_buf (&srcPR,
+ gimp_gegl_buffer_get_temp_buf (core->paint_buffer),
0, 0,
- core->paint_area->width,
- core->paint_area->height);
+ gegl_buffer_get_width (core->paint_buffer),
+ gegl_buffer_get_height (core->paint_buffer));
pixel_region_init (&maskPR,
gimp_gegl_buffer_get_tiles (core->canvas_buffer),
- core->paint_area->x,
- core->paint_area->y,
- core->paint_area->width,
- core->paint_area->height,
+ core->paint_buffer_x,
+ core->paint_buffer_y,
+ gegl_buffer_get_width (core->paint_buffer),
+ gegl_buffer_get_height (core->paint_buffer),
FALSE);
/* apply the canvas buffer to the paint area */
@@ -961,10 +956,10 @@ paint_mask_to_canvas_buffer (GimpPaintCore *core,
/* combine the paint mask and the canvas buffer */
pixel_region_init (&srcPR,
gimp_gegl_buffer_get_tiles (core->canvas_buffer),
- core->paint_area->x,
- core->paint_area->y,
- core->paint_area->width,
- core->paint_area->height,
+ core->paint_buffer_x,
+ core->paint_buffer_y,
+ gegl_buffer_get_width (core->paint_buffer),
+ gegl_buffer_get_height (core->paint_buffer),
TRUE);
/* combine the mask to the canvas tiles */
@@ -980,10 +975,11 @@ paint_mask_to_paint_area (GimpPaintCore *core,
PixelRegion srcPR;
/* combine the canvas buf and the paint mask to the canvas buf */
- pixel_region_init_temp_buf (&srcPR, core->paint_area,
+ pixel_region_init_temp_buf (&srcPR,
+ gimp_gegl_buffer_get_temp_buf (core->paint_buffer),
0, 0,
- core->paint_area->width,
- core->paint_area->height);
+ gegl_buffer_get_width (core->paint_buffer),
+ gegl_buffer_get_height (core->paint_buffer));
/* apply the mask */
apply_mask_to_region (&srcPR, paint_maskPR, paint_opacity * 255.999);
diff --git a/app/paint/gimppaintcore.h b/app/paint/gimppaintcore.h
index 8251517..3c014e2 100644
--- a/app/paint/gimppaintcore.h
+++ b/app/paint/gimppaintcore.h
@@ -59,8 +59,7 @@ struct _GimpPaintCore
GeglBuffer *saved_proj_buffer; /* proj tiles which have been modified */
GeglBuffer *canvas_buffer; /* the buffer to paint the mask to */
- TempBuf *paint_area; /* the buffer to paint pixels to */
- GeglBuffer *paint_buffer; /* for now proxies paint_area */
+ GeglBuffer *paint_buffer; /* the buffer to paint pixels to */
gint paint_buffer_x;
gint paint_buffer_y;
diff --git a/app/paint/gimpsmudge.c b/app/paint/gimpsmudge.c
index 993e9f1..93fc33f 100644
--- a/app/paint/gimpsmudge.c
+++ b/app/paint/gimpsmudge.c
@@ -113,10 +113,10 @@ gimp_smudge_finalize (GObject *object)
{
GimpSmudge *smudge = GIMP_SMUDGE (object);
- if (smudge->accum_temp)
+ if (smudge->accum_buffer)
{
- temp_buf_free (smudge->accum_temp);
- smudge->accum_temp = NULL;
+ g_object_unref (smudge->accum_buffer);
+ smudge->accum_buffer = NULL;
}
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -145,10 +145,10 @@ gimp_smudge_paint (GimpPaintCore *paint_core,
break;
case GIMP_PAINT_STATE_FINISH:
- if (smudge->accum_temp)
+ if (smudge->accum_buffer)
{
- temp_buf_free (smudge->accum_temp);
- smudge->accum_temp = NULL;
+ g_object_unref (smudge->accum_buffer);
+ smudge->accum_buffer = NULL;
}
smudge->initialized = FALSE;
break;
@@ -164,13 +164,13 @@ gimp_smudge_start (GimpPaintCore *paint_core,
GimpPaintOptions *paint_options,
const GimpCoords *coords)
{
- GimpSmudge *smudge = GIMP_SMUDGE (paint_core);
- GeglBuffer *paint_buffer;
- gint paint_buffer_x;
- gint paint_buffer_y;
- GeglBuffer *accum_buffer;
- gint accum_size;
- gint x, y;
+ GimpSmudge *smudge = GIMP_SMUDGE (paint_core);
+ GeglBuffer *paint_buffer;
+ gint paint_buffer_x;
+ gint paint_buffer_y;
+ TempBuf *accum_temp;
+ gint accum_size;
+ gint x, y;
if (gimp_drawable_is_indexed (drawable))
return FALSE;
@@ -185,13 +185,14 @@ gimp_smudge_start (GimpPaintCore *paint_core,
gimp_smudge_accumulator_size (paint_options, &accum_size);
/* Allocate the accumulation buffer */
- smudge->accum_temp = temp_buf_new (accum_size, accum_size,
- gimp_drawable_bytes (drawable),
- 0, 0, NULL);
+ accum_temp = temp_buf_new (accum_size, accum_size,
+ gimp_drawable_bytes (drawable),
+ 0, 0, NULL);
- accum_buffer =
- gimp_temp_buf_create_buffer (smudge->accum_temp,
- gimp_drawable_get_format (drawable));
+ smudge->accum_buffer =
+ gimp_temp_buf_create_buffer (accum_temp,
+ gimp_drawable_get_format (drawable),
+ TRUE);
/* adjust the x and y coordinates to the upper left corner of the
* accumulator
@@ -219,7 +220,7 @@ gimp_smudge_start (GimpPaintCore *paint_core,
&pixel);
color = gimp_gegl_color_new (&pixel);
- gegl_buffer_set_color (accum_buffer, NULL, color);
+ gegl_buffer_set_color (smudge->accum_buffer, NULL, color);
g_object_unref (color);
}
@@ -229,13 +230,11 @@ gimp_smudge_start (GimpPaintCore *paint_core,
paint_buffer_y,
gegl_buffer_get_width (paint_buffer),
gegl_buffer_get_height (paint_buffer)),
- accum_buffer,
+ smudge->accum_buffer,
GIMP_GEGL_RECT (paint_buffer_x - x,
paint_buffer_y - y,
0, 0));
- g_object_unref (accum_buffer);
-
return TRUE;
}
@@ -256,7 +255,6 @@ gimp_smudge_motion (GimpPaintCore *paint_core,
GeglBuffer *paint_buffer;
gint paint_buffer_x;
gint paint_buffer_y;
- GeglBuffer *accum_buffer;
PixelRegion srcPR, tempPR;
gdouble fade_point;
gdouble opacity;
@@ -312,7 +310,8 @@ gimp_smudge_motion (GimpPaintCore *paint_core,
rate = (options->rate / 100.0) * dynamic_rate;
/* The tempPR will be the built up buffer (for smudge) */
- pixel_region_init_temp_buf (&tempPR, smudge->accum_temp,
+ pixel_region_init_temp_buf (&tempPR,
+ gimp_gegl_buffer_get_temp_buf (smudge->accum_buffer),
paint_buffer_x - x,
paint_buffer_y - y,
gegl_buffer_get_width (paint_buffer),
@@ -328,11 +327,7 @@ gimp_smudge_motion (GimpPaintCore *paint_core,
blend_region (&srcPR, &tempPR, &tempPR, ROUND (rate * 255.0));
- accum_buffer =
- gimp_temp_buf_create_buffer (smudge->accum_temp,
- gimp_drawable_get_format (drawable));
-
- gegl_buffer_copy (accum_buffer,
+ gegl_buffer_copy (smudge->accum_buffer,
GIMP_GEGL_RECT (paint_buffer_x - x,
paint_buffer_y - y,
gegl_buffer_get_width (paint_buffer),
@@ -340,8 +335,6 @@ gimp_smudge_motion (GimpPaintCore *paint_core,
paint_buffer,
GIMP_GEGL_RECT (0, 0, 0, 0));
- g_object_unref (accum_buffer);
-
hardness_output = gimp_dynamics_get_output (dynamics,
GIMP_DYNAMICS_OUTPUT_HARDNESS);
@@ -367,8 +360,8 @@ gimp_smudge_accumulator_coords (GimpPaintCore *paint_core,
{
GimpSmudge *smudge = GIMP_SMUDGE (paint_core);
- *x = (gint) coords->x - smudge->accum_temp->width / 2;
- *y = (gint) coords->y - smudge->accum_temp->height / 2;
+ *x = (gint) coords->x - gegl_buffer_get_width (smudge->accum_buffer) / 2;
+ *y = (gint) coords->y - gegl_buffer_get_height (smudge->accum_buffer) / 2;
}
static void
diff --git a/app/paint/gimpsmudge.h b/app/paint/gimpsmudge.h
index c4dfbee..e195307 100644
--- a/app/paint/gimpsmudge.h
+++ b/app/paint/gimpsmudge.h
@@ -39,7 +39,7 @@ struct _GimpSmudge
GimpBrushCore parent_instance;
gboolean initialized;
- TempBuf *accum_temp;
+ GeglBuffer *accum_buffer;
};
struct _GimpSmudgeClass
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]