--- CV/CV.xs 2021/11/28 23:26:51 1.63 +++ CV/CV.xs 2023/03/21 00:06:49 1.66 @@ -305,6 +305,9 @@ PROTOTYPES: ENABLE +void +_exit (int code) + # calculate the common prefix length of two strings # missing function in perl. really :) int @@ -591,11 +594,18 @@ size_t avail_in = SvCUR (image_data); const char *error = 0; JxlDecoderStatus status; + static void *runner_cache; void *runner = 0; - struct bmff_box box; RETVAL = 0; + if (runner_cache) + runner = runner_cache; + else + runner = JxlThreadParallelRunnerCreate (0, JxlThreadParallelRunnerDefaultNumWorkerThreads ()); + + runner_cache = 0; + perlinterp_release (); dec = JxlDecoderCreate (0); @@ -604,8 +614,6 @@ if (!dec) goto done; - runner = JxlThreadParallelRunnerCreate (0, JxlThreadParallelRunnerDefaultNumWorkerThreads ()); - status = JxlDecoderSetParallelRunner (dec, JxlThreadParallelRunner, runner); error = "JxlDecoderSetParallelRunner failed"; if (status != JXL_DEC_SUCCESS) @@ -690,10 +698,12 @@ if (dec) JxlDecoderDestroy (dec); - if (runner) + perlinterp_acquire (); + + if (runner_cache) JxlThreadParallelRunnerDestroy (runner); - perlinterp_acquire (); + runner_cache = runner; if (error) {