summaryrefslogtreecommitdiff
path: root/src/ui_act.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui_act.c')
-rw-r--r--src/ui_act.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/ui_act.c b/src/ui_act.c
index e8452e6..e1dbfc0 100644
--- a/src/ui_act.c
+++ b/src/ui_act.c
@@ -236,10 +236,14 @@ BarUiActCallback(BarUiActDeleteStation) {
if (BarUiActDefaultPianoCall (PIANO_REQUEST_DELETE_STATION,
selStation) && selStation == app->curStation) {
BarUiDoSkipSong (&app->player);
- PianoDestroyPlaylist (PianoListNextP (app->playlist));
- app->playlist->head.next = NULL;
- BarUiHistoryPrepend (app, app->playlist);
- app->playlist = NULL;
+ if (app->playlist != NULL) {
+ /* drain playlist */
+ PianoDestroyPlaylist (PianoListNextP (app->playlist));
+ app->playlist->head.next = NULL;
+ }
+ app->nextStation = NULL;
+ /* XXX: usually we shoudn’t touch cur*, but DELETE_STATION destroys
+ * station struct */
app->curStation = NULL;
}
BarUiActDefaultEventcmd ("stationdelete");
@@ -468,14 +472,12 @@ BarUiActCallback(BarUiActSelectStation) {
PianoStation_t *newStation = BarUiSelectStation (app, app->ph.stations,
"Select station: ", NULL, app->settings.autoselect);
if (newStation != NULL) {
- app->curStation = newStation;
- BarUiPrintStation (&app->settings, app->curStation);
+ app->nextStation = newStation;
BarUiDoSkipSong (&app->player);
if (app->playlist != NULL) {
+ /* drain playlist */
PianoDestroyPlaylist (PianoListNextP (app->playlist));
app->playlist->head.next = NULL;
- BarUiHistoryPrepend (app, app->playlist);
- app->playlist = NULL;
}
}
}