Commit Graph

205 Commits

Author SHA1 Message Date
Kleis Auke Wolthuizen 0629a5de7f
Ensure consistent formatting of `->format_table` (#3199) 2022-11-30 09:41:05 +00:00
Kleis Auke Wolthuizen 1040766b04
dzsave: add error handling for `vips_gsf_path()` (#3188)
It can return `NULL` when it exceeds the path limits.

See: https://github.com/kleisauke/net-vips/issues/184
2022-11-27 15:30:04 +00:00
John Cupitt 976db37f84
Revised threading system (#3105)
* 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>
2022-10-26 15:25:19 +01:00
John Cupitt fa4b80b74b earlier quit of dzsave on kill
We were only testing "killed" once for each strip of tiles. Check on each
tile as well to make set_kill() faster.

see https://github.com/kleisauke/net-vips/issues/179
2022-09-21 11:48:48 +01:00
Kleis Auke Wolthuizen e87c828aa5
dzsave: add missing include directive for errno/EEXIST (#3025)
Resolves: #3024.
2022-09-05 09:58:52 +01:00
Kleis Auke Wolthuizen a19f326d19
dzsave: improve compatibility with libgsf < 1.14.29 (#3017)
* Implement `GsfOutfileStdio` by ourselves

* Add missing `->root` init

* Fix styling

* Update ChangeLog
2022-08-30 17:10:38 +01:00
Kleis Auke Wolthuizen d546c81fa3
Fix `dzsave_target` for ZIP output (#2927) 2022-07-15 19:39:56 +01:00
John Cupitt 16e0182e52 fix dzsave_target on older libgsf
Older libgsf needs TRUE back from the GsfOutput seek method.

see https://github.com/libvips/libvips/issues/2878
2022-06-21 18:00:07 +01:00
John Cupitt e9414f8d8f fix build with older libgsf
build on libgsf without zip64 support was broken, thanks @remicollet

see https://github.com/libvips/libvips/issues/2878
2022-06-20 13:19:35 +01:00
Kleis Auke Wolthuizen bae0342d95
Update C++ binding and function list (#2851)
* Update C++ binding and function list

Also, start with a capital letter in descriptions whenever possible.

* Ensure `dzsave_target` is generated
2022-06-10 14:43:44 +01:00
John Cupitt 2ef1b198fb fix deprecation warning 2022-05-21 12:43:57 +01:00
John Cupitt a9d64bea54
add dzsave to a target (#2718)
* start adding dzsave to a target

made a thing for gsf to write to a target

* fix stray tabs in dzsave

* fix dzsave write to "."

Early versions of libgsf did not support writing to ".", so we had an ugly
workaround, but this should now be OK.

Fixing this ought to make write to target simple

* dzsave_target compiles

no idea if it works though

* seems to work now

creates stray 0 length files though, very odd

* fix stray files from dzsave

next: save to buffer is returning null

* fix buffer flush in dzsave

all tests pass!

* update changelog
2022-05-20 18:38:46 +01:00
John Cupitt 39e75e07a2 deprecate "properties", register ".szi" as a suff 2022-03-29 17:50:48 +01:00
Kleis Auke Wolthuizen 0337c09700
Cleanup gettext handling (#2695)
Use GLib's i18n support instead of copying and pasting that
logic into its own header. This deprecates the vips/intl.h
header in favour of glib/gi18n.h.
2022-02-27 15:27:28 +00:00
Kleis Auke Wolthuizen 50a74ceeec
Mark some functions and variables as static (#2691)
These are only used in the same file, and not exported.
2022-02-27 13:41:39 +00:00
John Cupitt 0d8056b8c5 fix a few small compiler warnings 2022-02-03 14:28:22 +00:00
Aaron d98a003008
dzsave.c: Remove trailing comma from IIIFv3 folder names (#2590)
Fixes #2589.

Signed-off-by: Aaron <admin@datahoarder.dev>
2021-12-21 09:43:48 +00:00
John Cupitt 0f3193b7f2
Add iiif3 (#2483)
* add iiif3 support to dzsave

some small things have changed from v2
2021-10-19 14:18:40 +01:00
John Cupitt fa6e403d30 tiny formatting improvement 2021-04-22 15:23:20 +01:00
John Cupitt c088097b50 block deprecation warnings from libgsf
with an uglu gcc progma
2020-11-29 14:41:19 +00:00
John Cupitt 6894159ad5 fix icc-profiles and dzsave --no-strip
We were not copying metadata down pyramid layers in dzsave, so
--no-strip didn't allow icc profiles on tiles.

Thanks altert

See https://github.com/libvips/libvips/issues/1879
2020-11-11 10:02:46 +00:00
John Cupitt dc88d6c1e1 fix dzsave iiif dimensions
dzsave in iiif mode could set info.json dimensions off by one

thanks Linden6

see https://github.com/libvips/libvips/issues/1818
2020-09-17 17:07:08 +01:00
Kleis Auke Wolthuizen 81cf52b6fa Fix a typo 2020-07-14 19:09:30 +02:00
John Cupitt ee4610ce18 fix a compiler warning 2020-07-14 12:56:47 +01:00
John Cupitt 5739ba12eb fix a few more function casts
see

https://github.com/libvips/libvips/pull/1697#issuecomment-657602404
2020-07-14 10:25:35 +01:00
Kleis Auke Wolthuizen 9246094033 Fix function pointer cast issues
It is undefined behavior in C and C++ to cast a function pointer
to another type and call it that way. This does work in most native
platforms, however, despite it being UB, but in WASM it can fail.

See:
https://emscripten.org/docs/porting/guidelines/function_pointer_issues.html
2020-06-30 13:35:41 +02:00
John Cupitt 489810989e Merge branch '8.9' 2020-04-24 19:32:40 +01:00
John Cupitt efd62acccd better iiif tile naming
We were clipping edge tiles against the size of the scaled up layer.
Instead, clip against the size of the top level image.

See https://github.com/libvips/libvips/issues/1621
2020-04-24 19:29:35 +01:00
John Cupitt df6ff62cde add @id arg to dzsave
So you can now set the base of the id property in info.json in IIIF
output. Thanks regisrob.

See https://github.com/libvips/libvips/issues/1531
2020-01-24 17:12:46 +00:00
John Cupitt 767c87d6e6 better iiif json
Change "scalefactor" to "scaleFactor", thanks regisrob.

See https://github.com/libvips/libvips/issues/1530
2020-01-24 16:28:52 +00:00
John Cupitt 4b0c2924ab fix refleak in dzsave 2019-12-21 04:46:16 +00:00
John Cupitt 686829166d fix some more metadata updates
some more minor cases picked up by the test suite
2019-11-30 12:11:23 +00:00
John Cupitt 1e4edf2f06 formatting in dzsave.c 2019-11-19 08:54:23 +00:00
John Cupitt 17b994419b move ppm save into the class
no separate save function now
2019-11-15 10:23:45 +00:00
John Cupitt 55024c71ce
Merge branch 'master' into add-stream-object 2019-11-12 14:08:02 +00:00
John Cupitt 3ba0b285d4 switch to GDateTime 2019-11-11 15:14:04 +00:00
John Cupitt 144a9c48f9 set name in info.json 2019-11-11 15:05:51 +00:00
John Cupitt 74519a230b clean up iiif output a bit
better info.json, but still not support for the full/ directory

see https://github.com/libvips/libvips/issues/1465
2019-11-11 13:38:58 +00:00
John Cupitt f499cefb0e add iiif layout to dzsave 2019-11-09 20:40:39 +00:00
John Cupitt ed6b26fcb1 paste in various fixes from Kleis 2019-10-28 08:51:47 +00:00
John Cupitt 552043c2c8 oop name mixup 2019-10-28 08:05:15 +00:00
John Cupitt 70a83a273d fix with older glib 2019-10-28 07:36:19 +00:00
John Cupitt 8eeb415b09 Merge branch 'master' into add-stream-object 2019-10-28 05:10:11 +00:00
John Cupitt ba0100eb13 revise decode/unminimise use 2019-10-28 05:04:04 +00:00
John Cupitt 8337e17428 add no_strip option to dzsave
it's sometimes useful to have pyramid tiles with ICC profiles

see https://github.com/libvips/libvips/issues/1451
2019-10-21 16:46:20 +01:00
John Cupitt 080ab87d37 Merge branch 'master' into HEAD 2019-04-11 16:18:39 +01:00
John Cupitt 33d90b5e26 only enable sanity checks in debug mode
We had a couple of sanity checks always on. As a result, libvips could
get slow for large pipelines.

Move them into g_assert().
2019-03-01 13:01:08 +00:00
John Cupitt 4af242b599 fix travis compiler warnings
- older libpng don't have consts decls for some set/get funcs
- use g_ascii_strcasecmp() on program text strings (instead of strcasecmp)
2019-02-20 12:49:59 +00:00
John Cupitt b9c3dcd274 fix dzsave skip_blanks default
the default value was not being declared correctly [felixbuenemann]

see https://github.com/libvips/libvips/issues/1185#issuecomment-450427889
2018-12-28 22:23:15 +00:00
John Cupitt 74ee68fd79 use -1 for do-nothing
so that users can have skip-only-exact-blanks

see https://github.com/libvips/libvips/issues/1185#issuecomment-449115143
2018-12-21 14:08:54 +00:00