diff options
-rw-r--r-- | deadbeef.glade | 6 | ||||
-rw-r--r-- | gtkplaylist.c | 43 | ||||
-rw-r--r-- | gtkplaylist.h | 3 | ||||
-rw-r--r-- | interface.c | 6 | ||||
-rw-r--r-- | main.c | 5 | ||||
-rw-r--r-- | messages.h | 1 |
6 files changed, 53 insertions, 11 deletions
diff --git a/deadbeef.glade b/deadbeef.glade index 6ce1b779..7ac05591 100644 --- a/deadbeef.glade +++ b/deadbeef.glade @@ -232,7 +232,6 @@ <child> <widget class="GtkButton" id="stopbtn"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NONE</property> <property name="focus_on_click">True</property> <signal name="clicked" handler="on_stopbtn_clicked" last_modification_time="Sun, 05 Jul 2009 10:48:41 GMT"/> @@ -259,7 +258,6 @@ <child> <widget class="GtkButton" id="playbtn"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NONE</property> <property name="focus_on_click">True</property> <signal name="clicked" handler="on_playbtn_clicked" last_modification_time="Sun, 05 Jul 2009 10:48:53 GMT"/> @@ -286,7 +284,6 @@ <child> <widget class="GtkButton" id="pausebtn"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NONE</property> <property name="focus_on_click">True</property> <signal name="clicked" handler="on_pausebtn_clicked" last_modification_time="Sun, 05 Jul 2009 10:49:01 GMT"/> @@ -313,7 +310,6 @@ <child> <widget class="GtkButton" id="prevbtn"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NONE</property> <property name="focus_on_click">True</property> <signal name="clicked" handler="on_prevbtn_clicked" last_modification_time="Sun, 05 Jul 2009 10:49:08 GMT"/> @@ -340,7 +336,6 @@ <child> <widget class="GtkButton" id="nextbtn"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NONE</property> <property name="focus_on_click">True</property> <signal name="clicked" handler="on_nextbtn_clicked" last_modification_time="Sun, 05 Jul 2009 10:49:12 GMT"/> @@ -367,7 +362,6 @@ <child> <widget class="GtkButton" id="playrand"> <property name="visible">True</property> - <property name="can_focus">True</property> <property name="relief">GTK_RELIEF_NONE</property> <property name="focus_on_click">True</property> <signal name="clicked" handler="on_playrand_clicked" last_modification_time="Sun, 05 Jul 2009 10:49:16 GMT"/> diff --git a/gtkplaylist.c b/gtkplaylist.c index c5d040d2..02b7cd04 100644 --- a/gtkplaylist.c +++ b/gtkplaylist.c @@ -11,6 +11,7 @@ #include "support.h" #include "playlist.h" #include "psdl.h" +#include "codec.h" #include "common.h" #include "messagepump.h" #include "messages.h" @@ -204,6 +205,7 @@ gtkps_mouse1_clicked (GtkWidget *widget, int ex, int ey, double time) { && fabs(ps_lastpos[1] - ey) < 3) { // doubleclick - play this item if (playlist_row != -1) { +#if 0 playItem_t *it = ps_get_for_idx (playlist_row); if (it) { playItem_t *prev = playlist_current; @@ -212,14 +214,11 @@ gtkps_mouse1_clicked (GtkWidget *widget, int ex, int ey, double time) { if (prev) { redraw_ps_row (widget, ps_get_idx_of (prev)); } -// if (playlist_current) { -// redraw_ps_row (widget, ps_get_idx_of (playlist_current)); -// } } messagepump_push (M_PLAYSONG, 0, 0, 0); -// psdl_stop (); -// psdl_play (it); } +#endif + messagepump_push (M_PLAYSONGNUM, 0, playlist_row, 0); } @@ -249,8 +248,10 @@ gtkps_playsong (void) { } else if (playlist_current) { printf ("restart\n"); + codec_lock (); psdl_stop (); psdl_play (playlist_current); + codec_unlock (); GtkWidget *widget = lookup_widget (mainwin, "playlist"); redraw_ps_row (widget, ps_get_idx_of (playlist_current)); } @@ -258,8 +259,10 @@ gtkps_playsong (void) { printf ("start under cursor\n"); playItem_t *it = ps_get_for_idx (playlist_row); if (it) { + codec_lock (); psdl_stop (); psdl_play (it); + codec_unlock (); playlist_current = it; } GtkWidget *widget = lookup_widget (mainwin, "playlist"); @@ -269,8 +272,10 @@ gtkps_playsong (void) { printf ("play 1st in list\n"); playlist_current = playlist_head; if (playlist_current) { + codec_lock (); psdl_stop (); psdl_play (playlist_current); + codec_unlock (); GtkWidget *widget = lookup_widget (mainwin, "playlist"); redraw_ps_row (widget, ps_get_idx_of (playlist_current)); } @@ -313,8 +318,10 @@ gtkps_nextsong (void) { playlist_current = playlist_head; } if (playlist_current) { + codec_lock (); psdl_stop (); psdl_play (playlist_current); + codec_unlock (); } if (playlist_current != prev) { if (prev) { @@ -342,8 +349,10 @@ gtkps_randomsong (void) { playlist_current = NULL; } if (playlist_current) { + codec_lock (); psdl_stop (); psdl_play (playlist_current); + codec_unlock (); } if (playlist_current != prev) { if (prev) { @@ -369,3 +378,27 @@ gtkps_pausesong (void) { psdl_pause (); } } + +void +gtkps_playsongnum (int idx) { + playItem_t *it = ps_get_for_idx (playlist_row); + if (it) { + if (it != playlist_current) { + GtkWidget *widget = lookup_widget (mainwin, "playlist"); + int prev = -1; + if (playlist_current) { + prev = ps_get_idx_of (playlist_current); + } + playlist_current = it; + if (prev != -1) { + redraw_ps_row (widget, prev); + } + redraw_ps_row (widget, idx); + } + codec_lock (); + psdl_stop (); + psdl_play (playlist_current); + codec_unlock (); + } +} + diff --git a/gtkplaylist.h b/gtkplaylist.h index 5bc952d1..4a632982 100644 --- a/gtkplaylist.h +++ b/gtkplaylist.h @@ -52,4 +52,7 @@ gtkps_randomsong (void); void gtkps_pausesong (void); +void +gtkps_playsongnum (int idx); + #endif diff --git a/interface.c b/interface.c index abe2d8b2..c914989b 100644 --- a/interface.c +++ b/interface.c @@ -198,6 +198,7 @@ create_mainwin (void) stopbtn = gtk_button_new (); gtk_widget_show (stopbtn); gtk_box_pack_start (GTK_BOX (hbox3), stopbtn, FALSE, FALSE, 0); + GTK_WIDGET_UNSET_FLAGS (stopbtn, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON (stopbtn), GTK_RELIEF_NONE); image1 = gtk_image_new_from_stock ("gtk-media-stop", GTK_ICON_SIZE_BUTTON); @@ -207,6 +208,7 @@ create_mainwin (void) playbtn = gtk_button_new (); gtk_widget_show (playbtn); gtk_box_pack_start (GTK_BOX (hbox3), playbtn, FALSE, FALSE, 0); + GTK_WIDGET_UNSET_FLAGS (playbtn, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON (playbtn), GTK_RELIEF_NONE); image2 = gtk_image_new_from_stock ("gtk-media-play", GTK_ICON_SIZE_BUTTON); @@ -216,6 +218,7 @@ create_mainwin (void) pausebtn = gtk_button_new (); gtk_widget_show (pausebtn); gtk_box_pack_start (GTK_BOX (hbox3), pausebtn, FALSE, FALSE, 0); + GTK_WIDGET_UNSET_FLAGS (pausebtn, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON (pausebtn), GTK_RELIEF_NONE); image3 = gtk_image_new_from_stock ("gtk-media-pause", GTK_ICON_SIZE_BUTTON); @@ -225,6 +228,7 @@ create_mainwin (void) prevbtn = gtk_button_new (); gtk_widget_show (prevbtn); gtk_box_pack_start (GTK_BOX (hbox3), prevbtn, FALSE, FALSE, 0); + GTK_WIDGET_UNSET_FLAGS (prevbtn, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON (prevbtn), GTK_RELIEF_NONE); image4 = gtk_image_new_from_stock ("gtk-media-previous", GTK_ICON_SIZE_BUTTON); @@ -234,6 +238,7 @@ create_mainwin (void) nextbtn = gtk_button_new (); gtk_widget_show (nextbtn); gtk_box_pack_start (GTK_BOX (hbox3), nextbtn, FALSE, FALSE, 0); + GTK_WIDGET_UNSET_FLAGS (nextbtn, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON (nextbtn), GTK_RELIEF_NONE); image5 = gtk_image_new_from_stock ("gtk-media-next", GTK_ICON_SIZE_BUTTON); @@ -243,6 +248,7 @@ create_mainwin (void) playrand = gtk_button_new (); gtk_widget_show (playrand); gtk_box_pack_start (GTK_BOX (hbox3), playrand, FALSE, FALSE, 0); + GTK_WIDGET_UNSET_FLAGS (playrand, GTK_CAN_FOCUS); gtk_button_set_relief (GTK_BUTTON (playrand), GTK_RELIEF_NONE); alignment1 = gtk_alignment_new (0.5, 0.5, 0, 0); @@ -38,6 +38,11 @@ psdl_thread (uintptr_t ctx) { gtkps_playsong (); GDK_THREADS_LEAVE(); break; + case M_PLAYSONGNUM: + GDK_THREADS_ENTER(); + gtkps_playsongnum (p1); + GDK_THREADS_LEAVE(); + break; case M_STOPSONG: GDK_THREADS_ENTER(); gtkps_stopsong (); @@ -6,6 +6,7 @@ enum { M_NEXTSONG, M_PREVSONG, M_PLAYSONG, + M_PLAYSONGNUM, M_STOPSONG, M_PAUSESONG, M_PLAYRANDOM, |