[Musicpd-dev-team] Remember the current track even when state is stopped

2009-06-21 Thread Christopher Zimmermann
Hi!

At the moment mpd doesn't store or restore the current track to/from its 
state file when the daemon is stopped/started while in 'stopped' state. 
I believe the preferred behaviour would be to store and restore the 
current track even when the daemon is in stopped state when shutting 
down.
I made a small patch to adapt this behaviour. If you believe this is not 
the preferred behaviour, maybe this should be realized as a 
configuration option. I'm not sure how to do this, but made a small 
comment, where one would have to put the option.
I would be glad, if this patch would be merged into the development 
tree.
Since I'm not on the list, please cc me in your replies.


Regards,

Christopher Zimmermann


--- a/playlist_state.c  2009-05-08 12:30:24.0 +0200
+++ b/playlist_state.c 2009-06-21 15:17:16.0 +0200
@@ -66,8 +66,12 @@
playlist-current));
fprintf(fp, %s%i\n, PLAYLIST_STATE_FILE_TIME,
getPlayerElapsedTime());
-   } else
+   } else {
fprintf(fp, %s\n, PLAYLIST_STATE_FILE_STATE_STOP);
+   fprintf(fp, %s%i\n, PLAYLIST_STATE_FILE_CURRENT,
+   queue_order_to_position(playlist-queue,
+   playlist-current));
+}
 
fprintf(fp, %s%i\n, PLAYLIST_STATE_FILE_RANDOM,
playlist-queue.random);
@@ -172,19 +176,19 @@
  (PLAYLIST_STATE_FILE_CURRENT)]));
} else if (g_str_has_prefix(buffer,

PLAYLIST_STATE_FILE_PLAYLIST_BEGIN)) {
-   if (state == PLAYER_STATE_STOP)
-   current = -1;
playlist_state_load(fp, playlist, buffer);
}
}
 
setPlaylistRandomStatus(playlist, random_mode);
 
-   if (state != PLAYER_STATE_STOP  !queue_is_empty(playlist-queue)) {
+   if (!queue_is_empty(playlist-queue)) {
if (!queue_valid_position(playlist-queue, current))
current = 0;
 
-   if (seek_time == 0)
+   if (state == PLAYER_STATE_STOP /*  config_option */)
+   playlist-current = current;
+   else if (seek_time == 0)
playPlaylist(playlist, current);
else
seekSongInPlaylist(playlist, current, seek_time);



signature.asc
Description: PGP signature
--
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org___
Musicpd-dev-team mailing list
Musicpd-dev-team@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team


Re: [Musicpd-dev-team] Remember the current track even when state is stopped

2009-06-21 Thread Jeffrey Middleton
Well, this is perhaps my fault for using web-based email, but in gmail the
tabs in the patch all seem to have turned to spaces.  It may be best to
attach patches to avoid this?  Also the patch date looks like it was maybe
referring to 0.15beta2, but playlist_state.c hasn't been touched so the
patch still applies.

Anyway, this seems to work (state restore while playing, paused, and stopped
all work), and it's available on my repo:
git pull git://git.musicpd.org/jefromi/mpd.git master


Thanks,
Jeffrey


On Sun, Jun 21, 2009 at 8:26 AM, Christopher Zimmermann
madro...@zakweb.dewrote:

 Hi!

 At the moment mpd doesn't store or restore the current track to/from its
 state file when the daemon is stopped/started while in 'stopped' state.
 I believe the preferred behaviour would be to store and restore the
 current track even when the daemon is in stopped state when shutting
 down.
 I made a small patch to adapt this behaviour. If you believe this is not
 the preferred behaviour, maybe this should be realized as a
 configuration option. I'm not sure how to do this, but made a small
 comment, where one would have to put the option.
 I would be glad, if this patch would be merged into the development
 tree.
 Since I'm not on the list, please cc me in your replies.


 Regards,

 Christopher Zimmermann


 --- a/playlist_state.c  2009-05-08 12:30:24.0 +0200
 +++ b/playlist_state.c 2009-06-21 15:17:16.0 +0200
 @@ -66,8 +66,12 @@
playlist-current));
fprintf(fp, %s%i\n, PLAYLIST_STATE_FILE_TIME,
getPlayerElapsedTime());
 -   } else
 +   } else {
fprintf(fp, %s\n, PLAYLIST_STATE_FILE_STATE_STOP);
 +   fprintf(fp, %s%i\n, PLAYLIST_STATE_FILE_CURRENT,
 +   queue_order_to_position(playlist-queue,
 +   playlist-current));
 +}

fprintf(fp, %s%i\n, PLAYLIST_STATE_FILE_RANDOM,
playlist-queue.random);
 @@ -172,19 +176,19 @@
  (PLAYLIST_STATE_FILE_CURRENT)]));
} else if (g_str_has_prefix(buffer,

  PLAYLIST_STATE_FILE_PLAYLIST_BEGIN)) {
 -   if (state == PLAYER_STATE_STOP)
 -   current = -1;
playlist_state_load(fp, playlist, buffer);
}
}

setPlaylistRandomStatus(playlist, random_mode);

 -   if (state != PLAYER_STATE_STOP 
 !queue_is_empty(playlist-queue)) {
 +   if (!queue_is_empty(playlist-queue)) {
if (!queue_valid_position(playlist-queue, current))
current = 0;

 -   if (seek_time == 0)
 +   if (state == PLAYER_STATE_STOP /*  config_option */)
 +   playlist-current = current;
 +   else if (seek_time == 0)
playPlaylist(playlist, current);
else
seekSongInPlaylist(playlist, current, seek_time);



 --
 Are you an open source citizen? Join us for the Open Source Bridge
 conference!
 Portland, OR, June 17-19. Two days of sessions, one day of unconference:
 $250.
 Need another reason to go? 24-hour hacker lounge. Register today!

 http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
 ___
 Musicpd-dev-team mailing list
 Musicpd-dev-team@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team


--
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org___
Musicpd-dev-team mailing list
Musicpd-dev-team@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team