![](https://seccdn.libravatar.org/avatar/e2145bc5cf53dda95c308a3c75e8fef3.jpg?s=120&d=mm&r=g)
Hello community, here is the log from the commit of package pulseaudio for openSUSE:Factory checked in at 2015-11-06 00:10:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pulseaudio (Old) and /work/SRC/openSUSE:Factory/.pulseaudio.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "pulseaudio" Changes: -------- --- /work/SRC/openSUSE:Factory/pulseaudio/pulseaudio.changes 2015-10-25 15:10:52.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.pulseaudio.new/pulseaudio.changes 2015-11-06 00:10:49.000000000 +0100 @@ -1,0 +2,18 @@ +Mon Nov 2 20:54:13 UTC 2015 - meissner@suse.com + +- add libpulse-devel to baselibs.conf for use of 32bit biarch + wine builds on x86_64 + +------------------------------------------------------------------- +Fri Oct 30 13:22:54 UTC 2015 - oholecek@suse.com + +- Update to 7.1 + + Fix a crasher when using srbchannel + + Fix a build system typo that caused symlinks to turn up in / + + Make Xonar cards work better + + Other minor bug fixes and improvements +- remove 0003-alsa-mixer-Add-Dock-Line-Out-jack-handling-to-analog.patch +- remove 0002-alsa-mixer-Recognize-Dock-Line-Out-jack.patch +- remove pstream-Fix-use-after-free-in-srb_callback.patch + +------------------------------------------------------------------- Old: ---- 0002-alsa-mixer-Recognize-Dock-Line-Out-jack.patch 0003-alsa-mixer-Add-Dock-Line-Out-jack-handling-to-analog.patch pstream-Fix-use-after-free-in-srb_callback.patch pulseaudio-7.0.tar.xz New: ---- pulseaudio-7.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pulseaudio.spec ++++++ --- /var/tmp/diff_new_pack.YBCnZy/_old 2015-11-06 00:10:50.000000000 +0100 +++ /var/tmp/diff_new_pack.YBCnZy/_new 2015-11-06 00:10:50.000000000 +0100 @@ -16,7 +16,7 @@ # -%define drvver 7.0 +%define drvver 7.1 %define soname 0 %define _udevrulesdir %(pkg-config --variable=udevdir udev)/rules.d %define _fwdefdir %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services @@ -27,7 +27,7 @@ %define _bluez5used 0%(echo "%{_bluezVersion}" | grep -q '^5' && echo 1) %define _bashcompletionsdir %{_datadir}/bash-completion/completions Name: pulseaudio -Version: 7.0 +Version: 7.1 Release: 0 Summary: A Networked Sound Server License: GPL-2.0+ and LGPL-2.1+ @@ -46,12 +46,6 @@ # PATCH-FIX-SUSE disable-srbchannel.patch boo#950487 Disable srbchannel as a workaround for crashes on KDE # XXX note this patch isn't used for now, kept just for workaround in future Patch3: disable-srbchannel.patch -# PATCH-FIX-UPSTREAM pstream-Fix-use-after-free-in-srb_callback.patch boo#950487 -Patch4: pstream-Fix-use-after-free-in-srb_callback.patch -# PATCH-FIX-UPSTREAM 0002-alsa-mixer-Recognize-Dock-Line-Out-jack.patch boo#934850 -Patch102: 0002-alsa-mixer-Recognize-Dock-Line-Out-jack.patch -# PATCH-FIX-UPSTREAM 0003-alsa-mixer-Add-Dock-Line-Out-jack-handling-to-analog.patch boo#948979 -Patch103: 0003-alsa-mixer-Add-Dock-Line-Out-jack-handling-to-analog.patch # PATCH-FIX-UPSTREAM 0004-module-alsa-card-Report-available-ports-before-unava.patch boo#948979 Patch104: 0004-module-alsa-card-Report-available-ports-before-unava.patch BuildRequires: alsa-devel >= 1.0.19 @@ -336,9 +330,6 @@ %if 0 %patch3 -p1 %endif -%patch4 -p1 -%patch102 -p1 -%patch103 -p1 %patch104 -p1 %build ++++++ baselibs.conf ++++++ --- /var/tmp/diff_new_pack.YBCnZy/_old 2015-11-06 00:10:51.000000000 +0100 +++ /var/tmp/diff_new_pack.YBCnZy/_new 2015-11-06 00:10:51.000000000 +0100 @@ -2,3 +2,4 @@ obsoletes "pulseaudio-libs-<targettype> <= <version>" provides "pulseaudio-libs-<targettype> = <version>" libpulse-mainloop-glib0 +libpulse-devel ++++++ pulseaudio-7.0.tar.xz -> pulseaudio-7.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/.tarball-version new/pulseaudio-7.1/.tarball-version --- old/pulseaudio-7.0/.tarball-version 2015-09-24 05:27:27.000000000 +0200 +++ new/pulseaudio-7.1/.tarball-version 2015-10-30 13:51:03.000000000 +0100 @@ -1 +1 @@ -7.0 +7.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/.version new/pulseaudio-7.1/.version --- old/pulseaudio-7.0/.version 2015-09-24 05:27:27.000000000 +0200 +++ new/pulseaudio-7.1/.version 2015-10-30 13:51:03.000000000 +0100 @@ -1 +1 @@ -7.0 +7.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/Makefile.in new/pulseaudio-7.1/Makefile.in --- old/pulseaudio-7.0/Makefile.in 2015-09-24 05:15:11.000000000 +0200 +++ new/pulseaudio-7.1/Makefile.in 2015-10-30 13:27:06.000000000 +0100 @@ -239,7 +239,7 @@ $(top_srcdir)/build-aux/missing \ $(top_srcdir)/src/pulse/version.h.in ABOUT-NLS NEWS README \ build-aux/compile build-aux/config.guess \ - build-aux/config.rpath build-aux/config.sub \ + build-aux/config.rpath build-aux/config.sub build-aux/depcomp \ build-aux/install-sh build-aux/ltmain.sh build-aux/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/NEWS new/pulseaudio-7.1/NEWS --- old/pulseaudio-7.0/NEWS 2015-09-24 05:26:53.000000000 +0200 +++ new/pulseaudio-7.1/NEWS 2015-10-30 13:47:16.000000000 +0100 @@ -1,3 +1,21 @@ +PulseAudio 7.1 + +Changes at a glance: + + * Fix a crasher when using srbchannel + * Fix a build system typo that caused symlinks to turn up in / + * Make Xonar cards work better + * Other minor bug fixes and improvements + +Contributors: + + David Henningsson (4): + Felipe Sateler (2): + Georg Chini (1): + Takashi Iwai (1): + Tanu Kaskinen (3): + + PulseAudio 7.0 Changes at a glance: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/configure new/pulseaudio-7.1/configure --- old/pulseaudio-7.0/configure 2015-09-24 05:15:09.000000000 +0200 +++ new/pulseaudio-7.1/configure 2015-10-30 13:27:08.000000000 +0100 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for pulseaudio 7.0. +# Generated by GNU Autoconf 2.69 for pulseaudio 7.1. # # Report bugs to <pulseaudio-discuss (at) lists (dot) freedesktop (dot) org>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='pulseaudio' PACKAGE_TARNAME='pulseaudio' -PACKAGE_VERSION='7.0' -PACKAGE_STRING='pulseaudio 7.0' +PACKAGE_VERSION='7.1' +PACKAGE_STRING='pulseaudio 7.1' PACKAGE_BUGREPORT='pulseaudio-discuss (at) lists (dot) freedesktop (dot) org' PACKAGE_URL='http://pulseaudio.org/' @@ -1741,7 +1741,7 @@ # 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 pulseaudio 7.0 to adapt to many kinds of systems. +\`configure' configures pulseaudio 7.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1811,7 +1811,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of pulseaudio 7.0:";; + short | recursive ) echo "Configuration of pulseaudio 7.1:";; esac cat <<\_ACEOF @@ -2113,7 +2113,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -pulseaudio configure 7.0 +pulseaudio configure 7.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2703,7 +2703,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by pulseaudio $as_me 7.0, which was +It was created by pulseaudio $as_me 7.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3655,7 +3655,7 @@ # Define the identity of the package. PACKAGE='pulseaudio' - VERSION='7.0' + VERSION='7.1' cat >>confdefs.h <<_ACEOF @@ -27924,7 +27924,7 @@ bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion) fi -if test "x$bashcompletionsdir" = ""; then +if test "x$bashcompletionsdir" = "x"; then bashcompletiondir="${datadir}/bash-completion/completions" fi @@ -28790,7 +28790,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by pulseaudio $as_me 7.0, which was +This file was extended by pulseaudio $as_me 7.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -28857,7 +28857,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -pulseaudio config.status 7.0 +pulseaudio config.status 7.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/configure.ac new/pulseaudio-7.1/configure.ac --- old/pulseaudio-7.0/configure.ac 2015-09-17 04:47:47.000000000 +0200 +++ new/pulseaudio-7.1/configure.ac 2015-10-30 13:22:13.000000000 +0100 @@ -1439,7 +1439,7 @@ AC_ARG_WITH([bash-completion-dir], AS_HELP_STRING([--with-bash-completion-dir=DIR], [Directory for bash completion files]), [bashcompletiondir=$withval], [bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion)]) -if test "x$bashcompletionsdir" = ""; then +if test "x$bashcompletionsdir" = "x"; then bashcompletiondir="${datadir}/bash-completion/completions" fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/man/pulseaudio.1 new/pulseaudio-7.1/man/pulseaudio.1 --- old/pulseaudio-7.0/man/pulseaudio.1 2015-09-24 05:17:10.000000000 +0200 +++ new/pulseaudio-7.1/man/pulseaudio.1 2015-10-30 13:27:19.000000000 +0100 @@ -57,7 +57,7 @@ Run as system-wide instance instead of per-user. Please note that this disables certain features of PulseAudio and is generally not recommended unless the system knows no local users (e.g. is a thin client). This feature needs special configuration and a dedicated UNIX user set up. It is highly recommended to combine this with \fB--disallow-module-loading\f1 (see below). .TP \fB-D | --daemonize\f1\fI[=BOOL]\f1 -Daemonize after startup, i.e. detach from the terminal. +Daemonize after startup, i.e. detach from the terminal. Note that when running as a systemd service you should use \fB--daemonize=no\f1 for systemd notification to work. .TP \fB--fail\f1\fI[=BOOL]\f1 Fail startup when any of the commands specified in the startup script \fIdefault.pa\f1 (see below) fails. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/man/pulseaudio.1.xml.in new/pulseaudio-7.1/man/pulseaudio.1.xml.in --- old/pulseaudio-7.0/man/pulseaudio.1.xml.in 2015-09-15 06:46:06.000000000 +0200 +++ new/pulseaudio-7.1/man/pulseaudio.1.xml.in 2015-10-30 13:17:05.000000000 +0100 @@ -130,7 +130,9 @@ <p><opt>-D | --daemonize</opt><arg>[=BOOL]</arg></p> <optdesc><p>Daemonize after startup, i.e. detach from the - terminal.</p></optdesc> + terminal. Note that when running as a systemd service you should + use <opt>--daemonize=no</opt> for systemd notification to work. + </p></optdesc> </option> <option> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/daemon/main.c new/pulseaudio-7.1/src/daemon/main.c --- old/pulseaudio-7.0/src/daemon/main.c 2015-09-15 06:46:06.000000000 +0200 +++ new/pulseaudio-7.1/src/daemon/main.c 2015-10-30 13:16:48.000000000 +0100 @@ -1131,12 +1131,20 @@ pa_log_info("Daemon startup complete."); +#ifdef HAVE_SYSTEMD_DAEMON + sd_notify(0, "READY=1"); +#endif + retval = 0; if (pa_mainloop_run(mainloop, &retval) < 0) goto finish; pa_log_info("Daemon shutdown initiated."); +#ifdef HAVE_SYSTEMD_DAEMON + sd_notify(0, "STOPPING=1"); +#endif + finish: #ifdef HAVE_DBUS if (server_bus) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/daemon/systemd/user/pulseaudio.service.in new/pulseaudio-7.1/src/daemon/systemd/user/pulseaudio.service.in --- old/pulseaudio-7.0/src/daemon/systemd/user/pulseaudio.service.in 2015-09-15 06:46:06.000000000 +0200 +++ new/pulseaudio-7.1/src/daemon/systemd/user/pulseaudio.service.in 2015-10-30 13:16:48.000000000 +0100 @@ -2,6 +2,8 @@ Description=Sound Service [Service] +# Note that notify will only work if --daemonize=no +Type=notify ExecStart=@PA_BINARY@ --daemonize=no Restart=on-failure diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/modules/alsa/alsa-mixer.c new/pulseaudio-7.1/src/modules/alsa/alsa-mixer.c --- old/pulseaudio-7.0/src/modules/alsa/alsa-mixer.c 2015-09-15 06:46:06.000000000 +0200 +++ new/pulseaudio-7.1/src/modules/alsa/alsa-mixer.c 2015-10-30 13:28:03.000000000 +0100 @@ -1743,10 +1743,10 @@ if (e->n_channels <= 0) { pa_log_warn("Volume element %s with no channels?", e->alsa_name); - return -1; + e->volume_use = PA_ALSA_VOLUME_IGNORE; } - if (e->n_channels > 2) { + else if (e->n_channels > 2) { /* FIXME: In some places code like this is used: * * e->masks[alsa_channel_ids[p]][e->n_channels-1] @@ -1759,7 +1759,7 @@ * don't support elements with more than two * channels... */ pa_log_warn("Volume element %s has %u channels. That's too much! I can't handle that!", e->alsa_name, e->n_channels); - return -1; + e->volume_use = PA_ALSA_VOLUME_IGNORE; } if (!e->override_map) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/modules/alsa/alsa-ucm.c new/pulseaudio-7.1/src/modules/alsa/alsa-ucm.c --- old/pulseaudio-7.0/src/modules/alsa/alsa-ucm.c 2015-09-15 06:46:06.000000000 +0200 +++ new/pulseaudio-7.1/src/modules/alsa/alsa-ucm.c 2015-10-30 13:28:03.000000000 +0100 @@ -778,7 +778,6 @@ pa_hashmap_put(ports, port->name, port); pa_log_debug("Add port %s: %s", port->name, port->description); - port->profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); } port->priority = priority; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/modules/alsa/mixer/paths/analog-input.conf new/pulseaudio-7.1/src/modules/alsa/mixer/paths/analog-input.conf --- old/pulseaudio-7.0/src/modules/alsa/mixer/paths/analog-input.conf 2015-09-10 06:51:41.000000000 +0200 +++ new/pulseaudio-7.1/src/modules/alsa/mixer/paths/analog-input.conf 2015-10-30 13:22:13.000000000 +0100 @@ -30,6 +30,9 @@ [Element Mic] required-absent = any +[Element Mic Boost] +required-absent = any + [Element Dock Mic] required-absent = any @@ -78,6 +81,9 @@ [Element Line] required-absent = any +[Element Line Boost] +required-absent = any + [Element Aux] required-absent = any diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/modules/alsa/mixer/paths/analog-output-lineout.conf new/pulseaudio-7.1/src/modules/alsa/mixer/paths/analog-output-lineout.conf --- old/pulseaudio-7.0/src/modules/alsa/mixer/paths/analog-output-lineout.conf 2015-09-15 06:46:06.000000000 +0200 +++ new/pulseaudio-7.1/src/modules/alsa/mixer/paths/analog-output-lineout.conf 2015-10-30 13:22:13.000000000 +0100 @@ -87,6 +87,14 @@ state.unplugged = unknown required-any = any +[Jack Dock Line Out] +required-any = any + +[Jack Dock Line Out Phantom] +state.plugged = unknown +state.unplugged = unknown +required-any = any + [Element Hardware Master] switch = mute volume = merge diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf new/pulseaudio-7.1/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf --- old/pulseaudio-7.0/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf 2015-09-15 06:46:06.000000000 +0200 +++ new/pulseaudio-7.1/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf 2015-10-30 13:22:13.000000000 +0100 @@ -49,6 +49,10 @@ state.plugged = no state.unplugged = unknown +[Jack Dock Line Out] +state.plugged = no +state.unplugged = unknown + [Element Hardware Master] switch = mute volume = merge diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/modules/alsa/mixer/paths/analog-output-speaker.conf new/pulseaudio-7.1/src/modules/alsa/mixer/paths/analog-output-speaker.conf --- old/pulseaudio-7.0/src/modules/alsa/mixer/paths/analog-output-speaker.conf 2015-09-15 06:46:06.000000000 +0200 +++ new/pulseaudio-7.1/src/modules/alsa/mixer/paths/analog-output-speaker.conf 2015-10-30 13:22:13.000000000 +0100 @@ -52,6 +52,10 @@ state.plugged = no state.unplugged = unknown +[Jack Dock Line Out] +state.plugged = no +state.unplugged = unknown + [Jack Speaker Phantom] required-any = any state.plugged = unknown diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/modules/module-null-sink.c new/pulseaudio-7.1/src/modules/module-null-sink.c --- old/pulseaudio-7.0/src/modules/module-null-sink.c 2015-09-10 06:51:41.000000000 +0200 +++ new/pulseaudio-7.1/src/modules/module-null-sink.c 2015-10-30 13:28:03.000000000 +0100 @@ -93,8 +93,10 @@ switch (code) { case PA_SINK_MESSAGE_SET_STATE: - if (PA_PTR_TO_UINT(data) == PA_SINK_RUNNING) - u->timestamp = pa_rtclock_now(); + if (pa_sink_get_state(u->sink) == PA_SINK_SUSPENDED || pa_sink_get_state(u->sink) == PA_SINK_INIT) { + if (PA_PTR_TO_UINT(data) == PA_SINK_RUNNING || PA_PTR_TO_UINT(data) == PA_SINK_IDLE) + u->timestamp = pa_rtclock_now(); + } break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/pulse/version.h new/pulseaudio-7.1/src/pulse/version.h --- old/pulseaudio-7.0/src/pulse/version.h 2015-09-24 05:15:55.000000000 +0200 +++ new/pulseaudio-7.1/src/pulse/version.h 2015-10-30 13:27:17.000000000 +0100 @@ -33,7 +33,7 @@ /** Return the version of the header files. Keep in mind that this is a macro and not a function, so it is impossible to get the pointer of it. */ -#define pa_get_headers_version() ("7.0.0") +#define pa_get_headers_version() ("7.1.0") /** Return the version of the library the current application is * linked to. */ @@ -53,7 +53,7 @@ #define PA_MAJOR 7 /** The minor version of PA. \since 0.9.15 */ -#define PA_MINOR 0 +#define PA_MINOR 1 /** The micro version of PA (will always be 0 from v1.0 onwards). \since 0.9.15 */ #define PA_MICRO 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/pulsecore/pstream.c new/pulseaudio-7.1/src/pulsecore/pstream.c --- old/pulseaudio-7.0/src/pulsecore/pstream.c 2015-09-10 06:51:41.000000000 +0200 +++ new/pulseaudio-7.1/src/pulsecore/pstream.c 2015-10-30 13:22:33.000000000 +0100 @@ -216,14 +216,23 @@ } static bool srb_callback(pa_srbchannel *srb, void *userdata) { + bool b; pa_pstream *p = userdata; pa_assert(p); pa_assert(PA_REFCNT_VALUE(p) > 0); pa_assert(p->srb == srb); + pa_pstream_ref(p); + do_pstream_read_write(p); - return p->srb != NULL; + + /* If either pstream or the srb is going away, return false. + We need to check this before p is destroyed. */ + b = (PA_REFCNT_VALUE(p) > 1) && (p->srb == srb); + pa_pstream_unref(p); + + return b; } static void io_callback(pa_iochannel*io, void *userdata) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pulseaudio-7.0/src/pulsecore/shm.c new/pulseaudio-7.1/src/pulsecore/shm.c --- old/pulseaudio-7.0/src/pulsecore/shm.c 2015-09-10 06:51:41.000000000 +0200 +++ new/pulseaudio-7.1/src/pulsecore/shm.c 2015-10-30 13:22:15.000000000 +0100 @@ -288,7 +288,7 @@ #ifdef HAVE_SHM_OPEN -int pa_shm_attach(pa_shm *m, unsigned id, bool writable) { +static int shm_attach(pa_shm *m, unsigned id, bool writable, bool for_cleanup) { char fn[32]; int fd = -1; int prot; @@ -299,7 +299,7 @@ segment_name(fn, sizeof(fn), m->id = id); if ((fd = shm_open(fn, writable ? O_RDWR : O_RDONLY, 0)) < 0) { - if (errno != EACCES && errno != ENOENT) + if ((errno != EACCES && errno != ENOENT) || !for_cleanup) pa_log("shm_open() failed: %s", pa_cstrerror(errno)); goto fail; } @@ -338,6 +338,10 @@ return -1; } +int pa_shm_attach(pa_shm *m, unsigned id, bool writable) { + return shm_attach(m, id, writable, false); +} + #else /* HAVE_SHM_OPEN */ int pa_shm_attach(pa_shm *m, unsigned id, bool writable) { @@ -375,7 +379,7 @@ if (pa_atou(de->d_name + SHM_ID_LEN, &id) < 0) continue; - if (pa_shm_attach(&seg, id, false) < 0) + if (shm_attach(&seg, id, false, true) < 0) continue; if (seg.size < SHM_MARKER_SIZE) {