Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
637c96697f | ||
|
|
cc5fab28af | ||
|
|
a3f7127e72 | ||
|
|
b0a6a569df | ||
|
|
7aa1dceef6 | ||
|
|
a75d2fdd5a | ||
|
|
f76544be4c | ||
|
|
1e6c445320 | ||
|
|
e02c1adf79 |
6
NEWS
6
NEWS
@@ -1,3 +1,9 @@
|
||||
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"/>
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
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 ----------------------------------
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user