]> git.sesse.net Git - mlt/commitdiff
Revert Producer::set_speed and add Producer::pause.
authorDan Dennedy <dan@dennedy.org>
Tue, 28 Dec 2010 05:07:12 +0000 (21:07 -0800)
committerDan Dennedy <dan@dennedy.org>
Tue, 28 Dec 2010 05:07:12 +0000 (21:07 -0800)
The new Producer::pause contains the wait for consumer-sdl-paused.

src/mlt++/MltProducer.cpp
src/mlt++/MltProducer.h

index 172bc37c33c48393514db21bc21ddee9ec4e56a5..49ba11ae58dc0a77488491be68f81f54f6cc36b1 100644 (file)
@@ -123,16 +123,23 @@ int Producer::frame( )
 
 int Producer::set_speed( double speed )
 {
-       double current = get_speed();
+       return mlt_producer_set_speed( get_producer( ), speed );
+}
+
+int Producer::pause()
+{
        int result = 0;
-       Consumer consumer( ( mlt_consumer ) mlt_service_consumer( get_service( ) ) );
-       Event *event = consumer.setup_wait_for( "consumer-sdl-paused" );
-
-       if ( current != speed )
-               result = mlt_producer_set_speed( get_producer( ), speed );
-       if ( current != 0 && speed == 0 && consumer.is_valid() && !consumer.is_stopped() )
-               consumer.wait_for( event );
-       delete event;
+
+       if ( get_speed() != 0 )
+       {
+               Consumer consumer( ( mlt_consumer ) mlt_service_consumer( get_service( ) ) );
+               Event *event = consumer.setup_wait_for( "consumer-sdl-paused" );
+               
+               result = mlt_producer_set_speed( get_producer( ), 0 );
+               if ( result == 0 && consumer.is_valid() && !consumer.is_stopped() )
+                       consumer.wait_for( event );
+               delete event;
+       }
        
        return result;
 }
index 77615a79661c26169d83d40d1f31bbbd66f5ae53..dc0b03635a3c54b50b1e1b6223deaaffeb113e81 100644 (file)
@@ -55,6 +55,7 @@ namespace Mlt
                        int position( );
                        int frame( );
                        int set_speed( double speed );
+                       int pause( );
                        double get_speed( );
                        double get_fps( );
                        int set_in_and_out( int in, int out );