X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fomnplay.cpp;h=4e1511a680f0784e967c4e62d955e83740722d00;hb=1bbcc24cd35fbfc8e87abd7d6e5df7e70b411971;hp=2912ecdcda00a13300b8dfe313066e4d17d751ab;hpb=499664bbfa646b6280553d1dc2dfb71db8c2e4d9;p=omnplay diff --git a/src/omnplay.cpp b/src/omnplay.cpp index 2912ecd..4e1511a 100644 --- a/src/omnplay.cpp +++ b/src/omnplay.cpp @@ -84,8 +84,19 @@ int omnplay_get_content(omnplay_instance_t* app, playlist_item_t *items, int lim 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) @@ -631,6 +642,7 @@ static void omnplay_playlist_item_add(omnplay_instance_t* app, int after) memset(&item, 0, sizeof(playlist_item_t)); if(ui_playlist_item_dialog(app, &item)) { + omnplay_library_normalize_item(app, &item); item.type = t; omnplay_playlist_insert_items(app, idx, &item, 1); }; @@ -655,6 +667,7 @@ static void omnplay_playlist_item_edit(omnplay_instance_t* app) if(ui_playlist_item_dialog(app, &item)) { + omnplay_library_normalize_item(app, &item); app->playlist.item[idx] = item; omnplay_playlist_draw_item(app, idx); }; @@ -755,11 +768,13 @@ static void omnplay_ctl(omnplay_instance_t* app, control_buttons_t button) fprintf(stderr, "cue: failed with %d, %s\n", r, OmPlrGetErrorString((OmPlrError)r)); app->playlist.item[i].omn_idx = -1; app->playlist.item[i].omn_offset = -1; + app->playlist.item[i].error |= PLAYLIST_ITEM_ERROR_CUE; } else { app->playlist.item[i].omn_idx = c; app->playlist.item[i].omn_offset = o; + app->playlist.item[i].error &= 0xF ^ PLAYLIST_ITEM_ERROR_CUE; /* save selected item offset */ if(i == idx) p = o; @@ -994,9 +1009,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);