Merge branch '8.6'
This commit is contained in:
commit
925667f8d3
@ -1,8 +1,11 @@
|
||||
23/12/17 started 8.7.0
|
||||
- add magicksave, save image with libMagick [dlemstra]
|
||||
|
||||
5/1/18 started 8.6.2
|
||||
- vips_sink_screen() keeps a ref to the input image ... stops a rare race
|
||||
|
||||
10/12/17 started 8.6.1
|
||||
- stop window new/free cycling .. faster zoom out on some large images in nip2
|
||||
- fix mmap window new/free cycling
|
||||
- fix some compiler warnings
|
||||
- remove the 64-image limit on bandary operations
|
||||
- better version date [bmwiedemann]
|
||||
@ -10,6 +13,8 @@
|
||||
- fix a memleak on error during jpeg buffer write [lovell]
|
||||
- fix misspelling of IPTC as IPCT [lovell]
|
||||
- seq could be set on small images opened in random-access mode [aferrero2707]
|
||||
- fix small memleak in dzsave [lovell]
|
||||
- small speedup for rgb->g [lovell]
|
||||
|
||||
15/4/17 started 8.6.0
|
||||
- supports fits images with leading non-image HDUs, thanks benepo
|
||||
|
@ -350,24 +350,19 @@ vips_col_scRGB2BW( int range, int *lut, float R, float G, float B,
|
||||
int Yi;
|
||||
float v;
|
||||
|
||||
/* RGB can be Nan, Inf etc. Throw those values out, they will break
|
||||
* our clipping.
|
||||
*
|
||||
* Don't use isnormal(), it is false for 0.0 and for subnormal
|
||||
* numbers.
|
||||
/* The usual ratio. We do this in linear space before we gamma.
|
||||
*/
|
||||
if( VIPS_ISNAN( R ) || VIPS_ISINF( R ) ||
|
||||
VIPS_ISNAN( G ) || VIPS_ISINF( G ) ||
|
||||
VIPS_ISNAN( B ) || VIPS_ISINF( B ) ) {
|
||||
Y = 0.2 * R + 0.7 * G + 0.1 * B;
|
||||
|
||||
/* Y can be Nan, Inf etc. Throw those values out, they will break
|
||||
* our clipping.
|
||||
*/
|
||||
if( VIPS_ISNAN( Y ) || VIPS_ISINF( Y ) ) {
|
||||
*g = 0;
|
||||
|
||||
return( -1 );
|
||||
}
|
||||
|
||||
/* The usual ratio. We do this in linear space before we gamma.
|
||||
*/
|
||||
Y = 0.2 * R + 0.7 * G + 0.1 * B;
|
||||
|
||||
/* Look up with a float index: interpolate between the nearest two
|
||||
* points.
|
||||
*
|
||||
|
@ -74,7 +74,8 @@
|
||||
* 18/8/17
|
||||
* - shut down the output earlier to flush zip output
|
||||
* 24/11/17
|
||||
* - output overlap-only tiles on edges, for better deepzoom spec
|
||||
* - output overlap-only tiles on edges for better deepzoom spec
|
||||
* compliance
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -179,7 +180,7 @@
|
||||
*/
|
||||
typedef struct _VipsGsfDirectory {
|
||||
struct _VipsGsfDirectory *parent;
|
||||
const char *name;
|
||||
char *name;
|
||||
|
||||
/* List of child directories, if any.
|
||||
*/
|
||||
@ -222,7 +223,7 @@ vips_gsf_tree_close( VipsGsfDirectory *tree )
|
||||
return( tree );
|
||||
}
|
||||
|
||||
g_object_unref( tree->out );
|
||||
VIPS_UNREF( tree->out );
|
||||
}
|
||||
|
||||
if( tree->container ) {
|
||||
@ -233,9 +234,13 @@ vips_gsf_tree_close( VipsGsfDirectory *tree )
|
||||
return( tree );
|
||||
}
|
||||
|
||||
g_object_unref( tree->container );
|
||||
VIPS_UNREF( tree->container );
|
||||
}
|
||||
|
||||
VIPS_FREEF( g_slist_free, tree->children );
|
||||
VIPS_FREE( tree->name );
|
||||
VIPS_FREE( tree );
|
||||
|
||||
return( NULL );
|
||||
}
|
||||
|
||||
|
@ -516,6 +516,7 @@ vips_leak( void )
|
||||
|
||||
fprintf( stderr, "%s", vips_buf_all( &buf ) );
|
||||
|
||||
vips__print_renders();
|
||||
|
||||
#ifdef DEBUG
|
||||
vips_buffer_dump_all();
|
||||
|
@ -234,6 +234,8 @@ render_free( Render *render )
|
||||
VIPS_FREEF( g_slist_free, render->dirty );
|
||||
VIPS_FREEF( g_hash_table_destroy, render->tiles );
|
||||
|
||||
VIPS_UNREF( render->in );
|
||||
|
||||
vips_free( render );
|
||||
|
||||
#ifdef VIPS_DEBUG_AMBER
|
||||
@ -608,6 +610,10 @@ render_new( VipsImage *in, VipsImage *out, VipsImage *mask,
|
||||
if( !(render = VIPS_NEW( NULL, Render )) )
|
||||
return( NULL );
|
||||
|
||||
/* render must hold a ref to in. This is dropped in render_free().
|
||||
*/
|
||||
g_object_ref( in );
|
||||
|
||||
render->ref_count = 1;
|
||||
render->ref_count_lock = vips_g_mutex_new();
|
||||
|
||||
@ -1126,7 +1132,19 @@ void
|
||||
vips__print_renders( void )
|
||||
{
|
||||
#ifdef VIPS_DEBUG_AMBER
|
||||
printf( "%d active renders\n", render_num_renders );
|
||||
if( render_num_renders > 0 )
|
||||
printf( "%d active renders\n", render_num_renders );
|
||||
#endif /*VIPS_DEBUG_AMBER*/
|
||||
printf( "%d dirty renders\n", g_slist_length( render_dirty_all ) );
|
||||
|
||||
if( render_dirty_lock ) {
|
||||
int n_dirty;
|
||||
|
||||
g_mutex_lock( render_dirty_lock );
|
||||
|
||||
n_dirty = g_slist_length( render_dirty_all );
|
||||
if( n_dirty > 0 )
|
||||
printf( "%d dirty renders\n", n_dirty );
|
||||
|
||||
g_mutex_unlock( render_dirty_lock );
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user