Commit af49197d authored by Florian Schlichting's avatar Florian Schlichting

New upstream version 0.20.23

parent b244cb09
......@@ -16314,8 +16314,8 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
@ENABLE_DOCUMENTATION_FALSE@uninstall-local:
@ENABLE_DOCUMENTATION_FALSE@install-data-local:
@ANDROID_FALSE@@ENABLE_DOCUMENTATION_FALSE@@ENABLE_HAIKU_FALSE@clean-local:
@ENABLE_DOCUMENTATION_FALSE@install-data-local:
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-local \
ver 0.20.23 (2018/10/29)
* protocol
- emit "player" idle event when restarting the current song
* fix broken float to s32 conversion
* new clang crash bug workaround
ver 0.20.22 (2018/10/23)
* protocol
- add tag fallbacks for AlbumArtistSort, ArtistSort
......
......@@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.musicpd"
android:installLocation="auto"
android:versionCode="21"
android:versionName="0.20.22">
android:versionCode="22"
android:versionName="0.20.23">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="26"/>
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for mpd 0.20.22.
# Generated by GNU Autoconf 2.69 for mpd 0.20.23.
#
# Report bugs to <musicpd-dev-team@lists.sourceforge.net>.
#
......@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='mpd'
PACKAGE_TARNAME='mpd'
PACKAGE_VERSION='0.20.22'
PACKAGE_STRING='mpd 0.20.22'
PACKAGE_VERSION='0.20.23'
PACKAGE_STRING='mpd 0.20.23'
PACKAGE_BUGREPORT='musicpd-dev-team@lists.sourceforge.net'
PACKAGE_URL=''
......@@ -1786,7 +1786,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures mpd 0.20.22 to adapt to many kinds of systems.
\`configure' configures mpd 0.20.23 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
......@@ -1857,7 +1857,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of mpd 0.20.22:";;
short | recursive ) echo "Configuration of mpd 0.20.23:";;
esac
cat <<\_ACEOF
......@@ -2211,7 +2211,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
mpd configure 0.20.22
mpd configure 0.20.23
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
......@@ -2618,7 +2618,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by mpd $as_me 0.20.22, which was
It was created by mpd $as_me 0.20.23, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
......@@ -2969,7 +2969,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
VERSION_MAJOR=0
VERSION_MINOR=20
VERSION_REVISION=22
VERSION_REVISION=23
VERSION_EXTRA=0
......@@ -3488,7 +3488,7 @@ fi
# Define the identity of the package.
PACKAGE='mpd'
VERSION='0.20.22'
VERSION='0.20.23'
cat >>confdefs.h <<_ACEOF
......@@ -18522,6 +18522,83 @@ fi
done
for flag in -funwind-tables; do
as_CACHEVAR=`$as_echo "ax_cv_check_cxxflags__$flag" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler accepts $flag" >&5
$as_echo_n "checking whether C++ compiler accepts $flag... " >&6; }
if eval \${$as_CACHEVAR+:} false; then :
$as_echo_n "(cached) " >&6
else
ax_check_save_flags=$CXXFLAGS
CXXFLAGS="$CXXFLAGS $flag"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_cxx_try_compile "$LINENO"; then :
eval "$as_CACHEVAR=yes"
else
eval "$as_CACHEVAR=no"
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CXXFLAGS=$ax_check_save_flags
fi
eval ac_res=\$$as_CACHEVAR
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
if ${CXXFLAGS+:} false; then :
case " $CXXFLAGS " in #(
*" $flag "*) :
{ { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS already contains \$flag"; } >&5
(: CXXFLAGS already contains $flag) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CXXFLAGS " $flag"
{ { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS\""; } >&5
(: CXXFLAGS="$CXXFLAGS") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
else
CXXFLAGS=$flag
{ { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS\""; } >&5
(: CXXFLAGS="$CXXFLAGS") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
else
:
fi
done
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
......@@ -21794,7 +21871,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by mpd $as_me 0.20.22, which was
This file was extended by mpd $as_me 0.20.23, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
......@@ -21860,7 +21937,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
mpd config.status 0.20.22
mpd config.status 0.20.23
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
......
AC_PREREQ(2.60)
AC_INIT(mpd, 0.20.22, musicpd-dev-team@lists.sourceforge.net)
AC_INIT(mpd, 0.20.23, musicpd-dev-team@lists.sourceforge.net)
VERSION_MAJOR=0
VERSION_MINOR=20
VERSION_REVISION=22
VERSION_REVISION=23
VERSION_EXTRA=0
AC_CONFIG_SRCDIR([src/Main.cxx])
......@@ -1354,6 +1354,11 @@ AX_APPEND_COMPILE_FLAGS([-fno-threadsafe-statics])
AX_APPEND_COMPILE_FLAGS([-fmerge-all-constants])
AX_APPEND_COMPILE_FLAGS([-ffast-math])
AX_APPEND_COMPILE_FLAGS([-ftree-vectorize])
dnl Workaround for clang bug
dnl https://bugs.llvm.org/show_bug.cgi?id=32611
AX_APPEND_COMPILE_FLAGS([-funwind-tables])
AC_LANG_POP
dnl ---------------------------------- debug ----------------------------------
......
......@@ -38,7 +38,7 @@ PROJECT_NAME = MPD
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 0.20.22
PROJECT_NUMBER = 0.20.23
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
......
......@@ -153,8 +153,8 @@ UpdateWalk::UpdateArchiveFile(Directory &parent, const char *name,
ArchiveFile *file;
try {
file = archive_file_open(&plugin, path_fs);
} catch (const std::runtime_error &e) {
LogError(e);
} catch (...) {
LogError(std::current_exception());
if (directory != nullptr)
editor.LockDeleteDirectory(directory);
return;
......
......@@ -119,9 +119,9 @@ UpdateWalk::UpdateContainerFile(Directory &directory,
modified = true;
}
} catch (const std::runtime_error &e) {
} catch (...) {
editor.LockDeleteDirectory(contdir);
LogError(e);
LogError(std::current_exception());
return false;
}
......
......@@ -78,7 +78,7 @@ ExcludeList::Check(Path name_fs) const noexcept
try {
if (i.Check(NarrowPath(name_fs).c_str()))
return true;
} catch (const std::runtime_error &) {
} catch (...) {
}
}
#else
......
......@@ -187,8 +187,8 @@ recursive_watch_subdirectories(WatchDirectory *directory,
FileInfo fi;
try {
fi = FileInfo(child_path_fs);
} catch (const std::runtime_error &e) {
LogError(e);
} catch (...) {
LogError(std::current_exception());
continue;
}
......@@ -198,8 +198,8 @@ recursive_watch_subdirectories(WatchDirectory *directory,
try {
ret = inotify_source->Add(child_path_fs.c_str(),
IN_MASK);
} catch (const std::runtime_error &e) {
FormatError(e,
} catch (...) {
FormatError(std::current_exception(),
"Failed to register %s",
child_path_fs.c_str());
continue;
......@@ -302,8 +302,8 @@ mpd_inotify_init(EventLoop &loop, Storage &storage, UpdateService &update,
inotify_source = new InotifySource(loop,
mpd_inotify_callback,
nullptr);
} catch (const std::runtime_error &e) {
LogError(e);
} catch (...) {
LogError(std::current_exception());
return;
}
......@@ -312,8 +312,8 @@ mpd_inotify_init(EventLoop &loop, Storage &storage, UpdateService &update,
int descriptor;
try {
descriptor = inotify_source->Add(path.c_str(), IN_MASK);
} catch (const std::runtime_error &e) {
LogError(e);
} catch (...) {
LogError(std::current_exception());
delete inotify_source;
inotify_source = nullptr;
return;
......
......@@ -36,8 +36,8 @@ GetInfo(Storage &storage, const char *uri_utf8, StorageFileInfo &info) noexcept
try {
info = storage.GetInfo(uri_utf8, true);
return true;
} catch (const std::runtime_error &e) {
LogError(e);
} catch (...) {
LogError(std::current_exception());
return false;
}
......@@ -46,8 +46,8 @@ GetInfo(StorageDirectoryReader &reader, StorageFileInfo &info) noexcept
try {
info = reader.GetInfo(true);
return true;
} catch (const std::runtime_error &e) {
LogError(e);
} catch (...) {
LogError(std::current_exception());
return false;
}
......@@ -58,7 +58,7 @@ DirectoryExists(Storage &storage, const Directory &directory) noexcept
try {
info = storage.GetInfo(directory.GetPath(), true);
} catch (const std::runtime_error &) {
} catch (...) {
return false;
}
......@@ -83,7 +83,7 @@ directory_child_is_regular(Storage &storage, const Directory &directory,
try {
return GetDirectoryChildInfo(storage, directory, name_utf8)
.IsRegular();
} catch (const std::runtime_error &) {
} catch (...) {
return false;
}
......
......@@ -244,8 +244,8 @@ try {
FormatDebug(update_domain,
"%s is not a directory, archive or music", name);
}
} catch (const std::exception &e) {
LogError(e);
} catch (...) {
LogError(std::current_exception());
}
/* we don't look at "." / ".." nor files with newlines in their name */
......
......@@ -30,15 +30,7 @@
* exist? This function attempts to recognize exceptions thrown by
* 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
#endif
bool
IsFileNotFound(std::exception_ptr e);
......
......@@ -34,7 +34,8 @@ struct FloatToIntegerSampleConvert {
typedef typename SrcTraits::long_type SL;
typedef typename DstTraits::value_type DV;
static constexpr SV factor = 1 << (DstTraits::BITS - 1);
static constexpr SV factor = uintmax_t(1) << (DstTraits::BITS - 1);
static_assert(factor > 0, "Wrong factor");
gcc_const
static DV Convert(SV src) noexcept {
......@@ -53,7 +54,8 @@ struct IntegerToFloatSampleConvert {
typedef typename SrcTraits::value_type SV;
typedef typename DstTraits::value_type DV;
static constexpr DV factor = 0.5 / (1 << (SrcTraits::BITS - 2));
static constexpr DV factor = 1.0 / FloatToIntegerSampleConvert<F, Traits>::factor;
static_assert(factor > 0, "Wrong factor");
gcc_const
static DV Convert(SV src) noexcept {
......
......@@ -246,12 +246,8 @@ PlayerControl::LockSeek(DetachedSong *song, SongTime t)
{
assert(song != nullptr);
{
const std::lock_guard<Mutex> protect(mutex);
SeekLocked(song, t);
}
idle_add(IDLE_PLAYER);
const std::lock_guard<Mutex> protect(mutex);
SeekLocked(song, t);
}
void
......
......@@ -580,6 +580,8 @@ Player::SeekDecoder()
{
assert(pc.next_song != nullptr);
idle_add(IDLE_PLAYER);
pc.outputs.Cancel();
const SongTime start_time = pc.next_song->GetStartTime();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment