better dint rules
We had some special cases coded for dhint inheritance, but they could fail in some edge cases. Revert to something simpler and more predictable. see https://github.com/libvips/libvips/issues/1810
This commit is contained in:
parent
6b2079bfd3
commit
801111a2fa
@ -1,5 +1,6 @@
|
|||||||
6/9/20 started 8.10.2
|
6/9/20 started 8.10.2
|
||||||
- update magicksave/load profile handling [kelilevi]
|
- update magicksave/load profile handling [kelilevi]
|
||||||
|
- better demand hint rules [kaas3000]
|
||||||
|
|
||||||
9/8/20 started 8.10.1
|
9/8/20 started 8.10.1
|
||||||
- fix markdown -> xml conversion in doc generation
|
- fix markdown -> xml conversion in doc generation
|
||||||
|
@ -297,25 +297,18 @@ vips__demand_hint_array( VipsImage *image,
|
|||||||
if( in[i]->dhint == VIPS_DEMAND_STYLE_ANY )
|
if( in[i]->dhint == VIPS_DEMAND_STYLE_ANY )
|
||||||
nany++;
|
nany++;
|
||||||
|
|
||||||
|
/* Find the most restrictive of all the hints available to us.
|
||||||
|
*
|
||||||
|
* We have tried to be smarter about this in the past -- for example,
|
||||||
|
* detecting all ANY inputs and ignoring the hint in this case, but
|
||||||
|
* there are inevitably odd cases which cause problems. For example,
|
||||||
|
* new_from_memory, resize, affine, write_to_memory would run with
|
||||||
|
* FATSTRIP.
|
||||||
|
*/
|
||||||
set_hint = hint;
|
set_hint = hint;
|
||||||
if( len == 0 )
|
for( i = 0; i < len; i++ )
|
||||||
/* No input images? Just set the requested hint. We don't
|
set_hint = (VipsDemandStyle) VIPS_MIN(
|
||||||
* force ANY, since the operation might be something like
|
(int) set_hint, (int) in[i]->dhint );
|
||||||
* tiled read of an EXR image, where we certainly don't want
|
|
||||||
* ANY.
|
|
||||||
*/
|
|
||||||
;
|
|
||||||
else if( nany == len )
|
|
||||||
/* Special case: if all the inputs are ANY, then output can
|
|
||||||
* be ANY regardless of what this function wants.
|
|
||||||
*/
|
|
||||||
set_hint = VIPS_DEMAND_STYLE_ANY;
|
|
||||||
else
|
|
||||||
/* Find the most restrictive of all the hints available to us.
|
|
||||||
*/
|
|
||||||
for( i = 0; i < len; i++ )
|
|
||||||
set_hint = (VipsDemandStyle) VIPS_MIN(
|
|
||||||
(int) set_hint, (int) in[i]->dhint );
|
|
||||||
|
|
||||||
image->dhint = set_hint;
|
image->dhint = set_hint;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user