diff options
author | waker <wakeroid@gmail.com> | 2011-12-28 16:17:40 +0100 |
---|---|---|
committer | waker <wakeroid@gmail.com> | 2011-12-28 16:17:40 +0100 |
commit | 95d053827971a857f7dc755306ced0311cf00a47 (patch) | |
tree | 931182536b9755edfc9060f7c79b2dfd0f7c2c9a | |
parent | 666ff55d1cf93e2e0d7092a0bb9f4ac402c6d636 (diff) |
fixed resuming saved playback state
-rw-r--r-- | main.c | 44 |
1 files changed, 22 insertions, 22 deletions
@@ -474,6 +474,26 @@ server_loop (void *ctx) { } void +save_resume_state (void) { + playItem_t *trk = streamer_get_playing_track (); + DB_output_t *output = plug_get_output (); + float playpos = -1; + int playtrack = -1; + int playlist = streamer_get_current_playlist (); + int paused = (output->state () == OUTPUT_STATE_PAUSED); + if (trk && playlist >= 0) { + playtrack = str_get_idx_of (trk); + playpos = streamer_get_playpos (); + pl_item_unref (trk); + } + + conf_set_float ("resume.position", playpos); + conf_set_int ("resume.track", playtrack); + conf_set_int ("resume.playlist", playlist); + conf_set_int ("resume.paused", paused); +} + +void player_mainloop (void) { for (;;) { uint32_t msg; @@ -498,6 +518,8 @@ player_mainloop (void) { break; case DB_EV_TERMINATE: { + save_resume_state (); + pl_playqueue_clear (); // stop streaming and playback before unloading plugins @@ -616,26 +638,6 @@ sigsegv_handler (int sig) { #endif void -save_resume_state (void) { - playItem_t *trk = streamer_get_playing_track (); - DB_output_t *output = plug_get_output (); - float playpos = -1; - int playtrack = -1; - int playlist = streamer_get_current_playlist (); - int paused = (output->state () == OUTPUT_STATE_PAUSED); - if (trk && playlist >= 0) { - playtrack = str_get_idx_of (trk); - playpos = streamer_get_playpos (); - pl_item_unref (trk); - } - - conf_set_float ("resume.position", playpos); - conf_set_int ("resume.track", playtrack); - conf_set_int ("resume.playlist", playlist); - conf_set_int ("resume.paused", paused); -} - -void restore_resume_state (void) { DB_output_t *output = plug_get_output (); if (conf_get_int ("resume_last_session", 0) && output->state () == OUTPUT_STATE_STOPPED) { @@ -924,8 +926,6 @@ main (int argc, char *argv[]) { server_tid = 0; } - save_resume_state (); - // save config pl_save_all (); conf_save (); |