X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fomnplay.cpp;h=4a7542989fe8254fdfc10a720d58c88fcd29f671;hb=a0d2ee063233dc9e3388f0e51b7bccc20a1885a5;hp=5b3a77f59a21d9e314d6abd2caac9167597b7ec8;hpb=a8ef50e8b95436c3831b094ee3e731e12dd7c108;p=omnplay diff --git a/src/omnplay.cpp b/src/omnplay.cpp index 5b3a77f..4a75429 100644 --- a/src/omnplay.cpp +++ b/src/omnplay.cpp @@ -31,32 +31,10 @@ #include "omnplay.h" #include "ui.h" #include "opts.h" +#include "timecode.h" #include "omplrclnt.h" -static char* frames2tc( int f, float fps, char* buf ) -{ - int tc[4] = { 0, 0, 0, 0 }; - float d; - int t; - - if ( fps && f >= 0) - { - d = f / fps; - t = d; - - tc[0] = (d - t) * fps; - tc[1] = t % 60; t /= 60; - tc[2] = t % 60; t /= 60; - tc[3] = t % 24; - } - - sprintf(buf, "%.2d:%.2d:%.2d:%.2d", tc[3], tc[2], tc[1], tc[0]); - - return buf; -} - - static gboolean on_main_window_delete_event( GtkWidget *widget, GdkEvent *event, gpointer user_data ) { gtk_exit(0); @@ -197,6 +175,47 @@ static void* omnplay_thread_proc(void* data) return NULL; }; +static gboolean omnplay_button_click(omnplay_instance_t* app, control_buttons_t button) +{ + switch(button) + { + case BUTTON_PLAYLIST_ITEM_ADD: + case BUTTON_PLAYLIST_ITEM_DEL: + case BUTTON_PLAYLIST_ITEM_EDIT: + case BUTTON_PLAYLIST_LOAD: + omnplay_playlist_load(app); + break; + case BUTTON_PLAYLIST_SAVE: + omnplay_playlist_save(app); + break; + case BUTTON_PLAYLIST_BLOCK_SINGLE: + case BUTTON_PLAYLIST_BLOCK_LOOP: + case BUTTON_PLAYLIST_ITEM_UP: + case BUTTON_PLAYLIST_ITEM_DOWN: + case BUTTON_PLAYER_CUE: + case BUTTON_PLAYER_PLAY: + case BUTTON_PLAYER_PAUSE: + case BUTTON_PLAYER_STOP: + case BUTTON_LIBRARY_ADD: + case BUTTON_LIBRARY_REFRESH: + break; + }; + + return TRUE; +}; + +static gboolean on_button_click(GtkWidget *button, gpointer user_data) +{ + int i; + omnplay_instance_t* app = (omnplay_instance_t*)user_data; + + for(i = 1; i < BUTTON_LAST; i++) + if(app->buttons[i] == button) + return omnplay_button_click(app, (control_buttons_t)i); + + return FALSE; +}; + void omnplay_init(omnplay_instance_t* app) { int i; @@ -213,6 +232,15 @@ void omnplay_init(omnplay_instance_t* app) pthread_create(&app->players.item[i].thread, NULL, omnplay_thread_proc, &app->players.item[i]); }; + + /* create lock */ + pthread_mutex_init(&app->playlist.lock, NULL); + + /* attach buttons click */ + for(i = 1; i < BUTTON_LAST; i++) + gtk_signal_connect(GTK_OBJECT(app->buttons[i]), "clicked", + GTK_SIGNAL_FUNC( on_button_click), app ); + }; void omnplay_release(omnplay_instance_t* app) @@ -231,4 +259,7 @@ void omnplay_release(omnplay_instance_t* app) pthread_mutex_destroy(&app->players.item[i].lock); }; + + /* create lock */ + pthread_mutex_destroy(&app->playlist.lock); };