diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/command/QueueCommands.cxx | 22 | ||||
-rw-r--r-- | src/queue/Playlist.hxx | 4 | ||||
-rw-r--r-- | src/queue/PlaylistEdit.cxx | 14 |
3 files changed, 20 insertions, 20 deletions
diff --git a/src/command/QueueCommands.cxx b/src/command/QueueCommands.cxx index c99a6687a..36c8ac84f 100644 --- a/src/command/QueueCommands.cxx +++ b/src/command/QueueCommands.cxx @@ -125,7 +125,7 @@ handle_addid(Client &client, unsigned argc, char *argv[]) * integer milliseconds. Omitted values are zero. */ static bool -parse_time_range(const char *p, unsigned &start_ms, unsigned &end_ms) +parse_time_range(const char *p, SongTime &start_r, SongTime &end_r) { char *endptr; @@ -133,9 +133,9 @@ parse_time_range(const char *p, unsigned &start_ms, unsigned &end_ms) if (*endptr != ':' || start < 0) return false; - start_ms = endptr > p - ? unsigned(start * 1000u) - : 0u; + start_r = endptr > p + ? SongTime::FromS(start) + : SongTime::zero(); p = endptr + 1; @@ -143,11 +143,11 @@ parse_time_range(const char *p, unsigned &start_ms, unsigned &end_ms) if (*endptr != 0 || end < 0) return false; - end_ms = endptr > p - ? unsigned(end * 1000u) - : 0u; + end_r = endptr > p + ? SongTime::FromS(end) + : SongTime::zero(); - return end_ms == 0 || end_ms > start_ms; + return end_r.IsZero() || end_r > start_r; } CommandResult @@ -157,15 +157,15 @@ handle_rangeid(Client &client, gcc_unused unsigned argc, char *argv[]) if (!check_unsigned(client, &id, argv[1])) return CommandResult::ERROR; - unsigned start_ms, end_ms; - if (!parse_time_range(argv[2], start_ms, end_ms)) { + SongTime start, end; + if (!parse_time_range(argv[2], start, end)) { command_error(client, ACK_ERROR_ARG, "Bad range"); return CommandResult::ERROR; } Error error; if (!client.partition.playlist.SetSongIdRange(client.partition.pc, - id, start_ms, end_ms, + id, start, end, error)) return print_error(client, error); diff --git a/src/queue/Playlist.hxx b/src/queue/Playlist.hxx index 75e861a82..581d2a73b 100644 --- a/src/queue/Playlist.hxx +++ b/src/queue/Playlist.hxx @@ -228,11 +228,11 @@ public: unsigned song_id, uint8_t priority); /** - * Sets the start_ms and end_ms attributes on the song + * Sets the start_time and end_time attributes on the song * with the specified id. */ bool SetSongIdRange(PlayerControl &pc, unsigned id, - unsigned start_ms, unsigned end_ms, + SongTime start, SongTime end, Error &error); bool AddSongIdTag(unsigned id, TagType tag_type, const char *value, diff --git a/src/queue/PlaylistEdit.cxx b/src/queue/PlaylistEdit.cxx index d10edb942..20d459732 100644 --- a/src/queue/PlaylistEdit.cxx +++ b/src/queue/PlaylistEdit.cxx @@ -434,10 +434,10 @@ playlist::Shuffle(PlayerControl &pc, unsigned start, unsigned end) bool playlist::SetSongIdRange(PlayerControl &pc, unsigned id, - unsigned start_ms, unsigned end_ms, + SongTime start, SongTime end, Error &error) { - assert(end_ms == 0 || start_ms < end_ms); + assert(end.IsZero() || start < end); int position = queue.IdToPosition(id); if (position < 0) { @@ -467,20 +467,20 @@ playlist::SetSongIdRange(PlayerControl &pc, unsigned id, /* validate the offsets */ const unsigned duration = song.GetTag().time; - if (start_ms / 1000u > duration) { + if (start.ToMS() / 1000u > duration) { error.Set(playlist_domain, int(PlaylistResult::BAD_RANGE), "Invalid start offset"); return false; } - if (end_ms / 1000u > duration) - end_ms = 0; + if (end.ToMS() / 1000u > duration) + end = SongTime::zero(); } /* edit it */ - song.SetStartTime(SongTime::FromMS(start_ms)); - song.SetEndTime(SongTime::FromMS(end_ms)); + song.SetStartTime(start); + song.SetEndTime(end); /* announce the change to all interested subsystems */ UpdateQueuedSong(pc, nullptr); |