db/LightSong: use std::chrono::duration for start_ms and end_ms
This commit is contained in:
parent
6ad933982f
commit
2efd8ef52d
@ -28,8 +28,8 @@ DetachedSong::DetachedSong(const LightSong &other)
|
||||
real_uri(other.real_uri != nullptr ? other.real_uri : ""),
|
||||
tag(*other.tag),
|
||||
mtime(other.mtime),
|
||||
start_time(SongTime::FromMS(other.start_ms)),
|
||||
end_time(SongTime::FromMS(other.end_ms)) {}
|
||||
start_time(other.start_time),
|
||||
end_time(other.end_time) {}
|
||||
|
||||
DetachedSong::~DetachedSong()
|
||||
{
|
||||
|
@ -75,16 +75,19 @@ song_print_info(Client &client, const LightSong &song, bool base)
|
||||
{
|
||||
song_print_uri(client, song, base);
|
||||
|
||||
if (song.end_ms > 0)
|
||||
const unsigned start_ms = song.start_time.ToMS();
|
||||
const unsigned end_ms = song.end_time.ToMS();
|
||||
|
||||
if (end_ms > 0)
|
||||
client_printf(client, "Range: %u.%03u-%u.%03u\n",
|
||||
song.start_ms / 1000,
|
||||
song.start_ms % 1000,
|
||||
song.end_ms / 1000,
|
||||
song.end_ms % 1000);
|
||||
else if (song.start_ms > 0)
|
||||
start_ms / 1000,
|
||||
start_ms % 1000,
|
||||
end_ms / 1000,
|
||||
end_ms % 1000);
|
||||
else if (start_ms > 0)
|
||||
client_printf(client, "Range: %u.%03u-\n",
|
||||
song.start_ms / 1000,
|
||||
song.start_ms % 1000);
|
||||
start_ms / 1000,
|
||||
start_ms % 1000);
|
||||
|
||||
if (song.mtime > 0)
|
||||
time_print(client, "Last-Modified", song.mtime);
|
||||
|
@ -23,11 +23,11 @@
|
||||
double
|
||||
LightSong::GetDuration() const
|
||||
{
|
||||
if (end_ms > 0)
|
||||
return (end_ms - start_ms) / 1000.0;
|
||||
if (end_time.IsPositive())
|
||||
return (end_time - start_time).ToDoubleS();
|
||||
|
||||
if (tag->time <= 0)
|
||||
return 0;
|
||||
|
||||
return tag->time - start_ms / 1000.0;
|
||||
return tag->time - start_time.ToDoubleS();
|
||||
}
|
||||
|
@ -20,6 +20,7 @@
|
||||
#ifndef MPD_LIGHT_SONG_HXX
|
||||
#define MPD_LIGHT_SONG_HXX
|
||||
|
||||
#include "Chrono.hxx"
|
||||
#include "Compiler.h"
|
||||
|
||||
#include <string>
|
||||
@ -64,15 +65,15 @@ struct LightSong {
|
||||
time_t mtime;
|
||||
|
||||
/**
|
||||
* Start of this sub-song within the file in milliseconds.
|
||||
* Start of this sub-song within the file.
|
||||
*/
|
||||
unsigned start_ms;
|
||||
SongTime start_time;
|
||||
|
||||
/**
|
||||
* End of this sub-song within the file in milliseconds.
|
||||
* End of this sub-song within the file.
|
||||
* Unused if zero.
|
||||
*/
|
||||
unsigned end_ms;
|
||||
SongTime end_time;
|
||||
|
||||
gcc_pure
|
||||
std::string GetURI() const {
|
||||
|
@ -192,10 +192,10 @@ ProxySong::ProxySong(const mpd_song *song)
|
||||
mtime = mpd_song_get_last_modified(song);
|
||||
|
||||
#if LIBMPDCLIENT_CHECK_VERSION(2,3,0)
|
||||
start_ms = mpd_song_get_start(song) * 1000;
|
||||
end_ms = mpd_song_get_end(song) * 1000;
|
||||
start_time = SongTime::FromS(mpd_song_get_start(song));
|
||||
end_time = SongTime::FromS(mpd_song_get_end(song));
|
||||
#else
|
||||
start_ms = end_ms = 0;
|
||||
start_time = end_time = SongTime::zero();
|
||||
#endif
|
||||
|
||||
TagBuilder tag_builder;
|
||||
|
@ -105,7 +105,7 @@ Song::Export() const
|
||||
dest.real_uri = nullptr;
|
||||
dest.tag = &tag;
|
||||
dest.mtime = mtime;
|
||||
dest.start_ms = start_ms;
|
||||
dest.end_ms = end_ms;
|
||||
dest.start_time = SongTime::FromMS(start_ms);
|
||||
dest.end_time = SongTime::FromMS(end_ms);
|
||||
return dest;
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ public:
|
||||
real_uri = real_uri2.c_str();
|
||||
tag = &tag2;
|
||||
mtime = 0;
|
||||
start_ms = end_ms = 0;
|
||||
start_time = end_time = SongTime::zero();
|
||||
}
|
||||
};
|
||||
|
||||
@ -360,7 +360,7 @@ visitSong(const UPnPDirObject &meta, const char *path,
|
||||
song.real_uri = meta.url.c_str();
|
||||
song.tag = &meta.tag;
|
||||
song.mtime = 0;
|
||||
song.start_ms = song.end_ms = 0;
|
||||
song.start_time = song.end_time = SongTime::zero();
|
||||
|
||||
return !selection.Match(song) || visit_song(song, error);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user