• Ell's avatar
    operation, transform: use indirect input buffer on main thread as well · 8a5dd582
    Ell authored
    In the various GeglOperation subclasses that use a per-thread
    indirect input-buffer, backed by the actual input buffer, during
    multithreaded processing, use an indirect buffer for the main
    thread as well, instead of using the input buffer directly
    (unless the main thread processes the entire output).
    
    This avoids a deadlock when multiple threads gegl_buffer_copy()
    from their input buffer to the output buffer concurrently: if a
    worker thread acquires both the (indirect) input-buffer and output-
    buffer locks, while the main thread acquires the (direct) input-
    buffer lock and waits on the output-buffer lock, as soon as the
    GeglTileBackendBuffer of the worker-thread's input buffer forwards
    a command to the underlying input buffer, it will deadlock while
    waiting for the input-buffer's lock (which is held by the main
    thread).  See issue #157.
    
    Furthermore, this should reduce contention over the underlying
    input buffer between the main thread and the worker threads.
    8a5dd582
Name
Last commit
Last update
..
.gitignore Loading commit data...
Makefile.am Loading commit data...
gegl-extension-handler.c Loading commit data...
gegl-extension-handler.h Loading commit data...
gegl-operation-area-filter.c Loading commit data...
gegl-operation-area-filter.h Loading commit data...
gegl-operation-composer.c Loading commit data...
gegl-operation-composer.h Loading commit data...
gegl-operation-composer3.c Loading commit data...
gegl-operation-composer3.h Loading commit data...
gegl-operation-context-private.h Loading commit data...
gegl-operation-context.c Loading commit data...
gegl-operation-context.h Loading commit data...
gegl-operation-filter.c Loading commit data...
gegl-operation-filter.h Loading commit data...
gegl-operation-handlers-private.h Loading commit data...
gegl-operation-handlers.c Loading commit data...
gegl-operation-handlers.h Loading commit data...
gegl-operation-meta-json.c Loading commit data...
gegl-operation-meta-json.h Loading commit data...
gegl-operation-meta.c Loading commit data...
gegl-operation-meta.h Loading commit data...
gegl-operation-point-composer.c Loading commit data...
gegl-operation-point-composer.h Loading commit data...
gegl-operation-point-composer3.c Loading commit data...
gegl-operation-point-composer3.h Loading commit data...
gegl-operation-point-filter.c Loading commit data...
gegl-operation-point-filter.h Loading commit data...
gegl-operation-point-render.c Loading commit data...
gegl-operation-point-render.h Loading commit data...
gegl-operation-private.h Loading commit data...
gegl-operation-property-keys.c Loading commit data...
gegl-operation-property-keys.h Loading commit data...
gegl-operation-sink.c Loading commit data...
gegl-operation-sink.h Loading commit data...
gegl-operation-source.c Loading commit data...
gegl-operation-source.h Loading commit data...
gegl-operation-temporal.c Loading commit data...
gegl-operation-temporal.h Loading commit data...
gegl-operation.c Loading commit data...
gegl-operation.h Loading commit data...
gegl-operations.c Loading commit data...
gegl-operations.h Loading commit data...