[gegl] buffer: in gegl_buffer_get(), allow NULL dest_buf if rect is empty
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] buffer: in gegl_buffer_get(), allow NULL dest_buf if rect is empty
- Date: Tue, 22 Oct 2019 11:14:01 +0000 (UTC)
commit ab046eed30a3f1d9a2cc9509feea967c63dd0918
Author: Ell <ell_se yahoo com>
Date: Tue Oct 22 14:11:00 2019 +0300
buffer: in gegl_buffer_get(), allow NULL dest_buf if rect is empty
In gegl_buffer_get(), don't raise a CRITICAL when dest_buf is NULL,
if the requested rect is empty. See issue #211.
gegl/buffer/gegl-buffer-access.c | 30 +++++++++++-------------------
1 file changed, 11 insertions(+), 19 deletions(-)
---
diff --git a/gegl/buffer/gegl-buffer-access.c b/gegl/buffer/gegl-buffer-access.c
index 600b28925..13e0b38b2 100644
--- a/gegl/buffer/gegl-buffer-access.c
+++ b/gegl/buffer/gegl-buffer-access.c
@@ -2030,17 +2030,23 @@ _gegl_buffer_get_unlocked (GeglBuffer *buffer,
g_return_if_fail (scale > 0.0f);
+ if (! rect && GEGL_FLOAT_EQUAL (scale, 1.0))
+ rect = &buffer->extent;
- if (format == NULL)
+ g_return_if_fail (rect != NULL);
+
+ if (gegl_rectangle_is_empty (rect))
+ return;
+
+ g_return_if_fail (dest_buf != NULL);
+
+ if (! format)
format = buffer->soft_format;
if (gegl_buffer_ext_flush)
- {
- gegl_buffer_ext_flush (buffer, rect);
- }
+ gegl_buffer_ext_flush (buffer, rect);
if (scale == 1.0 &&
- rect &&
rect->width == 1)
{
if (rect->height == 1)
@@ -2071,19 +2077,6 @@ _gegl_buffer_get_unlocked (GeglBuffer *buffer,
return;
}
- if (!rect && GEGL_FLOAT_EQUAL (scale, 1.0))
- {
- gegl_buffer_iterate_read_dispatch (buffer, &buffer->extent, dest_buf,
- rowstride, format, 0, repeat_mode);
- return;
- }
-
- g_return_if_fail (rect);
- if (rect->width == 0 ||
- rect->height == 0)
- {
- return;
- }
if (GEGL_FLOAT_EQUAL (scale, 1.0))
{
gegl_buffer_iterate_read_dispatch (buffer, rect, dest_buf, rowstride,
@@ -2349,7 +2342,6 @@ gegl_buffer_get (GeglBuffer *buffer,
GeglAbyssPolicy repeat_mode)
{
g_return_if_fail (GEGL_IS_BUFFER (buffer));
- g_return_if_fail (dest_buf);
gegl_buffer_lock (buffer);
_gegl_buffer_get_unlocked (buffer, scale, rect, format, dest_buf, rowstride, repeat_mode);
gegl_buffer_unlock (buffer);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]