Clean up and border preservation
[melted] / src / framework / mlt_factory.c
index dee338e..38ac605 100644 (file)
@@ -65,6 +65,7 @@ int mlt_factory_init( char *prefix )
                mlt_properties_set_or_default( global_properties, "MLT_NORMALISATION", getenv( "MLT_NORMALISATION" ), "PAL" );
                mlt_properties_set_or_default( global_properties, "MLT_PRODUCER", getenv( "MLT_PRODUCER" ), "fezzik" );
                mlt_properties_set_or_default( global_properties, "MLT_CONSUMER", getenv( "MLT_CONSUMER" ), "sdl" );
+               mlt_properties_set( global_properties, "MLT_TEST_CARD", getenv( "MLT_TEST_CARD" ) );
 
                // Create the object list.
                object_list = mlt_properties_new( );
@@ -174,6 +175,16 @@ mlt_consumer mlt_factory_consumer( char *service, void *input )
        return obj;
 }
 
+/** Register an object for clean up.
+*/
+
+void mlt_factory_register_for_clean_up( void *ptr, mlt_destructor destructor )
+{
+       char unique[ 256 ];
+       sprintf( unique, "%08d", mlt_properties_count( global_properties ) );
+       mlt_properties_set_data( global_properties, unique, ptr, 0, destructor, NULL );
+}
+
 /** Close the factory.
 */
 
@@ -185,8 +196,8 @@ void mlt_factory_close( )
                mlt_repository_close( filters );
                mlt_repository_close( transitions );
                mlt_repository_close( consumers );
-               mlt_properties_close( object_list );
                mlt_properties_close( global_properties );
+               mlt_properties_close( object_list );
                free( mlt_prefix );
                mlt_prefix = NULL;
                mlt_pool_close( );