Only ignore indexes after first nonzero, preserving pregaps but
appending them to the previous track instead of prepending to the
current. The first index of the first track is used for the start time
regardless of its number. Unneeded bool last_updated removed.
---
I spoke with Ryan from http://bugs.musicpd.org/view.php?id=4355
and we determined his issue after the last patch was due to git, not
the code itself. He expressed that the new behavior was, although better,
not ideal, as the expected start time of tracks is at index 01. This
patch plays all audio but sets start times to the first nonzero index.
src/playlist/cue/CueParser.cxx | 9 +++------
src/playlist/cue/CueParser.hxx | 6 ------
2 files changed, 3 insertions(+), 12 deletions(-)
diff --git a/src/playlist/cue/CueParser.cxx b/src/playlist/cue/CueParser.cxx
index e0c84a0..81797fe 100644
--- a/src/playlist/cue/CueParser.cxx
+++ b/src/playlist/cue/CueParser.cxx
@@ -250,7 +250,6 @@ CueParser::Feed2(char *p)
song_tag = header_tag;
song_tag.AddItem(TAG_TRACK, nr);
- last_updated = false;
} else if (state == IGNORE_TRACK) {
return;
} else if (state == TRACK && strcmp(command, "INDEX") == 0) {
@@ -266,14 +265,12 @@ CueParser::Feed2(char *p)
if (position_ms < 0)
return;
- if (!last_updated && previous != nullptr &&
- previous->GetStartTime().ToMS() < (unsigned)position_ms) {
- last_updated = true;
+ if (previous != nullptr && previous->GetStartTime().ToMS() <
(unsigned)position_ms)
previous->SetEndTime(SongTime::FromMS(position_ms));
- }
current->SetStartTime(SongTime::FromMS(position_ms));
- state = IGNORE_TRACK;
+ if(strcmp(nr, "00") != 0 || previous == nullptr)
+ state = IGNORE_TRACK;
}
}
diff --git a/src/playlist/cue/CueParser.hxx b/src/playlist/cue/CueParser.hxx
index 07010f7..925f123 100644
--- a/src/playlist/cue/CueParser.hxx
+++ b/src/playlist/cue/CueParser.hxx
@@ -89,12 +89,6 @@ class CueParser {
DetachedSong *finished;
/**
- * Set to true after previous.end_time has been updated to the
- * start time of the current song.
- */
- bool last_updated;
-
- /**
* Tracks whether cue_parser_finish() has been called. If
* true, then all remaining (partial) results will be
* delivered by cue_parser_get().
--
2.5.0
_______________________________________________
mpd-devel mailing list
[email protected]
http://mailman.blarg.de/listinfo/mpd-devel