Lot of operations do not correctly handle infinite input planes
After testing some filter operations with
$ gegl -- checkerboard the_op_here crop width=599 height=599
it appears that lot of them are not dealing correctly with infinite input planes (either by producing black output, running indefinitely or crashing).
The common way to fix such issue is by overriding the filter operation process and passing-through like in the gblur-1d operation
I suggest to handle this directly in the operation filter class with a virtual function:
gboolean (* need_finite_input_plane) (GeglOperation *operation);
Operations will implement it if needed and it will be taken into account in the gegl_operation_filter_process:
[...]
in_rect = gegl_operation_source_get_bounding_box (operation, "input");
if (in_rect && gegl_rectangle_is_infinite_plane (in_rect))
{
if (klass->need_finite_input_plane &&
klass->need_finite_input_plane (operation))
{
gpointer in = gegl_operation_context_get_object (context, "input");
gegl_operation_context_take_object (context, "output",
g_object_ref (G_OBJECT (in)));
return TRUE;
}
}
[...]