Merge branch 'v0.20.x'
This commit is contained in:
commit
f6e428ac22
4
NEWS
4
NEWS
@ -7,6 +7,10 @@ ver 0.21 (not yet released)
|
|||||||
* output
|
* output
|
||||||
- alsa: non-blocking mode
|
- alsa: non-blocking mode
|
||||||
|
|
||||||
|
ver 0.20.7 (not yet released)
|
||||||
|
* database
|
||||||
|
- simple: fix false positive directory loop detection with NFS
|
||||||
|
|
||||||
ver 0.20.6 (2017/03/10)
|
ver 0.20.6 (2017/03/10)
|
||||||
* input
|
* input
|
||||||
- curl: fix headers after HTTP redirect to Shoutcast server
|
- curl: fix headers after HTTP redirect to Shoutcast server
|
||||||
|
@ -4080,7 +4080,7 @@ run</programlisting>
|
|||||||
(logical "and") can be used to select portions of
|
(logical "and") can be used to select portions of
|
||||||
the format string depending on the existing tag
|
the format string depending on the existing tag
|
||||||
values. Example:
|
values. Example:
|
||||||
<parameter>~/.mpd/recorder/[%title|%name%].ogg</parameter>
|
<parameter>~/.mpd/recorder/[%title%|%name%].ogg</parameter>
|
||||||
(use the "name" tag if no title exists)
|
(use the "name" tag if no title exists)
|
||||||
</para>
|
</para>
|
||||||
</entry>
|
</entry>
|
||||||
|
@ -36,8 +36,8 @@ flac = AutotoolsProject(
|
|||||||
)
|
)
|
||||||
|
|
||||||
zlib = ZlibProject(
|
zlib = ZlibProject(
|
||||||
'http://zlib.net/zlib-1.2.8.tar.xz',
|
'http://zlib.net/zlib-1.2.11.tar.xz',
|
||||||
'28f1205d8dd2001f26fec1e8c2cebe37',
|
'4ff941449631ace0d4d203e3483be9dbc9da454084111f97ea0a2114e19bf066',
|
||||||
'lib/libz.a',
|
'lib/libz.a',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ struct Directory {
|
|||||||
|
|
||||||
Directory *const parent;
|
Directory *const parent;
|
||||||
time_t mtime = 0;
|
time_t mtime = 0;
|
||||||
unsigned inode = 0, device = 0;
|
uint64_t inode = 0, device = 0;
|
||||||
|
|
||||||
const std::string path;
|
const std::string path;
|
||||||
|
|
||||||
|
@ -43,7 +43,8 @@ FillBuffer(DecoderClient &client, InputStream &is, B &buffer)
|
|||||||
{
|
{
|
||||||
buffer.Shift();
|
buffer.Shift();
|
||||||
auto w = buffer.Write();
|
auto w = buffer.Write();
|
||||||
assert(!w.IsEmpty());
|
if (w.IsEmpty())
|
||||||
|
return true;
|
||||||
|
|
||||||
size_t nbytes = decoder_read(client, is, w.data, w.size);
|
size_t nbytes = decoder_read(client, is, w.data, w.size);
|
||||||
if (nbytes == 0 && is.LockIsEOF())
|
if (nbytes == 0 && is.LockIsEOF())
|
||||||
|
@ -287,8 +287,6 @@ roar_tag_convert(TagType type, bool *is_uuid)
|
|||||||
case TAG_MUSICBRAINZ_ALBUMID:
|
case TAG_MUSICBRAINZ_ALBUMID:
|
||||||
case TAG_MUSICBRAINZ_ALBUMARTISTID:
|
case TAG_MUSICBRAINZ_ALBUMARTISTID:
|
||||||
case TAG_MUSICBRAINZ_TRACKID:
|
case TAG_MUSICBRAINZ_TRACKID:
|
||||||
*is_uuid = true;
|
|
||||||
return "HASH";
|
|
||||||
case TAG_MUSICBRAINZ_RELEASETRACKID:
|
case TAG_MUSICBRAINZ_RELEASETRACKID:
|
||||||
*is_uuid = true;
|
*is_uuid = true;
|
||||||
return "HASH";
|
return "HASH";
|
||||||
|
@ -50,7 +50,7 @@ struct StorageFileInfo {
|
|||||||
* Device id and inode number. 0 means unknown / not
|
* Device id and inode number. 0 means unknown / not
|
||||||
* applicable.
|
* applicable.
|
||||||
*/
|
*/
|
||||||
unsigned device, inode;
|
uint64_t device, inode;
|
||||||
|
|
||||||
StorageFileInfo() = default;
|
StorageFileInfo() = default;
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ public:
|
|||||||
explicit ScopeExitGuard(F &&f):F(std::forward<F>(f)) {}
|
explicit ScopeExitGuard(F &&f):F(std::forward<F>(f)) {}
|
||||||
|
|
||||||
ScopeExitGuard(ScopeExitGuard &&src)
|
ScopeExitGuard(ScopeExitGuard &&src)
|
||||||
:F(std::move(src)) {
|
:F(std::move(src)), enabled(src.enabled) {
|
||||||
src.enabled = false;
|
src.enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user