X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fomnplay.cpp;h=d460135026002b7e79464d43bc23850862100f06;hb=0eacb2babbab14c5318e883963073b32079a9aff;hp=55358283cf1c3fc75b3811ca7a7ffd2511e59b5f;hpb=2fa18b4bcda04deff180348cf675f571f79aad17;p=melted_gui diff --git a/src/omnplay.cpp b/src/omnplay.cpp index 5535828..d460135 100644 --- a/src/omnplay.cpp +++ b/src/omnplay.cpp @@ -39,10 +39,64 @@ #include "omplrclnt.h" +int omnplay_get_content(omnplay_instance_t* app, playlist_item_t *items, int limit, + omnplay_get_content_cb_proc proc, void* data) +{ + int r, c = 0; + OmPlrClipInfo clip_info; + char clip_name[omPlrMaxClipDirLen]; + + pthread_mutex_lock(&app->players.lock); + + r = OmPlrClipGetFirst((OmPlrHandle)app->players.item[0].handle, clip_name, sizeof(clip_name)); + for(; c < limit && !r;) + { + /* get clip info */ + clip_info.maxMsTracks = 0; + clip_info.size = sizeof(clip_info); + + r = OmPlrClipGetInfo((OmPlrHandle)app->players.item[0].handle, clip_name, &clip_info); + + if(!r) + { + /* copy item props */ + strncpy(items[c].id, clip_name, PATH_MAX); + items[c].in = clip_info.firstFrame; + items[c].dur = clip_info.lastFrame - clip_info.firstFrame; + + /* callback */ + pthread_mutex_unlock(&app->players.lock); + if(proc) + proc(app, &items[c], data); + pthread_mutex_lock(&app->players.lock); + + c++; + }; + + r = OmPlrClipGetNext((OmPlrHandle)app->players.item[0].handle, clip_name, sizeof(clip_name)); + }; + + pthread_mutex_unlock(&app->players.lock); + + return c; +}; + + static gboolean on_main_window_delete_event( GtkWidget *widget, GdkEvent *event, gpointer user_data ) { - gtk_exit(0); - return TRUE; + g_print ("delete event occurred [start]\n"); + gdk_threads_leave(); + omnplay_release((omnplay_instance_t*)user_data); + gdk_threads_enter(); + g_print ("delete event occurred [finish]\n"); + + return FALSE; +} + +static void on_main_window_destroy( GtkWidget *widget, gpointer user_data ) +{ + g_print ("destroy occurred\n"); + gtk_main_quit(); } omnplay_instance_t* omnplay_create(int argc, char** argv) @@ -951,9 +1005,12 @@ void omnplay_init(omnplay_instance_t* app) pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - gtk_signal_connect( GTK_OBJECT( app->window ), "destroy", + gtk_signal_connect( GTK_OBJECT( app->window ), "delete-event", GTK_SIGNAL_FUNC(on_main_window_delete_event), app); + gtk_signal_connect( GTK_OBJECT( app->window ), "destroy", + GTK_SIGNAL_FUNC(on_main_window_destroy), app); + gtk_widget_add_events(app->playlist_grid, GDK_BUTTON_PRESS_MASK); gtk_signal_connect(GTK_OBJECT(app->playlist_grid), "key-press-event", GTK_SIGNAL_FUNC(on_playlist_grid_key), app);