int main( int argc, char **argv )
{
Factory::init( NULL );
- Producer *producer = new Producer( argv[ 1 ] );
- if ( !producer->is_valid( ) )
- {
- cerr << "Can't construct producer for " << argv[ 1 ] << endl;
- return 0;
- }
- Consumer *consumer = new Consumer( "sdl" );
- consumer->set( "rescale", "none" );
- Filter *filter = new Filter( "greyscale" );
- filter->connect( *producer );
- consumer->connect( *filter );
- consumer->start( );
- struct timespec tm = { 1, 0 };
- while ( !consumer->is_stopped( ) )
- nanosleep( &tm, NULL );
- consumer->stop( );
- delete consumer;
- delete producer;
- delete filter;
- Factory::close( );
+ Producer producer( argv[ 1 ] );
+ Consumer consumer( "sdl" );
+ consumer.set( "rescale", "none" );
+ consumer.connect( producer );
+ Event *event = consumer.setup_wait_for( "consumer-stopped" );
+ consumer.start( );
+ consumer.wait_for( event, false );
return 0;
}