Merge remote-tracking branch 'origin/7.26'

Conflicts:
	ChangeLog
	configure.in
	libvips/include/vips/vips.h
	libvips/include/vips/vips7compat.h
	libvips/iofuncs/image.c
	libvips/iofuncs/init.c
	po/vips7.pot
This commit is contained in:
John Cupitt 2011-10-11 21:49:06 +01:00
commit b948f17c02
6 changed files with 26 additions and 2501 deletions

View File

@ -29,7 +29,7 @@ PACKAGE=vips
# interface changes not backwards compatible?: reset age to 0 # interface changes not backwards compatible?: reset age to 0
LIBRARY_CURRENT=30 LIBRARY_CURRENT=30
LIBRARY_REVISION=2 LIBRARY_REVISION=3
LIBRARY_AGE=15 LIBRARY_AGE=15
AM_INIT_AUTOMAKE($PACKAGE,$VERSION) AM_INIT_AUTOMAKE($PACKAGE,$VERSION)

View File

@ -159,7 +159,7 @@ extern "C" {
#define im_invalidate vips_image_invalidate_all #define im_invalidate vips_image_invalidate_all
#define im_isfile vips_image_isfile #define im_isfile vips_image_isfile
#define im_printdesc( I ) vips_object_print( VIPS_OBJECT( I ) ) #define im_printdesc( I ) vips_object_print( VIPS_OBJECT( I ) )
#define im_openout( F ) vips_image_new_from_file( F, "w" ) #define im_openout( F ) vips_image_new_mode( F, "w" )
#define im_setbuf( F ) vips_image_new( "t" ) #define im_setbuf( F ) vips_image_new( "t" )
#define im_initdesc( image, \ #define im_initdesc( image, \
@ -537,6 +537,10 @@ int im_copy_morph( VipsImage *in, VipsImage *out,
int im_copy_swap( VipsImage *in, VipsImage *out ); int im_copy_swap( VipsImage *in, VipsImage *out );
int im_copy_native( VipsImage *in, VipsImage *out, gboolean is_msb_first ); int im_copy_native( VipsImage *in, VipsImage *out, gboolean is_msb_first );
/* ruby-vips uses this
*/
#define vips_class_map_concrete_all vips_class_map_all
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /*__cplusplus*/ #endif /*__cplusplus*/

View File

@ -268,7 +268,6 @@ vips_init( const char *argv0 )
} }
/* Call this before vips stuff that uses stuff we need to have inited. /* Call this before vips stuff that uses stuff we need to have inited.
* Fallback initialisation.
*/ */
void void
vips_check_init( void ) vips_check_init( void )

View File

@ -1026,6 +1026,8 @@ vips_object_real_new_from_string( const char *string )
{ {
GType type; GType type;
vips_check_init();
/* The main arg selects the subclass. /* The main arg selects the subclass.
*/ */
if( !(type = vips_type_find( "VipsObject", string )) ) if( !(type = vips_type_find( "VipsObject", string )) )
@ -1425,6 +1427,8 @@ vips_object_new( GType type, VipsObjectSetArguments set, void *a, void *b )
{ {
VipsObject *object; VipsObject *object;
vips_check_init();
object = VIPS_OBJECT( g_object_new( type, NULL ) ); object = VIPS_OBJECT( g_object_new( type, NULL ) );
if( set && set( object, a, b ) ) { if( set && set( object, a, b ) ) {
@ -1685,14 +1689,22 @@ vips_class_map_all( GType type, VipsClassMap fn, void *a )
{ {
void *result; void *result;
/* We never unref this ref, but we never unload classes /* We can't instantiate abstract classes.
* anyway, so so what.
*/ */
if( !(result = fn( VIPS_OBJECT_CLASS( g_type_class_ref( type ) ), a )) ) if( !G_TYPE_IS_ABSTRACT( type ) ) {
result = vips_type_map( type, /* We never unref this ref, but we never unload classes
(VipsTypeMap2) vips_class_map_all, fn, a ); * anyway, so so what.
*/
if( (result = fn(
VIPS_OBJECT_CLASS( g_type_class_ref( type ) ), a )) )
return( result );
}
return( result ); if( (result = vips_type_map( type,
(VipsTypeMap2) vips_class_map_all, fn, a )) )
return( result );
return( NULL );
} }
/* How deeply nested is a class ... used to indent class lists. /* How deeply nested is a class ... used to indent class lists.

View File

@ -214,6 +214,8 @@ vips_operation_new( const char *name )
GType type; GType type;
VipsOperation *operation; VipsOperation *operation;
vips_check_init();
if( !(type = vips_type_find( "VipsOperation", name )) ) if( !(type = vips_type_find( "VipsOperation", name )) )
return( NULL ); return( NULL );
operation = VIPS_OPERATION( g_object_new( type, NULL ) ); operation = VIPS_OPERATION( g_object_new( type, NULL ) );

File diff suppressed because it is too large Load Diff