summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2011-12-28 16:17:40 +0100
committerGravatar waker <wakeroid@gmail.com>2011-12-28 16:17:40 +0100
commit95d053827971a857f7dc755306ced0311cf00a47 (patch)
tree931182536b9755edfc9060f7c79b2dfd0f7c2c9a /main.c
parent666ff55d1cf93e2e0d7092a0bb9f4ac402c6d636 (diff)
fixed resuming saved playback state
Diffstat (limited to 'main.c')
-rw-r--r--main.c44
1 files changed, 22 insertions, 22 deletions
diff --git a/main.c b/main.c
index bec3fbdc..0737a59d 100644
--- a/main.c
+++ b/main.c
@@ -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 ();