X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=mlt%2B%2B%2Fsrc%2FMltProperties.cpp;fp=mlt%2B%2B%2Fsrc%2FMltProperties.cpp;h=f6e39da89e85a8e5328bf372f91e07ed24d11a1d;hb=d0cb0f36fcf4d60c86835470822ee7463aa4b15e;hp=121ca15806e90dd96204a84e9cdae3b7f343335a;hpb=0caa0a91b0971439dfe00d0ed9bc05992b7dd609;p=melted diff --git a/mlt++/src/MltProperties.cpp b/mlt++/src/MltProperties.cpp index 121ca15..f6e39da 100644 --- a/mlt++/src/MltProperties.cpp +++ b/mlt++/src/MltProperties.cpp @@ -19,6 +19,7 @@ */ #include "MltProperties.h" +#include "MltEvent.h" using namespace Mlt; Properties::Properties( ) : @@ -187,3 +188,30 @@ int Properties::save( char *file ) } return error; } + +void Properties::listen( char *id, void *object, mlt_listener listener ) +{ + char key[ 128 ]; + mlt_event event = mlt_events_listen( get_properties( ), object, id, listener ); + if ( event != NULL ) + { + sprintf( key, "_%p", event ); + mlt_properties_set_data( get_properties( ), key, event, 0, ( mlt_destructor )mlt_event_close, NULL ); + } +} + +Event *Properties::setup_wait_for( char *id ) +{ + return new Event( mlt_events_setup_wait_for( get_properties( ), id ) ); +} + +void Properties::wait_for( Event *event, bool destroy ) +{ + mlt_events_wait_for( get_properties( ), event->get_event( ) ); + if ( destroy ) + { + mlt_events_close_wait_for( get_properties( ), event->get_event( ) ); + delete event; + } +} +