Service attach filters
[melted] / mlt++ / src / MltFilter.cpp
index 9fa0439..90a178e 100644 (file)
@@ -24,7 +24,6 @@
 using namespace Mlt;
 
 Filter::Filter( char *id, char *arg ) :
-       destroy( true ),
        instance( NULL )
 {
        if ( arg != NULL )
@@ -48,22 +47,31 @@ Filter::Filter( char *id, char *arg ) :
        }
 }
 
+Filter::Filter( Service &filter ) :
+       instance( NULL )
+{
+       if ( filter.type( ) == filter_type )
+       {
+               instance = ( mlt_filter )filter.get_service( );
+               inc_ref( );
+       }
+}
+
 Filter::Filter( Filter &filter ) :
-       destroy( false ),
        instance( filter.get_filter( ) )
 {
+       inc_ref( );
 }
 
 Filter::Filter( mlt_filter filter ) :
-       destroy( false ),
        instance( filter )
 {
+       inc_ref( );
 }
 
 Filter::~Filter( )
 {
-       if ( destroy )
-               mlt_filter_close( instance );
+       mlt_filter_close( instance );
 }
 
 mlt_filter Filter::get_filter( )