X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fomnplay.cpp;h=0d644635d1689b3b908484fb65a097928297c0f9;hb=87eb3dd37b216b347359aedac6ed40f905270320;hp=8213402dcc8b1602688a49ec05d6bf75aac4407a;hpb=78b122111f5febfab573cd75584be2e60e98e246;p=omnplay diff --git a/src/omnplay.cpp b/src/omnplay.cpp index 8213402..0d64463 100644 --- a/src/omnplay.cpp +++ b/src/omnplay.cpp @@ -124,6 +124,9 @@ void omnplay_destroy(omnplay_instance_t* app) static int find_index_of_playlist_item(omnplay_instance_t* app, int start, int idx) { + if(start < 0 || start >= app->playlist.count) + return -1; + while(1) { if(app->playlist.item[start].omn_idx == idx) @@ -226,6 +229,9 @@ static void* omnplay_thread_proc(void* data) g_warning("omnplay_thread_proc\n"); + memset(&st_curr, 0, sizeof(OmPlrStatus)); + memset(&st_prev, 0, sizeof(OmPlrStatus)); + /* connect */ pthread_mutex_lock(&player->app->players.lock); r = OmPlrOpen(player->host, player->name, (OmPlrHandle*)&player->handle); @@ -1241,24 +1247,19 @@ void omnplay_init(omnplay_instance_t* app) /* create lock */ pthread_mutex_init(&app->players.lock, &attr); + pthread_mutex_init(&app->playlist.lock, &attr); + pthread_mutex_init(&app->library.lock, &attr); /* create a omneon status thread */ for(i = 0; i < app->players.count; i++) - pthread_create(&app->players.item[i].thread, NULL, - omnplay_thread_proc, &app->players.item[i]); - - - /* create lock */ - pthread_mutex_init(&app->playlist.lock, &attr); + app->players.item[i].thread = g_thread_create( + omnplay_thread_proc, &app->players.item[i], TRUE, 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 ); - /* create lock */ - pthread_mutex_init(&app->library.lock, &attr); - /* load library */ omnplay_library_load(app); @@ -1268,13 +1269,12 @@ void omnplay_init(omnplay_instance_t* app) void omnplay_release(omnplay_instance_t* app) { int i; - void* r; app->f_exit = 1; for(i = 0; i < app->players.count; i++) /* create a omneon status thread */ - pthread_join(app->players.item[i].thread, &r); + g_thread_join(app->players.item[i].thread); /* destroy lock */ pthread_mutex_destroy(&app->players.lock);