Use separate iterations indices for read/write when iterating.

(GeglBufferIterator doesn't support reusing the write handle for
reading)
parent eb7fb2bf
......@@ -146,7 +146,10 @@ gegl_operation_point_composer_process (GeglOperation *operation,
if ((result->width > 0) && (result->height > 0))
{
GeglBufferIterator *i = gegl_buffer_iterator_new (output, result, out_format, GEGL_BUFFER_WRITE);
gint read = input == output ? 0 : gegl_buffer_iterator_add (i, input, result, in_format, GEGL_BUFFER_READ);
gint read = /*output == input ? 0 :*/ gegl_buffer_iterator_add (i, input, result, in_format, GEGL_BUFFER_READ);
/* using separate read and write iterators for in-place ideally a single
* readwrite indice would be sufficient
*/
if (aux)
{
......
......@@ -85,7 +85,10 @@ gegl_operation_point_filter_process (GeglOperation *operation,
{
GeglBufferIterator *i = gegl_buffer_iterator_new (output, result, out_format, GEGL_BUFFER_WRITE);
gint read = output == input ? 0 : gegl_buffer_iterator_add (i, input, result, in_format, GEGL_BUFFER_READ);
gint read = /*output == input ? 0 :*/ gegl_buffer_iterator_add (i, input, result, in_format, GEGL_BUFFER_READ);
/* using separate read and write iterators for in-place ideally a single
* readwrite indice would be sufficient
*/
while (gegl_buffer_iterator_next (i))
point_filter_class->process (operation, i->data[read], i->data[0], i->length, &i->roi[0]);
}
......@@ -115,7 +118,6 @@ gboolean gegl_can_passthrough (GeglOperation *operation,
}
static gboolean gegl_operation_point_filter_op_process
(GeglOperation *operation,
GeglOperationContext *context,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment