release v0.20.22

-----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlvPX+UQHG1heEBtdXNp
 Y3BkLm9yZwAKCRAjbopYxttFElO8EACgPMaiN3m/x1hzJ3QTLzCXgeqSG1vuv1tC
 F+sFISLPx/IoVjTpvd9H8jMt7lD+SYB620pAfNyLIGZpWcTxu1wmaviOghqCqnGP
 sql0vtS9CrRGhsKDi5earox3zecylWJ3PRPXpy/4NjFuFUxE2ij/wbXzDb9UbtMg
 1WnVL++fAlFj54CnPR35XHglYU+X7/bMWApkVUfsKBgyX9aghqLYUIm0jaUjj3Bs
 xB/2Nemd1A88yrc4kqyzbFsN96S/W2eXhDYfPlDwFdplfoRJ8nrEMdwrsn0nabIF
 7x+OsAGAfrz3e00TZdiDSaIy7VU4EFV9ctZVonoCGUluBHL0iG7G7bj2cnd+hVnZ
 ecidfHMUqVO99elmUtWsUQwzbhL/TxM6Fzn2qDwqdwcCWDgHcn4fpXfsY0MRt6NK
 cUhCyspMTuhqS3ohLO6RfiWDActm6QL2IHiDty/WAe1Td0VjOiRQMq7CADHlgn/D
 IalN8kGyWHK5ew+3Iiw5zRoYjNXG4ALZN8cEqVh2R7i2uxh8+qm46HkhticAjfDM
 4mETs3oAZdpOGCgv6Q0eY7tQDKB13DD/303NJaVFb6Iew2TZCWDbFz5HjqYShCZi
 PgnPosdRg0LoQbMah4Uhsj6frs6LEBMpg6c7nScJN/1MoRaOyVNDg03X+rBmPe5z
 XULvdsZ8Sw==
 =8OQx
 -----END PGP SIGNATURE-----

Merge tag 'v0.20.22'

release v0.20.22
This commit is contained in:
Max Kellermann 2018-10-23 20:10:57 +02:00
commit c2a2573aa5
5 changed files with 33 additions and 13 deletions

7
NEWS
View File

@ -49,17 +49,22 @@ ver 0.21 (not yet released)
* build with Meson instead of autotools * build with Meson instead of autotools
* use GTest instead of cppunit * use GTest instead of cppunit
ver 0.20.22 (not yet released) ver 0.20.22 (2018/10/23)
* protocol * protocol
- add tag fallbacks for AlbumArtistSort, ArtistSort - add tag fallbacks for AlbumArtistSort, ArtistSort
- fix empty string filter on fallback tags
- "count group ..." can print an empty group - "count group ..." can print an empty group
- fix broken command "list ... group" - fix broken command "list ... group"
* storage * storage
- curl: URL-encode paths - curl: URL-encode paths
* decoder
- fluidsynth: adapt to API change in version 2.0
* Android * Android
- now runs as a service - now runs as a service
- add button to start/stop MPD - add button to start/stop MPD
- add option to auto-start on boot - add option to auto-start on boot
* work around clang bug leading to crash
* install the SVG icon
ver 0.20.21 (2018/08/17) ver 0.20.21 (2018/08/17)
* database * database

View File

@ -133,13 +133,15 @@ class AndroidNdkToolchain:
libcxx_path = os.path.join(ndk_path, 'sources/cxx-stl/llvm-libc++') libcxx_path = os.path.join(ndk_path, 'sources/cxx-stl/llvm-libc++')
libcxx_libs_path = os.path.join(libcxx_path, 'libs', android_abi) libcxx_libs_path = os.path.join(libcxx_path, 'libs', android_abi)
libstdcxx_flags = '-stdlib=libc++' libstdcxx_flags = ''
libstdcxx_cxxflags = libstdcxx_flags + ' -isystem ' + os.path.join(libcxx_path, 'include') + ' -isystem ' + os.path.join(ndk_path, 'sources/android/support/include') libstdcxx_cxxflags = libstdcxx_flags + ' -isystem ' + os.path.join(libcxx_path, 'include') + ' -isystem ' + os.path.join(ndk_path, 'sources/android/support/include')
libstdcxx_ldflags = libstdcxx_flags + ' -static-libstdc++ -L' + libcxx_libs_path libstdcxx_ldflags = libstdcxx_flags + ' -L' + libcxx_libs_path
libstdcxx_libs = '-lc++_static -lc++abi'
if use_cxx: if use_cxx:
self.cxxflags += ' ' + libstdcxx_cxxflags self.cxxflags += ' ' + libstdcxx_cxxflags
self.ldflags += ' ' + libstdcxx_ldflags self.ldflags += ' ' + libstdcxx_ldflags
self.libs += ' ' + libstdcxx_libs
self.env = dict(os.environ) self.env = dict(os.environ)

View File

@ -64,7 +64,12 @@ fluidsynth_level_to_mpd(enum fluid_log_level level)
* logging library. * logging library.
*/ */
static void static void
fluidsynth_mpd_log_function(int level, char *message, gcc_unused void *data) fluidsynth_mpd_log_function(int level,
#if FLUIDSYNTH_VERSION_MAJOR >= 2
const
#endif
char *message,
void *)
{ {
Log(fluidsynth_domain, Log(fluidsynth_domain,
fluidsynth_level_to_mpd(fluid_log_level(level)), fluidsynth_level_to_mpd(fluid_log_level(level)),

View File

@ -30,7 +30,15 @@
* exist? This function attempts to recognize exceptions thrown by * exist? This function attempts to recognize exceptions thrown by
* various input plugins. * various input plugins.
*/ */
#ifndef __clang__
/* the "pure" attribute must be disabled because it triggers a clang
bug, wrongfully leading to std::terminate() even though the
function catches all exceptions thrown by std::rethrow_exception();
this can be reproduced with clang 7 from Android NDK r18b and on
clang 6 on FreeBSD
(https://github.com/MusicPlayerDaemon/MPD/issues/373) */
gcc_pure gcc_pure
#endif
bool bool
IsFileNotFound(std::exception_ptr e) noexcept; IsFileNotFound(std::exception_ptr e) noexcept;

View File

@ -54,15 +54,6 @@ TagSongFilter::MatchNN(const Tag &tag) const noexcept
} }
if (type < TAG_NUM_OF_ITEM_TYPES && !visited_types[type]) { if (type < TAG_NUM_OF_ITEM_TYPES && !visited_types[type]) {
/* If the search critieron was not visited during the
sweep through the song's tag, it means this field
is absent from the tag or empty. Thus, if the
searched string is also empty
then it's a match as well and we should return
true. */
if (filter.empty())
return true;
bool result = false; bool result = false;
if (ApplyTagFallback(type, if (ApplyTagFallback(type,
[&](TagType tag2) { [&](TagType tag2) {
@ -80,6 +71,15 @@ TagSongFilter::MatchNN(const Tag &tag) const noexcept
return true; return true;
})) }))
return result; return result;
/* If the search critieron was not visited during the
sweep through the song's tag, it means this field
is absent from the tag or empty. Thus, if the
searched string is also empty
then it's a match as well and we should return
true. */
if (filter.empty())
return true;
} }
return false; return false;