X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Finigo%2Finigo.c;h=291e1a4c9917c5ba860c0189122a8d6d503d1fbf;hb=3719f0ab8e239e0ddb38eb758bb745d11880787d;hp=e97202ef1b8a9f5a064811ac91557a8f2561b7a0;hpb=c761c6d9db6ff61191717f44ea44fb0c9b6af535;p=melted diff --git a/src/inigo/inigo.c b/src/inigo/inigo.c index e97202e..291e1a4 100644 --- a/src/inigo/inigo.c +++ b/src/inigo/inigo.c @@ -5,6 +5,10 @@ #include +#ifdef __DARWIN__ +#include +#endif + #include "io.h" static void transport_action( mlt_producer producer, char *value ) @@ -148,6 +152,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 ); @@ -177,7 +208,14 @@ 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", (int)mlt_producer_position( producer ) );