arrayjoin was making a region on every input image during startup, and
repeating for each thread (!!) so large arrays could be very expensive
to join.
Instead, make input regions on demand, and computre set of required
input images rather than searching for them.
See https://github.com/libvips/libvips/discussions/3247
In 8.13 we deprecated target_finish() (it did not have an error return)
to target_end() (now has an error return).
This PR makes target_end() also emit the "finish" signal for
compatibility with the previous API. ruby-vips, for example, looks for
on_finish() to close files.
See https://github.com/libvips/ruby-vips/issues/351
Thanks lucaskanashiro
* heifsave: make it possible to use a specific encoder
* argument label: switch to leading capital letter
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* add VipsForeignHeifEncoder enum
* correct type
* implement reviewer feedback
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* doc: avoid use of GCC's old syntax (`-Wgnu-designator`)
* doc: highlight shell commands
* doc: point the C++ docs to v8.12
* doc: avoid highlight on output matching bash keywords
* ADded optional output parameter to smartcrop to track the center of
attention.
* Added unit test.
* Added docs & updated changelog.
* Updated argument labels & types in documentation.
* nsgifload: avoid minimise after mapping
Not reliable on Windows.
* nsgifload: prefer use of `VIPS_FREEF` macro
* Improve `test_descriptors.c`
* Only build `test_descriptors` when targeting Linux
* add simple bash completion support
* add "completions" subdir to meson
* start extending completion to extra args
* file complete for every arg after 1
* add completion for enums, file, ints, doubles
* docs, try to improve directory completion
though dir completion is not working correctly, I'm not sure why
* compiles
* note changelog
and switch to FATSTRIP (much quicker)
* don't duplicate header fields in fitssave
be careful not to set records twice in save
see https://github.com/libvips/libvips/issues/3113
* tiny polish
* libnsgif: update script: Fix to handle dir with no patches
* libnsgif: Update to latest upstream
Fixes loading of broken gifs with truncated final frame.
* nsgifload: Call nsgif_data_complete after data scan
This allows libnsgif to distinguish between awaiting more
data, and a broken truncated GIF. In the latter case we
can display what we have.
* reimplement threadpool
just a set of threads that get recycled
"ninja test" passes and dzsave seems to work, though pytest fails for
some reason
* clean up threading code a bit
move base stuff into thread.c, so we have a simple
thread -> threadset -> threadpool
layering
* start trying to revert g_threadpool
based on the original commit
* working!
nice low systime again
still need to repply cnages to threadpool.c since 80e0cc3d1
* reapply fixes from master
so threadpool.c is now up to date
* rename VipsThread as VipsWorker
a bit less confusing
* use a semaphore to count workers in a pool
* tidy up
* formatting
* dynamic threadpool sizing
based on counting the number of blocked threads in each pool
it works, but the improvement is not great :(
* add "concurrency" metadata item
so operators can hint threadpool size (dzsave especially)
* don't use thinstrip for small images
* add RGB mode to openslide
since flatten was taking 20% of CPU time for dzsave
* fix up rgb mode
now actually works
* make the tile buffer per thread
in the new openslideload rgb mode
* fix dynamic pool downsize
* mild refactoring
* fix the buffer system
oops, turned it off by mistake
* all done!
* revise changelog
* Update libvips/iofuncs/threadset.c
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* Update libvips/iofuncs/threadset.c
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* LSan: add libMagickCore to suppression file
* Revert "Remove mutex lock for VipsThreadStartFn"
This reverts commit 41440491.
* add VIPS_MAX_THREADS
to set a hard limit on the threadset size
* Revert "Revert "Remove mutex lock for VipsThreadStartFn""
This reverts commit 77e8520966ba79194fff3b4e648bbd295cd5c260.
* remove sslock from sink.c
* move fixed threadpool build to init
not first use
* add some doc comments
* revert test suite threshold change
* add a test for MAX_THREADS
and move the test tmp/ area into the builddir
* limit VIPS_MAX_THREADS to sane values
* use tabs rather than spaces
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>