From 6194255e4ba17aaeb324a5e979245e7a52065c28 Mon Sep 17 00:00:00 2001 From: Alexey Yakovenko Date: Mon, 30 Aug 2010 20:57:21 +0200 Subject: added resume_last_session option --- main.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'main.c') diff --git a/main.c b/main.c index 3c06e3fa..e412e17e 100644 --- a/main.c +++ b/main.c @@ -67,6 +67,9 @@ #define USE_ABSTRACT_NAME 0 #endif +#define trace(...) { fprintf(stderr, __VA_ARGS__); } +//#define trace(fmt,...) + // some common global variables char confdir[1024]; // $HOME/.config char dbconfdir[1024]; // $HOME/.config/deadbeef @@ -673,9 +676,35 @@ main (int argc, char *argv[]) { streamer_init (); + if (conf_get_int ("resume_last_session", 0) && p_isstopped ()) { + int plt = conf_get_int ("resume.playlist", -1); + int track = conf_get_int ("resume.track", -1); + float pos = conf_get_float ("resume.position", -1); + trace ("resume: track %d pos %f playlist %d\n", track, pos, plt); + if (plt >= 0 && track >= 0 && pos >= 0) { + streamer_set_current_playlist (plt); + streamer_set_seek (pos); + streamer_set_nextsong (track, 3); + } + } + // this runs in main thread (blocks right here) player_mainloop (); + playItem_t *trk = streamer_get_playing_track (); + float playpos = -1; + int playtrack = -1; + int playlist = streamer_get_current_playlist (); + 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); + // save config pl_save_all (); conf_save (); -- cgit v1.2.3