longer stall time for ahead-threads

we must stall for AGES occasionally, really the stall time is about
enforcing a certain thread ordering
This commit is contained in:
John Cupitt 2014-05-22 13:40:06 +01:00
parent c3caa595a2
commit 3a4569e99b
3 changed files with 26 additions and 5 deletions

23
TODO
View File

@ -1,3 +1,24 @@
- fix vipsthumbnail Chicago.png, again
$ vipsthumbnail Chicago.png
vips_shrink_build: shrinking 29257 x 4196 image to 128 x 18
vips_shrink_build: 228 x 228 block average
vips_shrink_gen: generating 128 x 10 at 0 x 0
shrink_gen: requesting 29184 x 228 at 0 x 0
vips_shrink_gen: generating 128 x 8 at 0 x 10
1 shrink_gen: requesting 29184 x 228 at 0 x 2280
shrink_gen: requesting 29184 x 228 at 0 x 228
shrink_gen: requesting 29184 x 228 at 0 x 456
shrink_gen: requesting 29184 x 228 at 0 x 684
shrink_gen: requesting 29184 x 228 at 0 x 912
shrink_gen: requesting 29184 x 228 at 0 x 1140
** VIPS:ERROR:vipspng.c:462:png2vips_generate: assertion failed: (r->top == read->y_pos)
why does line 1 ask for a block so far down?
- quickly wrap the useful bits of mosaicing/
@ -15,8 +36,6 @@
im__find_*overlap()
- fix vipsthumbnail Chicago.png, again
- can we use postbuild elsewhere? look at use of "preclose" / "written", etc.

View File

@ -73,7 +73,7 @@ vips_statistic_scan( VipsRegion *region,
VipsStatisticClass *class = VIPS_STATISTIC_GET_CLASS( statistic );
VipsRect *r = &region->valid;
int lsk = IM_REGION_LSKIP( region );
int lsk = VIPS_REGION_LSKIP( region );
int y;
VipsPel *p;

View File

@ -68,12 +68,14 @@
#include "pconversion.h"
/* Stall threads that run ahead for up to this long, in seconds.
/* Stall threads that run ahead for up to this long, in seconds. Normally they
* will be woken up long before this, once their data is ready. The timeout is
* just to prevent a total crash in the case of accidental deadlock.
*
* This has to be a long time: if we're trying to use all cores on a busy
* system, it could be ages until all the other threads get a chance to run.
*/
#define STALL_TIME (1.0)
#define STALL_TIME (60.0)
typedef struct _VipsSequential {
VipsConversion parent_instance;