summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-08-30 20:57:21 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-08-30 20:57:21 +0200
commit6194255e4ba17aaeb324a5e979245e7a52065c28 (patch)
tree05059b97c63bd3327d1066ff98a49e53b6297e6a /main.c
parent408470584ac4bd3aba322a3d6557fccdac24c790 (diff)
added resume_last_session option
Diffstat (limited to 'main.c')
-rw-r--r--main.c29
1 files changed, 29 insertions, 0 deletions
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 ();