minimal playlist operating implemented
[melted_gui] / src / instance.c
index 05400b3..2bd06b0 100644 (file)
@@ -38,6 +38,7 @@
 #include "timecode.h"
 #include "player.h"
 #include "library.h"
+#include "playlist.h"
 
 GtkTargetEntry drag_targets[] = { { (char*) "application/playlist_item_t", 0, 0 } };
 
@@ -154,9 +155,6 @@ void instance_init(instance_t* app)
     int i;
     pthread_mutexattr_t attr;
 
-    pthread_mutexattr_init(&attr);
-    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
-
     gtk_signal_connect( GTK_OBJECT( app->window ), "delete-event",
         GTK_SIGNAL_FUNC(on_main_window_delete_event), app);
 
@@ -182,6 +180,8 @@ void instance_init(instance_t* app)
 #endif
 
     /* create lock */
+    pthread_mutexattr_init(&attr);
+    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
     pthread_mutex_init(&app->players.lock, &attr);
     pthread_mutex_init(&app->playlist.lock, &attr);
     pthread_mutex_init(&app->library.lock, &attr);
@@ -196,30 +196,11 @@ void instance_init(instance_t* app)
         gtk_signal_connect(GTK_OBJECT(app->buttons[i]), "clicked",
             GTK_SIGNAL_FUNC( on_button_click), app );
 
-    /* load library */
+    /* init library */
     library_init(app);
 
-#if 0
-    /* setup drag n drop source/target */
-    static GtkTargetEntry drag_targets[] = { { (char*) "application/playlist_item_t", 0, 0 } };
-
-    gtk_drag_source_set(app->library_grid, GDK_BUTTON1_MASK,
-        drag_targets, 1, (GdkDragAction)(GDK_ACTION_COPY));
-
-    gtk_drag_source_set(app->playlist_grid, GDK_BUTTON1_MASK,
-        drag_targets, 1, (GdkDragAction)(GDK_ACTION_COPY | GDK_ACTION_MOVE));
-
-    gtk_drag_dest_set(app->playlist_grid, (GtkDestDefaults)(GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP),
-        drag_targets, 1, (GdkDragAction)(GDK_ACTION_COPY | GDK_ACTION_MOVE));
-
-    g_signal_connect (app->library_grid, "drag_data_get", G_CALLBACK(library_grid_drag_data_get_cb), app);
-    g_signal_connect (app->playlist_grid, "drag_data_get", G_CALLBACK(playlist_grid_drag_data_get_cb), app);
-    g_signal_connect (app->library_grid, "drag_begin", G_CALLBACK(library_grid_drag_begin_cb), app);
-    g_signal_connect (app->playlist_grid, "drag_begin", G_CALLBACK(playlist_grid_drag_begin_cb), app);
-    g_signal_connect (app->playlist_grid, "drag_data_received", G_CALLBACK (playlist_grid_drag_data_received), app);
-    g_signal_connect (app->playlist_grid, "drag_data_delete", G_CALLBACK (playlist_grid_drag_data_delete), app);
-    g_signal_connect (app->playlist_grid, "drag_motion", G_CALLBACK (playlist_grid_drag_motion), app);
-#endif
+    /* init playlist */
+    playlist_init(app);
 };
 
 void instance_release(instance_t* app)
@@ -228,23 +209,22 @@ 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++)
         player_stop(app, i);
 
+    /* release laylist */
+    playlist_release(app);
+
+    /* release library */
+    library_release(app);
+
     /* destroy lock */
     pthread_mutex_destroy(&app->players.lock);
 
     /* destroy lock */
     pthread_mutex_destroy(&app->playlist.lock);
 
-#if 0
-    /* load library */
-    omnplay_library_save(app);
-#endif
-
     /* destroy library lock */
     pthread_mutex_destroy(&app->library.lock);
 };