X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Finigo%2Finigo.c;h=807d7e108785a6ce78aa0511d1043f2a853aa669;hb=c74f26c0ca3ddd0eba429c18ffee328cf193dd8a;hp=5c8e9b88982eff5d4fa20bafd43a6625b72b9ac9;hpb=efd5f25f6fe70f75f9787e9c7f2b53730ecf6048;p=melted diff --git a/src/inigo/inigo.c b/src/inigo/inigo.c index 5c8e9b8..807d7e1 100644 --- a/src/inigo/inigo.c +++ b/src/inigo/inigo.c @@ -66,7 +66,7 @@ static void transport_action( mlt_producer producer, char *value ) if ( time == last ) break; last = time; - fprintf( stderr, "%d: %d\n", i, time ); + fprintf( stderr, "%d: %d\n", i, (int)time ); } } break; @@ -111,8 +111,10 @@ static void transport_action( mlt_producer producer, char *value ) if ( producer != NULL ) { mlt_position position = mlt_producer_position( producer ); - mlt_producer_set_speed( producer, 0 ); - mlt_producer_seek( producer, position + 1 ); + if ( mlt_producer_get_speed( producer ) != 0 ) + mlt_producer_set_speed( producer, 0 ); + else + mlt_producer_seek( producer, position + 1 ); } break; case 'L': @@ -146,6 +148,33 @@ static mlt_consumer create_consumer( char *id, mlt_producer producer ) return consumer; } +#ifdef __DARWIN__ + +static void event_handling( mlt_producer producer, mlt_consumer consumer ) +{ + SDL_Event event; + + while ( SDL_PollEvent( &event ) ) + { + switch( event.type ) + { + case SDL_QUIT: + mlt_properties_set_int( MLT_PRODUCER_PROPERTIES( consumer ), "done", 1 ); + break; + + case SDL_KEYDOWN: + if ( event.key.keysym.unicode < 0x80 && event.key.keysym.unicode > 0 ) + { + char keyboard[ 2 ] = { event.key.keysym.unicode, 0 }; + transport_action( producer, keyboard ); + } + break; + } + } +} + +#endif + static void transport( mlt_producer producer, mlt_consumer consumer ) { mlt_properties properties = MLT_PRODUCER_PROPERTIES( producer ); @@ -175,10 +204,17 @@ static void transport( mlt_producer producer, mlt_consumer consumer ) int value = silent ? -1 : term_read( ); if ( value != -1 ) - transport_action( producer, ( char * )&value ); + { + char string[ 2 ] = { value, 0 }; + transport_action( producer, string ); + } + +#ifdef __DARWIN__ + event_handling( producer, consumer ); +#endif if ( !silent && mlt_properties_get_int( properties, "stats_off" ) == 0 ) - fprintf( stderr, "Current Position: %10d\r", mlt_producer_position( producer ) ); + fprintf( stderr, "Current Position: %10d\r", (int)mlt_producer_position( producer ) ); if ( silent ) nanosleep( &tm, NULL );