[Pkg-mpd-commits] [pkg-mpd] 02/05: Imported Upstream version 0.18.9
Florian Schlichting
fsfs at moszumanska.debian.org
Sun Mar 2 22:41:25 UTC 2014
This is an automated email from the git hooks/post-receive script.
fsfs pushed a commit to branch master
in repository pkg-mpd.
commit afd60cecdc693f194526c77e4f993f8df69a8f2f
Author: Florian Schlichting <fsfs at debian.org>
Date: Sun Mar 2 22:56:00 2014 +0100
Imported Upstream version 0.18.9
---
Makefile.in | 2 +-
NEWS | 13 ++++++++++
configure | 52 ++++++++++++++++++-------------------
configure.ac | 6 ++---
doc/doxygen.conf | 2 +-
src/command/AllCommands.cxx | 2 +-
src/event/SignalMonitor.cxx | 25 +++++++++++++++++-
src/output/AlsaOutputPlugin.cxx | 55 ++++++++++++++++------------------------
src/output/PulseOutputPlugin.cxx | 2 --
9 files changed, 91 insertions(+), 68 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index 0b9b6da..726908a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -10296,8 +10296,8 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
- at ENABLE_DOCUMENTATION_FALSE@clean-local:
@ENABLE_DOCUMENTATION_FALSE at install-data-local:
+ at ENABLE_DOCUMENTATION_FALSE@clean-local:
@ENABLE_DOCUMENTATION_FALSE at uninstall-local:
clean: clean-am
diff --git a/NEWS b/NEWS
index 066e127..7a3173f 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,16 @@
+ver 0.18.9 (2014/03/02)
+* protocol
+ - "findadd" requires the "add" permission
+* output
+ - alsa: improved workaround for noise after manual song change
+* decoder
+ - vorbis: fix linker failure when libvorbis/libogg are static
+* encoder
+ - vorbis: fix another linker failure
+* output
+ - pipe: fix hanging child process due to blocked signals
+* fix build failure due to missing signal.h include
+
ver 0.18.8 (2014/02/07)
* decoder
- ffmpeg: support libav v10_alpha1
diff --git a/configure b/configure
index 4a9bf41..4987a18 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for mpd 0.18.8.
+# Generated by GNU Autoconf 2.69 for mpd 0.18.9.
#
# Report bugs to <mpd-devel at musicpd.org>.
#
@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='mpd'
PACKAGE_TARNAME='mpd'
-PACKAGE_VERSION='0.18.8'
-PACKAGE_STRING='mpd 0.18.8'
+PACKAGE_VERSION='0.18.9'
+PACKAGE_STRING='mpd 0.18.9'
PACKAGE_BUGREPORT='mpd-devel at musicpd.org'
PACKAGE_URL=''
@@ -1673,7 +1673,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.18.8 to adapt to many kinds of systems.
+\`configure' configures mpd 0.18.9 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1743,7 +1743,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of mpd 0.18.8:";;
+ short | recursive ) echo "Configuration of mpd 0.18.9:";;
esac
cat <<\_ACEOF
@@ -2041,7 +2041,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-mpd configure 0.18.8
+mpd configure 0.18.9
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2494,7 +2494,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.18.8, which was
+It was created by mpd $as_me 0.18.9, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3364,7 +3364,7 @@ fi
# Define the identity of the package.
PACKAGE='mpd'
- VERSION='0.18.8'
+ VERSION='0.18.9'
cat >>confdefs.h <<_ACEOF
@@ -12236,12 +12236,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_VORBIS_CFLAGS="$VORBIS_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbis vorbisfile ogg\""; } >&5
- ($PKG_CONFIG --exists --print-errors "vorbis vorbisfile ogg") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisfile vorbis ogg\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "vorbisfile vorbis ogg") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_VORBIS_CFLAGS=`$PKG_CONFIG --cflags "vorbis vorbisfile ogg" 2>/dev/null`
+ pkg_cv_VORBIS_CFLAGS=`$PKG_CONFIG --cflags "vorbisfile vorbis ogg" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -12254,12 +12254,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_VORBIS_LIBS="$VORBIS_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbis vorbisfile ogg\""; } >&5
- ($PKG_CONFIG --exists --print-errors "vorbis vorbisfile ogg") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisfile vorbis ogg\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "vorbisfile vorbis ogg") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_VORBIS_LIBS=`$PKG_CONFIG --libs "vorbis vorbisfile ogg" 2>/dev/null`
+ pkg_cv_VORBIS_LIBS=`$PKG_CONFIG --libs "vorbisfile vorbis ogg" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -12278,9 +12278,9 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- VORBIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "vorbis vorbisfile ogg"`
+ VORBIS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "vorbisfile vorbis ogg"`
else
- VORBIS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "vorbis vorbisfile ogg"`
+ VORBIS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "vorbisfile vorbis ogg"`
fi
# Put the nasty error message in config.log where it belongs
echo "$VORBIS_PKG_ERRORS" >&5
@@ -12864,12 +12864,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_VORBISENC_CFLAGS="$VORBISENC_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisenc vorbis\""; } >&5
- ($PKG_CONFIG --exists --print-errors "vorbisenc vorbis") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisenc vorbis ogg\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "vorbisenc vorbis ogg") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_VORBISENC_CFLAGS=`$PKG_CONFIG --cflags "vorbisenc vorbis" 2>/dev/null`
+ pkg_cv_VORBISENC_CFLAGS=`$PKG_CONFIG --cflags "vorbisenc vorbis ogg" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -12882,12 +12882,12 @@ if test -n "$PKG_CONFIG"; then
pkg_cv_VORBISENC_LIBS="$VORBISENC_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisenc vorbis\""; } >&5
- ($PKG_CONFIG --exists --print-errors "vorbisenc vorbis") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"vorbisenc vorbis ogg\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "vorbisenc vorbis ogg") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_VORBISENC_LIBS=`$PKG_CONFIG --libs "vorbisenc vorbis" 2>/dev/null`
+ pkg_cv_VORBISENC_LIBS=`$PKG_CONFIG --libs "vorbisenc vorbis ogg" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -12906,9 +12906,9 @@ else
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- VORBISENC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "vorbisenc vorbis"`
+ VORBISENC_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "vorbisenc vorbis ogg"`
else
- VORBISENC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "vorbisenc vorbis"`
+ VORBISENC_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "vorbisenc vorbis ogg"`
fi
# Put the nasty error message in config.log where it belongs
echo "$VORBISENC_PKG_ERRORS" >&5
@@ -18460,7 +18460,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.18.8, which was
+This file was extended by mpd $as_me 0.18.9, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18526,7 +18526,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.18.8
+mpd config.status 0.18.9
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 301c3a0..81bdcea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,6 +1,6 @@
AC_PREREQ(2.60)
-AC_INIT(mpd, 0.18.8, mpd-devel at musicpd.org)
+AC_INIT(mpd, 0.18.9, mpd-devel at musicpd.org)
VERSION_MAJOR=0
VERSION_MINOR=18
@@ -1023,7 +1023,7 @@ if test x$enable_tremor = xyes; then
fi
fi
-MPD_AUTO_PKG(vorbis, VORBIS, [vorbis vorbisfile ogg],
+MPD_AUTO_PKG(vorbis, VORBIS, [vorbisfile vorbis ogg],
[Ogg Vorbis decoder], [libvorbis not found])
if test x$enable_vorbis = xyes; then
AC_DEFINE(ENABLE_VORBIS_DECODER, 1, [Define for Ogg Vorbis support])
@@ -1139,7 +1139,7 @@ fi
AM_CONDITIONAL(ENABLE_FLAC_ENCODER, test x$enable_flac_encoder = xyes)
dnl ---------------------------- Ogg Vorbis Encoder ---------------------------
-MPD_AUTO_PKG(vorbis_encoder, VORBISENC, [vorbisenc vorbis],
+MPD_AUTO_PKG(vorbis_encoder, VORBISENC, [vorbisenc vorbis ogg],
[Ogg Vorbis encoder], [libvorbisenc not found])
if test x$enable_vorbis_encoder = xyes; then
diff --git a/doc/doxygen.conf b/doc/doxygen.conf
index a93594c..86080f4 100644
--- a/doc/doxygen.conf
+++ b/doc/doxygen.conf
@@ -31,7 +31,7 @@ PROJECT_NAME = MPD
# This could be handy for archiving the generated documentation or
# if some version control system is used.
-PROJECT_NUMBER = 0.18.8
+PROJECT_NUMBER = 0.18.9
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
diff --git a/src/command/AllCommands.cxx b/src/command/AllCommands.cxx
index 74802ce..36f6fb9 100644
--- a/src/command/AllCommands.cxx
+++ b/src/command/AllCommands.cxx
@@ -90,7 +90,7 @@ static const struct command commands[] = {
{ "disableoutput", PERMISSION_ADMIN, 1, 1, handle_disableoutput },
{ "enableoutput", PERMISSION_ADMIN, 1, 1, handle_enableoutput },
{ "find", PERMISSION_READ, 2, -1, handle_find },
- { "findadd", PERMISSION_READ, 2, -1, handle_findadd},
+ { "findadd", PERMISSION_ADD, 2, -1, handle_findadd},
{ "idle", PERMISSION_READ, 0, -1, handle_idle },
{ "kill", PERMISSION_ADMIN, -1, -1, handle_kill },
{ "list", PERMISSION_READ, 1, -1, handle_list },
diff --git a/src/event/SignalMonitor.cxx b/src/event/SignalMonitor.cxx
index 8c8527a..4f51743 100644
--- a/src/event/SignalMonitor.cxx
+++ b/src/event/SignalMonitor.cxx
@@ -39,6 +39,12 @@
#include <algorithm>
+#ifdef USE_SIGNALFD
+#include <pthread.h>
+#endif
+
+#include <signal.h>
+
class SignalMonitor final : private SocketMonitor {
#ifdef USE_SIGNALFD
SignalFD fd;
@@ -99,7 +105,21 @@ static std::atomic_bool signal_pending[MAX_SIGNAL];
static Manual<SignalMonitor> monitor;
-#ifndef USE_SIGNALFD
+#ifdef USE_SIGNALFD
+
+/**
+ * This is a pthread_atfork() callback that unblocks the signals that
+ * were blocked for our signalfd(). Without this, our child processes
+ * would inherit the blocked signals.
+ */
+static void
+at_fork_child()
+{
+ sigprocmask(SIG_UNBLOCK, &signal_mask, nullptr);
+}
+
+#else
+
static void
SignalCallback(int signo)
{
@@ -108,6 +128,7 @@ SignalCallback(int signo)
if (!signal_pending[signo].exchange(true))
monitor->WakeUp();
}
+
#endif
void
@@ -115,6 +136,8 @@ SignalMonitorInit(EventLoop &loop)
{
#ifdef USE_SIGNALFD
sigemptyset(&signal_mask);
+
+ pthread_atfork(nullptr, nullptr, at_fork_child);
#endif
monitor.Construct(loop);
diff --git a/src/output/AlsaOutputPlugin.cxx b/src/output/AlsaOutputPlugin.cxx
index 4877d3a..6668c92 100644
--- a/src/output/AlsaOutputPlugin.cxx
+++ b/src/output/AlsaOutputPlugin.cxx
@@ -106,12 +106,16 @@ struct AlsaOutput {
snd_pcm_uframes_t period_position;
/**
- * Set to non-zero when the Raspberry Pi workaround has been
- * activated in alsa_recover(); decremented by each write.
- * This will avoid activating it again, leading to an endless
- * loop. This problem was observed with a "RME Digi9636/52".
+ * Do we need to call snd_pcm_prepare() before the next write?
+ * It means that we put the device to SND_PCM_STATE_SETUP by
+ * calling snd_pcm_drop().
+ *
+ * Without this flag, we could easily recover after a failed
+ * optimistic write (returning -EBADFD), but the Raspberry Pi
+ * audio driver is infamous for generating ugly artefacts from
+ * this.
*/
- unsigned pi_workaround;
+ bool must_prepare;
/**
* This buffer gets allocated after opening the ALSA device.
@@ -676,8 +680,6 @@ alsa_open(struct audio_output *ao, AudioFormat &audio_format, Error &error)
{
AlsaOutput *ad = (AlsaOutput *)ao;
- ad->pi_workaround = 0;
-
int err = snd_pcm_open(&ad->pcm, alsa_device(ad),
SND_PCM_STREAM_PLAYBACK, ad->mode);
if (err < 0) {
@@ -699,6 +701,8 @@ alsa_open(struct audio_output *ao, AudioFormat &audio_format, Error &error)
ad->in_frame_size = audio_format.GetFrameSize();
ad->out_frame_size = ad->pcm_export->GetFrameSize(audio_format);
+ ad->must_prepare = false;
+
return true;
}
@@ -736,29 +740,6 @@ alsa_recover(AlsaOutput *ad, int err)
case SND_PCM_STATE_XRUN:
ad->period_position = 0;
err = snd_pcm_prepare(ad->pcm);
-
- if (err == 0 && ad->pi_workaround == 0) {
- /* this works around a driver bug observed on
- the Raspberry Pi: after snd_pcm_drop(), the
- whole ring buffer must be invalidated, but
- the snd_pcm_prepare() call above makes the
- driver play random data that just happens
- to be still in the buffer; by adding and
- cancelling some silence, this bug does not
- occur */
- alsa_write_silence(ad, ad->period_frames);
-
- /* cancel the silence data right away to avoid
- increasing latency; even though this
- function call invalidates the portion of
- silence, the driver seems to avoid the
- bug */
- snd_pcm_reset(ad->pcm);
-
- /* disable the workaround for some time */
- ad->pi_workaround = 8;
- }
-
break;
case SND_PCM_STATE_DISCONNECTED:
break;
@@ -801,6 +782,7 @@ alsa_cancel(struct audio_output *ao)
AlsaOutput *ad = (AlsaOutput *)ao;
ad->period_position = 0;
+ ad->must_prepare = true;
snd_pcm_drop(ad->pcm);
}
@@ -822,6 +804,16 @@ alsa_play(struct audio_output *ao, const void *chunk, size_t size,
assert(size % ad->in_frame_size == 0);
+ if (ad->must_prepare) {
+ ad->must_prepare = false;
+
+ int err = snd_pcm_prepare(ad->pcm);
+ if (err < 0) {
+ error.Set(alsa_output_domain, err, snd_strerror(-err));
+ return 0;
+ }
+ }
+
chunk = ad->pcm_export->Export(chunk, size, size);
assert(size % ad->out_frame_size == 0);
@@ -834,9 +826,6 @@ alsa_play(struct audio_output *ao, const void *chunk, size_t size,
ad->period_position = (ad->period_position + ret)
% ad->period_frames;
- if (ad->pi_workaround > 0)
- --ad->pi_workaround;
-
size_t bytes_written = ret * ad->out_frame_size;
return ad->pcm_export->CalcSourceSize(bytes_written);
}
diff --git a/src/output/PulseOutputPlugin.cxx b/src/output/PulseOutputPlugin.cxx
index ab79738..1eece44 100644
--- a/src/output/PulseOutputPlugin.cxx
+++ b/src/output/PulseOutputPlugin.cxx
@@ -369,8 +369,6 @@ pulse_output_enable(struct audio_output *ao, Error &error)
po->mainloop = pa_threaded_mainloop_new();
if (po->mainloop == nullptr) {
- g_free(po);
-
error.Set(pulse_output_domain,
"pa_threaded_mainloop_new() has failed");
return false;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mpd/pkg-mpd.git
More information about the Pkg-mpd-commits
mailing list