X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Finstance.c;h=05400b3574e2def9c5ae9a06fc98cf94502bef05;hb=07c6d84a23c9043e2334987fc8533f68e5e23183;hp=62d955b8a4e29b764e222bc056a61108151d3886;hpb=888b62e244add3b4b495427cd3e789b9e4dca70e;p=melted_gui diff --git a/src/instance.c b/src/instance.c index 62d955b..05400b3 100644 --- a/src/instance.c +++ b/src/instance.c @@ -36,6 +36,78 @@ #include "ui.h" #include "opts.h" #include "timecode.h" +#include "player.h" +#include "library.h" + +GtkTargetEntry drag_targets[] = { { (char*) "application/playlist_item_t", 0, 0 } }; + +gboolean instance_button_click(instance_t* app, control_buttons_t button) +{ +#if 0 + switch(button) + { + case BUTTON_PLAYLIST_ITEM_ADD: + omnplay_playlist_item_add(app, 0); + break; + case BUTTON_PLAYLIST_ITEM_DEL: + omnplay_playlist_item_del(app); + break; + case BUTTON_PLAYLIST_ITEM_EDIT: + omnplay_playlist_item_edit(app); + break; + 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: + omnplay_playlist_block(app, button); + break; + case BUTTON_PLAYLIST_ITEM_UP: + omnplay_playlist_item_swap(app, -1); + break; + case BUTTON_PLAYLIST_ITEM_DOWN: + omnplay_playlist_item_swap(app, +1); + break; + case BUTTON_PLAYER_CUE: + case BUTTON_PLAYER_PLAY: + case BUTTON_PLAYER_PAUSE: + case BUTTON_PLAYER_STOP: + omnplay_ctl(app, button); + break; + case BUTTON_LIBRARY_ADD: + omnplay_library_add(app, 0); + break; + case BUTTON_LIBRARY_REFRESH: + omnplay_library_refresh(app); + break; + case BUTTON_LIBRARY_FIND: + omnplay_library_search(app, 0); + break; + case BUTTON_LIBRARY_FIND_NEXT: + omnplay_library_search(app, 1); + break; + case BUTTON_PLAYLIST_RELINK: + omnplay_playlist_relink(app); + break; + }; +#endif + return TRUE; +}; + +static gboolean on_button_click(GtkWidget *button, gpointer user_data) +{ + int i; + instance_t* app = (instance_t*)user_data; + + for(i = 1; i < BUTTON_LAST; i++) + if(app->buttons[i] == button) + return instance_button_click(app, (control_buttons_t)i); + + return FALSE; +}; static gboolean on_main_window_delete_event( GtkWidget *widget, GdkEvent *event, gpointer user_data ) { @@ -115,11 +187,9 @@ void instance_init(instance_t* app) pthread_mutex_init(&app->library.lock, &attr); pthread_mutexattr_destroy(&attr); -#if 0 - /* create a status thread */ + /* run unit monitoring threads */ for(i = 0; i < app->players.count; i++) - app->players.item[i].thread = g_thread_create( - omnplay_thread_proc, &app->players.item[i], TRUE, NULL); + player_run(app, i); /* attach buttons click */ for(i = 1; i < BUTTON_LAST; i++) @@ -127,8 +197,7 @@ void instance_init(instance_t* app) GTK_SIGNAL_FUNC( on_button_click), app ); /* load library */ - omnplay_library_load(app); -#endif + library_init(app); #if 0 /* setup drag n drop source/target */ @@ -159,9 +228,11 @@ void instance_release(instance_t* app) app->f_exit = 1; + library_release(app); + + /* stop unit monitoring threads */ for(i = 0; i < app->players.count; i++) - /* create a omneon status thread */ - g_thread_join(app->players.item[i].thread); + player_stop(app, i); /* destroy lock */ pthread_mutex_destroy(&app->players.lock);