--- pulseaudio-1.1.orig/debian/copyright +++ pulseaudio-1.1/debian/copyright @@ -0,0 +1,604 @@ +This package was debianized by CJ van den Berg on +Thu, 10 Aug 2006 15:59:43 +0200. + +It was downloaded from . + + Upstream Authors + ================ + + Lennart Poettering + Pierre Ossman , + through his employer Cendio + +Files: * +Copyright: + Copyright (C) 2004-2009 Lennart Poettering + Copyright (C) 2006-2007 Pierre Ossman for Cendio AB +License: LGPL-2.1+ + The upstream license clarifies pretty well that the sources of pulseaudio are + LGPL (please see LGPL license grant below), but that some parts will be + effectively GPL since they rely on GPL libraries, quoting the upstream + LICENSE: + + """All PulseAudio source files are licensed under the GNU Lesser General + Public License. (see file LGPL for details) + + However, the server side links to the GPL-only library 'libsamplerate' + which practically downgrades the license of the server part to GPL (see + file GPL for details), exercising section 3 of the LGPL. + + Hence you should treat the client library ('libpulse') of PulseAudio as + being LGPL licensed and the server part ('libpulsecore') as being GPL + licensed. Since the PulseAudio daemon and the modules link to + 'libpulsecore' they are of course also GPL licensed. + + -- Lennart Poettering, April 20th, 2006.""" + + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/pulsecore/g711.c +Copyright: + Copyright (C) Sun Microsystems, Inc +License: + This source code is a product of Sun Microsystems, Inc. and is provided + for unrestricted use. Users may copy or modify this source code without + charge. + + SUN SOURCE CODE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING + THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + + Sun source code is provided with no support and without any obligation on + the part of Sun Microsystems, Inc. to assist in its use, correction, + modification or enhancement. + + SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS SOFTWARE + OR ANY PART THEREOF. + + In no event will Sun Microsystems, Inc. be liable for any lost revenue + or profits or other special, indirect and consequential damages, even if + Sun has been advised of the possibility of such damages. + +Files: src/pulsecore/g711.h +Copyright: + Copyright (C) 2001 Chris Bagwell +Licence: + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, provided + that the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation. This software is provided "as is" without express or + implied warranty. + +Files: src/pulsecore/poll.* +Copyright: + Copyright 2006 Pierre Ossman for Cendio AB + Copyright (C)1994,96,97,98,99,2000,2001,2004 Free Software Foundation, Inc. +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/pulse/utf8.c +Copyright: + Copyright (C) 1999 Tom Tromey + Copyright (C) 2000 Red Hat, Inc. +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/bluetooth/ipc.*, src/modules/bluetooth/rtp.* +Copyright: + Copyright (C) 2004-2009 Marcel Holtmann +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/bluetooth/module-bluetooth-{device,discover}.c, + src/modules/bluetooth/bluetooth-util.* +Copyright: + Copyright (C) 2008-2009 Joao Paulo Rechi Vita +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2. + +File: src/modules/bluetooth/proximity-helper.c +Copyright: + Copyright (C) 2000-2001 Qualcomm Incorporated + Copyright (C) 2002-2003 Maxim Krasnyansky + Copyright (C) 2002-2007 Marcel Holtmann +License: GPL-2+ + On Debian systems, the complete text of the GPL-2 can be found in + /usr/share/common-licenses/GPL-2. + +Files: src/modules/bluetooth/sbc* +Copyright: + Copyright (C) 2004-2009 Marcel Holtmann + Copyright (C) 2004-2005 Henryk Ploetz + Copyright (C) 2005-2006 Brad Midgley +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/modules/dbus/iface-{client,stream}.c: +Copyright: + Copyright 2009 Tanu Kaskinen + Copyright 2009 Vincent Filali-Ansary +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/modules/dbus/module-dbus-protocol.c +Copyright: + Copyright 2009 Tanu Kaskinen + Copyright 2006 Lennart Poettering + Copyright 2006 Shams E. King +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/dbus/* +Copyright: + Copyright 2009 Tanu Kaskinen +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/echo-cancel/adrian*.* +Copyright: + Copyright (C) DFS Deutsche Flugsicherung (2004). All Rights Reserved. +License: + You are allowed to use this source code in any open source or closed + source software you want. You are allowed to use the algorithms for a + hardware solution. You are allowed to modify the source code. + You are not allowed to remove the name of the author from this memo or + from the source code files. You are not allowed to monopolize the + source code or the algorithms behind the source code as your + intellectual property. This source code is free of royalty and comes + with no warranty. + +File: src/modules/echo-cancel/echo-cancel.h +Copyright: + Copyright 2010 Arun Raghavan +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/modules/echo-cancel/module-echo-cancel.c +Copyright: + Copyright 2010 Wim Taymans +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/modules/echo-cancel/speex.c +Copyright: + Copyright 2010 Wim Taymans + Contributor: Arun Raghavan +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/modules/jack/module-jackdbus-detect.c +Copyright: + Written by David Henningsson + Copyright 2010 Canonical Ltd. +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/module-device-manager.* +Copyright: + Copyright 2006-2008 Lennart Poettering + Copyright (C) 2009 Colin Guthrie +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/modules/module-equalizer-sink.c +Copyright: + Copyright 2004-2008 Lennart Poettering + Copyright 2009 Jason Newton +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/pulsecore/dbus-*.*, src/modules/module-hal-detect.c +Copyright: + Copyright 2006 Lennart Poettering + Copyright 2006 Shams E. King +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/modules/ladspa.h +Copyright: + Copyright (C) 2000-2002 Richard W.E. Furse, Paul Barton-Davis, Stefan + Westerfeld. +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/module-always-sink.c, src/modules/rtp/rtsp_client.* +Copyright: + Copyright (C) 2008 Colin Guthrie +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/module-detect.c +Copyright: + Copyright 2006 Lennart Poettering + Copyright 2006 Pierre Ossman for Cendio AB + Copyright 2006 Diego Petteno +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/roap/*roap*, src/modules/rtp/headerlist.* +Copyright: + Copyright 2005-2007 Lennart Poettering + Copyright (C) 2008 Colin Guthrie +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/roap/base64.* +Copyright: + Copyright (C) 2008 Colin Guthrie + Copyright (C) Kungliga Tekniska Hogskolan +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/module-device-manager.c +Copyright: + Copyright 2006-2008 Lennart Poettering + Copyright 2009 Colin Guthrie +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/module-filter-{apply,heuristics}*.c +Copyright: + Copyright 2011 Colin Guthrie +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/module-solaris.c +Copyright: + Copyright 2006 Lennart Poettering + Copyright 2006-2007 Pierre Ossman for Cendio AB + Copyright 2009 Finn Thain +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/modules/module-switch-on-connect.c +Copyright: + Copyright 2006 Lennart Poettering + Copyright 2009 Canonical Ltd +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/module-virtual-s{ink,ource}.c +Copyright: + Copyright 2010 Intel Corporation + Contributor: Pierre-Louis Bossart +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/modules/reserve.* +Copyright: + Copyright 2009 (C) Lennart Poettering +License: + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation files + (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, + publish, distribute, sublicense, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +Files: src/pulsecore/atomic.h +Copyright: + Copyright (C) 2006-2008 Lennart Poettering + Copyright (C) 2008 Nokia Corporation +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/pulsecore/core-util.c +Copyright: + Copyright (C) 2004-2006 Lennart Poettering + Copyright (C) 2004 Joe Marcus Clarke + Copyright (C) 2006-2007 Pierre Ossman for Cendio AB +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: src/pulse/ext-device-manager.* +Copyright: + Copyright (C) 2008 Lennart Poettering + Copyright (C) 2009 Colin Guthrie +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/pulsecore/ffmpeg/avcodec.h +Copyright: + Copyright (c) 2001 Fabrice Bellard +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/pulsecore/ffmpeg/resample2.c +Copyright: + Copyright (c) 2004 Michael Niedermayer +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: src/pulsecore/socket-util.c +Copyright: + Copyright (C) 2004-2006 Lennart Poettering + Copyright (C) 2004 Joe Marcus Clarke + Copyright (C) 2006-2007 Pierre Ossman for Cendio AB +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: man/xmltoman +Copyright: + Copyright (C) 2000-2002 Oliver Kurth + Copyright (C) 2003 Lennart Poettering +License: LGPL-2+ + On Debian systems, the complete text of the LGPL-2 can be found in + /usr/share/common-licenses/LGPL-2. + +File: po/ca.po +Copyright: + Copyright (C) 2008 Xavier Conde Rueda + Copyright (C) 2009 Agustí Grau , 2009. + Copyright (C) Judith Pintó Subirada + Copyright (C) 2009 Josep Torné Llavall + +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/cs.po +Copyright: + Copyright (C) 2008,2009 Petr Kovar +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/de.po +Copyright: + Copyright (C) 2008,2009 Fabian Affolter + Copyright (C) 2008,2009 Micha Pietsch +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/de_CH.po +Copyright: + Copyright (C) 2008, 2009 Fabian Affolter + Copyright (C) 2008, 2009 Micha Pietsch +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/el.po +Copyright: + Copyright (C) 2008 Dimitris Glezos + Copyright (C) 2009 Thalia Papoutsaki +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/es.po +Copyright: + Copyright (C) 2009 Domingo Becker + Copyright (C) 2008 Hector Daniel Cabrera + Copyright (C) 2009 Fernando Gonzalez Blanco +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/fi.po +Copyright: + Copyright (C) 2009 Timo Jyrinki + Copyright (C) 2009 Ville-Pekka Vainio +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/fr.po +Copyright: + Copyright (C) 2008 Robert-Andre Mauchin + Copyright (C) 2008 Michael Ughetto + Copyright (C) 2008 Pablo Martin-Gomez + Copyright (C) 2009 Corentin Perard +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/gu.po +Copyright: + Copyright (C) 2009 Sweta Kothari +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/hi.po +Copyright: + Copyright (C) 2009 Rajesh Ranjan +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/it.po +Copyright: + Copyright (C) 2008,2009 Luca Ferretti + Copyright (C) 2009 Milo Casagrande + Copyright (C) 2009 ario_santagiuliana + Copyright (C) 2009 Milo Casagrande + +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/ja.po +Copyright: + Copyright (C) 2009 Hyu_gabaru Ryu_ichi +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/kn.po +Copyright: + Copyright (C) 2009 Shankar Prasad +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/mr.po +Copyright: + Copyright (C) 2009 Sandeep Shedmake + Copyright (C) 2009 Sandeep Shedmake +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/nl.po +Copyright: + Copyright (C) 2009 Geert Warrink + Copyright (C) 2009 Reinout van Schouwen +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/or.po +Copyright: + Copyright (C) 2009 Manoj Kumar Giri +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/pa.po +Copyright: + Copyright (C) 2009 Amanpreet Singh Alam + Copyright (C) 2009 Jaswinder Singh + Copyright (C) 2009 A S Alam +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/pl.po +Copyright: + Copyright (C) 2008 Piotr Drag +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/pt_BR.po +Copyright: + Copyright (C) 2008 Fabian Affolter +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/sr.po, po/sr@latin.po +Copyright: + Copyright (C) 2009 Igor Miletic (Игор Милетић) , 2009. + Copyright (C) 2009 Miloš Komarčević , 2009. +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/sv.po +Copyright: + Copyright (C) 2008 Daniel Nylander +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/ta.po +Copyright: + Copyright (C) 2009 I. Felix +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/te.po +Copyright: + Copyright (C) 2009 Krishna Babu K +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/uk.po +Copyright: + Copyright (C) 2009 Yuri Chornoivan +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +File: po/zh_CN.po +Copyright: + Copyright (C) 2008 闫丰刚 (sainry) +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + +Files: debian/* +Copyright: + Copyright 2006-2009 Sjoerd Simons + Copyright 2006-2008 CJ van den Berg +License: GPL-2+ + On Debian systems, the complete text of the GPL-2 can be found in + /usr/share/common-licenses/GPL-2. + +Files: src/pulsecore/cpu-*, src/pulsecore/remap*, + src/pulsecore/svolume_{arm,mmx,sse}.c +Copyright: + Copyright 2004-2006 Lennart Poettering + Copyright 2009 Wim Taymans +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + + +Files: src/pulsecore/sconv_sse.c +Copyright: + Copyright 2004-2006 Lennart Poettering + Copyright 2006 Pierre Ossman for Cendio AB +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. + + +Files: src/pulsecore/usergroup.* +Copyright: + Copyright 2009 Ted Percival +License: LGPL-2.1+ + On Debian systems, the complete text of the LGPL-2.1 can be found in + /usr/share/common-licenses/LGPL-2.1. --- pulseaudio-1.1.orig/debian/pulseaudio.shlibs +++ pulseaudio-1.1/debian/pulseaudio.shlibs @@ -0,0 +1 @@ +libpulsecore 1.1 pulseaudio --- pulseaudio-1.1.orig/debian/pulseaudio-module-zeroconf.install +++ pulseaudio-1.1/debian/pulseaudio-module-zeroconf.install @@ -0,0 +1,3 @@ +usr/lib/pulse-*/modules/libavahi-wrap.so +usr/lib/pulse-*/modules/module-zeroconf-discover.so +usr/lib/pulse-*/modules/module-zeroconf-publish.so --- pulseaudio-1.1.orig/debian/libpulse-dev.examples +++ pulseaudio-1.1/debian/libpulse-dev.examples @@ -0,0 +1,2 @@ +src/tests/pacat-simple.c +src/tests/parec-simple.c --- pulseaudio-1.1.orig/debian/pulseaudio.manpages +++ pulseaudio-1.1/debian/pulseaudio.manpages @@ -0,0 +1,5 @@ +debian/tmp/usr/share/man/man1/pulseaudio.1 +debian/tmp/usr/share/man/man5/pulse-client.conf.5 +debian/tmp/usr/share/man/man5/pulse-daemon.conf.5 +debian/tmp/usr/share/man/man1/start-pulseaudio-kde.1 +debian/tmp/usr/share/man/man1/start-pulseaudio-x11.1 --- pulseaudio-1.1.orig/debian/README.Debian +++ pulseaudio-1.1/debian/README.Debian @@ -0,0 +1,38 @@ +pulseaudio for Debian (and Ubuntu) +---------------------------------- + +The pulseaudio executable is installed suid root. In the near future, the +current Suggests for rtkit may be promoted, as upstream developers +strongly recommend that latter approach instead. + +The original intent of its suid status was to allow running with realtime +priority (now handled by rtkit). After grabbing the realtime capability, +pulseaudio drops all other root privileges. Historically, only users in +the pulse-rt group were granted realtime privileges. + +PLEASE NOTE: PulseAudio's default configuration uses high quality sample +rate conversion that may be overly CPU intensive. If PulseAudio's CPU usage +is unacceptable on your hardware, please change the resample-method option +in /etc/pulse/daemon.conf to either src-linear or trivial. See daemon.conf +for more details. + + -- Daniel T Chen Fri, 17 Dec 2010 20:14:50 -0500 + +based on work by + + -- CJ van den Berg , Mon, 28 Aug 2006 00:31:10 +0200 + + +In Ubuntu 9.10 and later releases, the default resampling option has been +set to speex-float-1. Also note that per-user session daemon invocation is +used (see comments in /etc/default/pulseaudio). If you wish to prevent per- +user session daemons from being invoked, remember to edit +/etc/pulse/client.conf (or create ~/.pulse/client.conf) and ensure that +"autospawn = no" is present and uncommented. + +In Ubuntu 10.04, CJ's caveat above regarding suid root is no longer +applicable thanks to a Linux 2.6.32 base and the use of RtKit. + +Please use "ubuntu-bug pulseaudio" to file defect reports. + + -- Daniel T Chen , Mon, 23 Nov 2009 07:57:30 -0500 --- pulseaudio-1.1.orig/debian/libpulse0.install +++ pulseaudio-1.1/debian/libpulse0.install @@ -0,0 +1,4 @@ +etc/pulse/client.conf +usr/lib/*/libpulse.so.* +usr/lib/*/libpulse-simple.so.* +usr/lib/*/libpulsecommon-*.so --- pulseaudio-1.1.orig/debian/compat +++ pulseaudio-1.1/debian/compat @@ -0,0 +1 @@ +5 --- pulseaudio-1.1.orig/debian/pulseaudio.postrm +++ pulseaudio-1.1/debian/pulseaudio.postrm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +#DEBHELPER# + +if [ "$1" = "purge" ] ; then + deluser --quiet --system pulse > /dev/null || true + delgroup --quiet --system pulse-access > /dev/null || true +fi + +exit 0 --- pulseaudio-1.1.orig/debian/pulseaudio-module-raop.install +++ pulseaudio-1.1/debian/pulseaudio-module-raop.install @@ -0,0 +1 @@ +usr/lib/pulse-*/modules/*raop* --- pulseaudio-1.1.orig/debian/pulseaudio-module-lirc.install +++ pulseaudio-1.1/debian/pulseaudio-module-lirc.install @@ -0,0 +1 @@ +usr/lib/pulse-*/modules/module-lirc.so --- pulseaudio-1.1.orig/debian/pulseaudio-esound-compat.links +++ pulseaudio-1.1/debian/pulseaudio-esound-compat.links @@ -0,0 +1 @@ +usr/bin/esdcompat usr/bin/esd --- pulseaudio-1.1.orig/debian/watch +++ pulseaudio-1.1/debian/watch @@ -0,0 +1,7 @@ +# Control file for uscan +# Run the "uscan" command to check for upstream updates and more. +# See uscan(1) for format + +# Compulsory line, this is a version 3 file +version=3 +http://freedesktop.org/software/pulseaudio/releases/pulseaudio-(.*)\.tar\.gz --- pulseaudio-1.1.orig/debian/pulseaudio.install +++ pulseaudio-1.1/debian/pulseaudio.install @@ -0,0 +1,83 @@ +etc/pulse/default.pa +etc/pulse/system.pa +etc/pulse/daemon.conf +etc/dbus-1/system.d/pulseaudio-system.conf +etc/xdg/autostart/pulseaudio.desktop +etc/xdg/autostart/pulseaudio-kde.desktop +usr/bin/pulseaudio +usr/bin/start-pulseaudio-x11 +usr/bin/start-pulseaudio-kde +usr/lib/pulse-*/modules/libalsa-util.so +usr/lib/pulse-*/modules/libcli.so +usr/lib/pulse-*/modules/libprotocol-cli.so +usr/lib/pulse-*/modules/libprotocol-http.so +usr/lib/pulse-*/modules/libprotocol-native.so +usr/lib/pulse-*/modules/libprotocol-simple.so +usr/lib/pulse-*/modules/librtp.so +usr/lib/pulse-*/modules/module-alsa-sink.so +usr/lib/pulse-*/modules/module-alsa-source.so +usr/lib/pulse-*/modules/module-always-sink.so +usr/lib/pulse-*/modules/module-console-kit.so +usr/lib/pulse-*/modules/module-device-restore.so +usr/lib/pulse-*/modules/module-echo-cancel.so +usr/lib/pulse-*/modules/module-stream-restore.so +usr/lib/pulse-*/modules/module-cli-protocol-tcp.so +usr/lib/pulse-*/modules/module-cli-protocol-unix.so +usr/lib/pulse-*/modules/module-cli.so +usr/lib/pulse-*/modules/module-combine.so +usr/lib/pulse-*/modules/module-default-device-restore.so +usr/lib/pulse-*/modules/module-detect.so +usr/lib/pulse-*/modules/module-esound-sink.so +usr/lib/pulse-*/modules/module-http-protocol-tcp.so +usr/lib/pulse-*/modules/module-http-protocol-unix.so +usr/lib/pulse-*/modules/module-intended-roles.so +usr/lib/pulse-*/modules/module-ladspa-sink.so +usr/lib/pulse-*/modules/module-match.so +usr/lib/pulse-*/modules/module-mmkbd-evdev.so +usr/lib/pulse-*/modules/module-native-protocol-fd.so +usr/lib/pulse-*/modules/module-native-protocol-tcp.so +usr/lib/pulse-*/modules/module-native-protocol-unix.so +usr/lib/pulse-*/modules/module-udev-detect.so +usr/lib/pulse-*/modules/module-loopback.so +usr/share/alsa +usr/share/apport +usr/share/lintian/overrides/pulseaudio +usr/lib/pulse-*/modules/module-null-sink.so +usr/lib/pulse-*/modules/module-oss.so +usr/lib/pulse-*/modules/liboss-util.so +usr/lib/pulse-*/modules/module-pipe-sink.so +usr/lib/pulse-*/modules/module-pipe-source.so +usr/lib/pulse-*/modules/module-position-event-sounds.so +usr/lib/pulse-*/modules/module-remap-sink.so +usr/lib/pulse-*/modules/module-rescue-streams.so +usr/lib/pulse-*/modules/module-rtp-recv.so +usr/lib/pulse-*/modules/module-rtp-send.so +usr/lib/pulse-*/modules/module-simple-protocol-tcp.so +usr/lib/pulse-*/modules/module-simple-protocol-unix.so +usr/lib/pulse-*/modules/module-sine.so +usr/lib/pulse-*/modules/module-tunnel-sink.so +usr/lib/pulse-*/modules/module-tunnel-source.so +usr/lib/pulse-*/modules/module-suspend-on-idle.so +usr/lib/pulse-*/modules/module-volume-restore.so +usr/lib/pulse-*/modules/module-alsa-card.so +usr/lib/pulse-*/modules/module-augment-properties.so +usr/lib/pulse-*/modules/module-card-restore.so +usr/lib/pulse-*/modules/module-cork-music-on-phone.so +usr/lib/pulse-*/modules/module-sine-source.so +usr/lib/pulse-*/modules/module-rygel-media-server.so +usr/lib/pulse-*/modules/module-device-manager.so +usr/lib/pulse-*/modules/module-combine-sink.so +usr/lib/pulse-*/modules/module-dbus-protocol.so +usr/lib/pulse-*/modules/module-filter-apply.so +usr/lib/pulse-*/modules/module-filter-heuristics.so +usr/lib/pulse-*/modules/module-null-source.so +usr/lib/pulse-*/modules/module-switch-on-connect.so +usr/lib/pulse-*/modules/module-switch-on-port-available.so +usr/lib/pulse-*/modules/module-virtual-sink.so +usr/lib/pulse-*/modules/module-virtual-source.so +lib/udev/rules.d/90-pulseaudio.rules +usr/share/locale +usr/share/pulseaudio +usr/lib/*/libpulsecore-*.so usr/lib +usr/lib/pm-utils/sleep.d/01PulseAudio +usr/share/man/man5/default.pa.5 --- pulseaudio-1.1.orig/debian/pulseaudio.preinst +++ pulseaudio-1.1/debian/pulseaudio.preinst @@ -0,0 +1,27 @@ +#!/bin/sh + +case "$1" in + install|upgrade) + if dpkg --compare-versions "$2" lt "1:0.9.16~test1-0ubuntu1~ppa2"; then + if getent group pulse-rt > /dev/null ; then + delgroup --quiet --system pulse-rt > /dev/null || true + fi + fi + + if dpkg --compare-versions "$2" lt "1:0.9.21-0ubuntu1"; then + if [ -f /etc/X11/Xsession.d/70pulseaudio ]; then + rm /etc/X11/Xsession.d/70pulseaudio + fi + fi + ;; + abort-upgrade) + ;; + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 --- pulseaudio-1.1.orig/debian/pulseaudio-esound-compat.manpages +++ pulseaudio-1.1/debian/pulseaudio-esound-compat.manpages @@ -0,0 +1 @@ +debian/tmp/usr/share/man/man1/esdcompat.1 --- pulseaudio-1.1.orig/debian/pulseaudio-module-gconf.install +++ pulseaudio-1.1/debian/pulseaudio-module-gconf.install @@ -0,0 +1,2 @@ +usr/lib/pulseaudio/pulse/gconf-helper +usr/lib/pulse-*/modules/module-gconf.so --- pulseaudio-1.1.orig/debian/pulseaudio-module-x11.install +++ pulseaudio-1.1/debian/pulseaudio-module-x11.install @@ -0,0 +1,2 @@ +usr/lib/pulse-*/modules/module-x11*.so +usr/share/lintian/overrides/pulseaudio-module-x11 --- pulseaudio-1.1.orig/debian/pulseaudio-module-jack.install +++ pulseaudio-1.1/debian/pulseaudio-module-jack.install @@ -0,0 +1,3 @@ +usr/lib/pulse-*/modules/module-jack-sink.so +usr/lib/pulse-*/modules/module-jack-source.so +usr/lib/pulse-*/modules/module-jackdbus-detect.so --- pulseaudio-1.1.orig/debian/pulseaudio.dirs +++ pulseaudio-1.1/debian/pulseaudio.dirs @@ -0,0 +1 @@ +var/lib/pulseaudio --- pulseaudio-1.1.orig/debian/control +++ pulseaudio-1.1/debian/control @@ -0,0 +1,414 @@ +Source: pulseaudio +Section: sound +Priority: optional +Maintainer: Ubuntu Core Developers +XSBC-Original-Maintainer: Pulseaudio maintenance team +Uploaders: CJ van den Berg , Sjoerd Simons +Build-Depends: debhelper (>= 8.1.3), cdbs (>= 0.4.93), quilt, m4, libltdl-dev, + libsamplerate0-dev, libsndfile1-dev (>= 1.0.20), libglib2.0-dev, + libasound2-dev (>= 1.0.19) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], + libavahi-client-dev, libjack-dev, libwrap0-dev,, libasyncns-dev, + liblircclient-dev, libgconf2-dev, libspeexdsp-dev (>= 1.2~rc1), liborc-0.4-dev, + libbluetooth-dev (>= 3.0) [!kfreebsd-i386 !kfreebsd-amd64 !hurd-i386], + libtdb-dev, intltool, libgtk2.0-dev, libxtst-dev, libssl-dev, libudev-dev (>= 143), + libice-dev, libxi-dev, x11proto-core-dev, libxcb1-dev (>= 1.6), libx11-xcb-dev, + automake, autoconf, libtool, libjson0-dev, dh-autoreconf, dh-translations +Standards-Version: 3.8.1 +XS-Debian-Vcs-Git: git://git.debian.org/git/pkg-pulseaudio/pulseaudio.git +XS-Debian-Vcs-Browser: http://git.debian.org/?p=pkg-pulseaudio/pulseaudio.git +Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-audio-dev/pulseaudio/ubuntu.precise +Homepage: http://www.pulseaudio.org + +Package: pulseaudio +Architecture: any +Multi-Arch: foreign +Depends: ${shlibs:Depends}, ${misc:Depends}, adduser, + lsb-base (>= 3), consolekit, libasound2-plugins, pulseaudio-utils +Conflicts: libltdl3 (<< 1.5.24-1), pulseaudio-module-udev (<< ${binary:Version}), + pulseaudio-module-rygel-media-server (<< ${binary:Version}) +Replaces: pulseaudio-module-hal, pulseaudio-module-udev (<< ${binary:Version}), + pulseaudio-module-rygel-media-server (<< ${binary:Version}), + libpulse-browse0 (<< ${binary:Version}) +Provides: pulseaudio-module-hal, pulseaudio-module-udev, + pulseaudio-module-rygel-media-server +Recommends: pulseaudio-module-x11, gstreamer0.10-pulseaudio, rtkit +Suggests: pavumeter, paman, paprefs, pulseaudio-module-raop, pulseaudio-esound-compat +Description: PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + These are some of PulseAudio's features: + . + * High quality software mixing of multiple audio streams with support for + more than one sink/source. May be used to combine multiple sound cards + into one (with sample rate adjustment). + . + * Wide range of supported client libraries. ESD, ALSA, oss, libao and + GStreamer client applications are supported as-is. Native PulseAudio + plug-ins are also available for xmms and mplayer. + . + * Good low latency behaviour and very accurate latency measurement for + playback and recording. Ability to fully synchronize multiple playback + streams. + . + * Network transparency, allowing an application to play back or record + audio on a different machine than the one it is running on. + . + * Extensible plug-in architecture with plug-ins for jackd, multicast-rtp + lirc and avahi, just to name a few. + . + This package contains the daemon and basic module set. + +Package: pulseaudio-dbg +Architecture: any +Priority: extra +Section: debug +Depends: ${misc:Depends}, pulseaudio (= ${binary:Version}) +Replaces: pulseaudio-module-hal-dbg, pulseaudio-module-udev-dbg (<< ${binary:Version}), pulseaudio-module-rygel-media-server-dbg (<< ${binary:Version}) +Description: PulseAudio sound server detached debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains the detached debugging symbols for the daemon and + basic module set. + +Package: pulseaudio-utils +Architecture: any +Multi-Arch: foreign +Depends: ${shlibs:Depends}, ${misc:Depends}, libpulsedsp +Suggests: avahi-daemon +Description: Command line tools for the PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + These tools provide command line access to various features of the + PulseAudio sound server. Included tools are: + . + paplay - Playback a WAV file via a PulseAudio sink. + pacat - Cat raw audio data to a PulseAudio sink. + parec - Cat raw audio data from a PulseAudio source. + pacmd - Connect to PulseAudio's built-in command line control interface. + pactl - Send a control command to a PulseAudio server. + padsp - /dev/dsp wrapper to transparently support OSS applications. + pax11publish - Store/retrieve PulseAudio default server/sink/source + settings in the X11 root window. + +Package: pulseaudio-utils-dbg +Architecture: any +Priority: extra +Section: debug +Depends: ${misc:Depends}, pulseaudio-utils (= ${binary:Version}) +Description: PulseAudio command line tools detached debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains detached debugging symbols for the command line tools. + +Package: pulseaudio-esound-compat +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: esound, pulseaudio (<< 0.9.7) +Replaces: esound +Provides: esound +Description: PulseAudio ESD compatibility layer + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains the ESD compatibility components used by some + older versions of complete desktop environments, e.g., GNOME, and + many useful applications. It enables a PulseAudio sound server to + fully replace ESD. + +Package: pulseaudio-esound-compat-dbg +Architecture: any +Priority: extra +Section: debug +Depends: ${misc:Depends}, pulseaudio-esound-compat (= ${binary:Version}) +Description: PulseAudio ESD compatibility layer debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains debugging symbols for the ESD compatibility components. + +Package: pulseaudio-module-zeroconf +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, avahi-daemon +Description: Zeroconf module for PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This module enables PulseAudio to publish available sinks and sources via + zeroconf (aka. Avahi, mdns). + . + The module is called module-zeroconf-publish. + +Package: pulseaudio-module-zeroconf-dbg +Architecture: any +Priority: extra +Section: debug +Depends: ${misc:Depends}, pulseaudio-module-zeroconf (= ${binary:Version}) +Description: Zeroconf module for PulseAudio sound server debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains detached debugging symbols for the zeroconf module. + +Package: pulseaudio-module-jack +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: jackd modules for PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + These modules enables PulseAudio to connect to a jackd daemon. + . + The modules are called module-jack-sink, module-jack-source. + +Package: pulseaudio-module-jack-dbg +Architecture: any +Priority: extra +Section: debug +Depends: ${misc:Depends}, pulseaudio-module-jack (= ${binary:Version}) +Description: jackd modules for PulseAudio sound server debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains debugging symbols for the PulseAudio jack modules. + +Package: pulseaudio-module-lirc +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: lirc module for PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This module enables the volume of a PulseAudio sink to be controlled when + buttons of an infrared remote control are pressed (through LIRC). + . + The module is called module-lirc. + +Package: pulseaudio-module-lirc-dbg +Architecture: any +Priority: extra +Section: debug +Depends: ${misc:Depends}, pulseaudio-module-lirc (= ${binary:Version}) +Description: lirc module for PulseAudio sound server debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains debugging symbols for the PulseAudio lirc module. + +Package: pulseaudio-module-gconf +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: GConf module for PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This module enables PulseAudio to store additional configuration in GConf. + . + The module is called module-gconf. + +Package: pulseaudio-module-gconf-dbg +Architecture: any +Priority: extra +Section: debug +Depends: ${misc:Depends}, pulseaudio-module-gconf (= ${binary:Version}) +Description: GConf module for PulseAudio sound server debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains debugging symbols for the PulseAudio GConf module. + +Package: pulseaudio-module-raop +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, pulseaudio-module-zeroconf +Description: RAOP module for PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This module enables PulseAudio to stream audio to an Apple Airport Express. + +Package: pulseaudio-module-raop-dbg +Architecture: any +Priority: extra +Section: debug +Depends: ${shlibs:Depends}, ${misc:Depends}, + pulseaudio-module-raop (= ${binary:Version}) +Description: RAOP module for PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains debugging symbols for the PulseAudio RAOP module. + +Package: pulseaudio-module-bluetooth +Architecture: alpha amd64 arm armel armhf hppa i386 ia64 mips mipsel powerpc s390 sparc +Priority: extra +Depends: ${shlibs:Depends}, ${misc:Depends} +Conflicts: pulseaudio (<< 0.9.14-2) +Description: Bluetooth module for PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This module enables PulseAudio to work with bluetooth devices, like headset + or audio gateway. + . + The module is called module-bluetooth + +Package: pulseaudio-module-bluetooth-dbg +Architecture: alpha amd64 arm armel armhf hppa i386 ia64 mips mipsel powerpc s390 sparc +Priority: extra +Section: debug +Depends: ${misc:Depends}, pulseaudio-module-bluetooth (= ${binary:Version}) +Description: Bluetooth module for PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains debugging symbols for the PulseAudio bluetooth module. + +Package: pulseaudio-module-x11 +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, pulseaudio-utils +Description: X11 module for PulseAudio sound server + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This module enables PulseAudio to publish itself as the default sound + server to the X11 root window automatically upon startup. There is also a + module to playback a sound file in place of the X11 bell beep. + . + The modules are called module-x11-publish and module-x11-bell. + +Package: pulseaudio-module-x11-dbg +Architecture: any +Priority: extra +Section: debug +Depends: ${misc:Depends}, pulseaudio-module-x11 (= ${binary:Version}) +Description: X11 module for PulseAudio sound server debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains debugging symbols for the PulseAudio X11 modules. + +Package: libpulse0 +Section: libs +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Breaks: pavucontrol (<< 0.9.8) +Suggests: pulseaudio +Description: PulseAudio client libraries + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + Client libraries used by applications that access a PulseAudio sound server + via PulseAudio's native interface. + +Package: libpulse0-dbg +Section: debug +Architecture: any +Multi-Arch: same +Priority: extra +Depends: ${misc:Depends}, libpulse0 (= ${binary:Version}) +Description: PulseAudio client libraries detached debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains detached debugging symbols for the PulseAudio native + interface client libraries. + +Package: libpulse-mainloop-glib0 +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: PulseAudio client libraries (glib support) + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + Client libraries used by applications that access a PulseAudio sound server + via PulseAudio's native interface. + . + This package adds support for glib2 client applications. + +Package: libpulse-mainloop-glib0-dbg +Section: debug +Architecture: any +Multi-Arch: same +Priority: extra +Depends: ${misc:Depends}, libpulse-mainloop-glib0 (= ${binary:Version}) +Description: PulseAudio client libraries (glib support) debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains detached debugging symbols for the PulseAudio native + interface glib support client libraries. + +Package: libpulse-dev +Section: libdevel +Architecture: any +Multi-Arch: same +Depends: ${misc:Depends}, + libpulse0 (= ${binary:Version}), + libpulse-mainloop-glib0 (= ${binary:Version}), + libglib2.0-dev, + libavahi-client-dev +Description: PulseAudio client development headers and libraries + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + Headers and libraries for developing applications that access a PulseAudio + sound server via PulseAudio's native interface. + +Package: libpulsedsp +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: PulseAudio OSS pre-load library + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package provides the pre-load library used to redirect applications + using OSS through pulseaudio. + +Package: libpulsedsp-dbg +Architecture: any +Multi-Arch: same +Priority: extra +Section: debug +Depends: ${misc:Depends}, libpulsedsp (= ${binary:Version}) +Description: PulseAudio OSS pre-load library detatched debugging symbols + PulseAudio, previously known as Polypaudio, is a sound server for POSIX and + WIN32 systems. It is a drop in replacement for the ESD sound server with + much better latency, mixing/re-sampling quality and overall architecture. + . + This package contains detatched debugging symbols for the OSS pre-load + library. --- pulseaudio-1.1.orig/debian/pulseaudio-utils.manpages +++ pulseaudio-1.1/debian/pulseaudio-utils.manpages @@ -0,0 +1,7 @@ +debian/tmp/usr/share/man/man1/pacat.1 +debian/tmp/usr/share/man/man1/pacmd.1 +debian/tmp/usr/share/man/man1/pactl.1 +debian/tmp/usr/share/man/man1/padsp.1 +debian/tmp/usr/share/man/man1/paplay.1 +debian/tmp/usr/share/man/man1/pasuspender.1 +debian/tmp/usr/share/man/man1/pax11publish.1 --- pulseaudio-1.1.orig/debian/pulseaudio-module-bluetooth.install +++ pulseaudio-1.1/debian/pulseaudio-module-bluetooth.install @@ -0,0 +1,7 @@ +usr/lib/pulse-*/modules/module-bluetooth-proximity.so +usr/lib/pulse-*/modules/module-bluetooth-device.so +usr/lib/pulse-*/modules/module-bluetooth-discover.so +usr/lib/pulse-*/modules/libbluetooth-ipc.so +usr/lib/pulse-*/modules/libbluetooth-sbc.so +usr/lib/pulse-*/modules/libbluetooth-util.so +usr/lib/pulseaudio/pulse/proximity-helper --- pulseaudio-1.1.orig/debian/01PulseAudio +++ pulseaudio-1.1/debian/01PulseAudio @@ -0,0 +1,98 @@ +#! /bin/sh + +. "${PM_FUNCTIONS}" + +test_pulse_system() { + getent passwd pulse | awk -F: '{print $3}' +} + +get_pulse_users() { + PULSE_SYSTEM_USER=$(test_pulse_system) + if [ -z "${PULSE_SYSTEM_USER}" ]; then + ps -C pulseaudio -o uid= | tr -d ' ' + else + ps -C pulseaudio -o uid= | tr -d ' ' | sed s/${PULSE_SYSTEM_USER}// + fi +} + +# $1 = sink|source +# $2 = username +save_pulse_state() { + su "${2}" -c -- "pacmd list-${1}s" | \ + sed -n "s/^[[:space:]*]*//; /\(index\|mute\)/p" | \ + (index=""; + while read field value; do + if [ ${field%:} = "index" ]; then + index=${value} + else + savestate pulse:"${2}":${1}${index} ${value} + fi + done) +} + +# $1 = sink|source +# $2 = username +restore_pulse_state() { + su "${2}" -c -- "pacmd list-${1}s" | \ + sed -n "s/^[[:space:]*]*index: //p" | \ + while read index; do + if state_exists pulse:"${2}":${1}${index}; then + su "${2}" -c -- "pacmd \ + set-${1}-mute \ + ${index} \ + $(restorestate pulse:"${2}":${1}${index})" + fi + done +} + +# $1 = sink|source +# $2 = username +mute_pulse() { + su "${2}" -c -- "pacmd list-${1}s" | \ + sed -n "s/^[[:space:]*]*//; /\(index\|mute\)/p" | \ + (index=""; + while read field value; do + if [ ${field%:} = "index" ]; then + index=${value} + su "${2}" -c -- "pacmd \ + set-${1}-mute ${index} yes" + fi + done) +} + +suspend_pulse() { + for i in $(get_pulse_users); do + THIS_USER="$(getent passwd ${i} | cut -f1 -d:)" + save_pulse_state sink "${THIS_USER}" + save_pulse_state source "${THIS_USER}" + su "${THIS_USER}" -c -- 'pacmd suspend true' > /dev/null 2>&1 + done + for i in $(get_pulse_users); do + THIS_USER="$(getent passwd ${i} | cut -f1 -d:)" + if su "${THIS_USER}" -c -- 'ck-list-sessions | grep "active = TRUE"' > /dev/null 2>&1; then + mute_pulse sink "${THIS_USER}" + mute_pulse source "${THIS_USER}" + break + fi + done +} + +resume_pulse() { + for i in $(get_pulse_users); do + THIS_USER="$(getent passwd ${i} | cut -f1 -d:)" + restore_pulse_state sink "${THIS_USER}" + restore_pulse_state source "${THIS_USER}" + su "${THIS_USER}" -c -- 'pacmd suspend false' > /dev/null 2>&1 + done +} + +case $1 in + hibernate|suspend) + suspend_pulse + ;; + thaw|resume) + resume_pulse + ;; + *) exit $NA + ;; +esac --- pulseaudio-1.1.orig/debian/libpulse-dev.install +++ pulseaudio-1.1/debian/libpulse-dev.install @@ -0,0 +1,7 @@ +usr/lib/*/cmake +usr/lib/*/libpulse.so +usr/lib/*/libpulse-simple.so +usr/lib/*/libpulse-mainloop-glib.so +usr/lib/*/pkgconfig/* +usr/include/pulse/* +usr/share/vala/vapi --- pulseaudio-1.1.orig/debian/libpulsedsp.install +++ pulseaudio-1.1/debian/libpulsedsp.install @@ -0,0 +1,2 @@ +usr/lib/*/libpulsedsp.so +usr/share/lintian/overrides/libpulsedsp --- pulseaudio-1.1.orig/debian/pulseaudio.postinst +++ pulseaudio-1.1/debian/pulseaudio.postinst @@ -0,0 +1,45 @@ +#! /bin/sh +# postinst script for pulseaudio + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + +PULSEAUDIO=/usr/bin/pulseaudio + +case "$1" in + configure) + if ! getent passwd pulse >/dev/null; then + adduser --disabled-password --quiet --system \ + --home /var/run/pulse --no-create-home\ + --gecos "PulseAudio daemon" --group pulse + adduser --quiet pulse audio + fi + if ! getent group pulse-access >/dev/null; then + addgroup --quiet --system pulse-access + fi + + if dpkg --compare-versions "$2" lt-nl "0.9.14-0ubuntu9"; then + update-rc.d -f pulseaudio remove + fi + ;; + abort-upgrade|abort-remove|abort-deconfigure) + ;; + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 --- pulseaudio-1.1.orig/debian/pulseaudio-esound-compat.install +++ pulseaudio-1.1/debian/pulseaudio-esound-compat.install @@ -0,0 +1,6 @@ +usr/bin/esdcompat +usr/lib/pulse-*/modules/libprotocol-esound.so +usr/lib/pulse-*/modules/module-esound-compat-spawnfd.so +usr/lib/pulse-*/modules/module-esound-compat-spawnpid.so +usr/lib/pulse-*/modules/module-esound-protocol-tcp.so +usr/lib/pulse-*/modules/module-esound-protocol-unix.so --- pulseaudio-1.1.orig/debian/pulseaudio.init +++ pulseaudio-1.1/debian/pulseaudio.init @@ -0,0 +1,82 @@ +#!/bin/sh -e +### BEGIN INIT INFO +# Provides: pulseaudio esound +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Should-Start: udev NetworkManager +# Should-Stop: udev NetworkManager +# Default-Start: 2 3 4 5 +# Default-Stop: 1 +# Short-Description: Start the PulseAudio sound server +# Description: System mode startup script for +# the PulseAudio sound server. +### END INIT INFO + +DAEMON=/usr/bin/pulseaudio +PIDDIR=/var/run/pulse +PIDFILE=$PIDDIR/pid +DAEMONUSER=pulse +PATH=/sbin:/bin:/usr/sbin:/usr/bin + +test -x $DAEMON || exit 0 + +. /lib/lsb/init-functions + +PULSEAUDIO_SYSTEM_START=0 +DISALLOW_MODULE_LOADING=1 +test -f /etc/default/pulseaudio && . /etc/default/pulseaudio +if [ "$PULSEAUDIO_SYSTEM_START" != "1" ]; then + exit 0 +fi + +pulseaudio_start () { + log_daemon_msg "Starting system PulseAudio Daemon" + if [ ! -d $PIDDIR ]; then + mkdir -p $PIDDIR + chown $DAEMONUSER:$DAEMONUSER $PIDDIR + fi + start-stop-daemon -x $DAEMON -p $PIDFILE --start -- --system --daemonize --high-priority --log-target=syslog --disallow-exit --disallow-module-loading=$DISALLOW_MODULE_LOADING + status=$? + if [ -e /var/run/pulse/.esd_auth ]; then + chown pulse:pulse-access /var/run/pulse/.esd_auth + chmod 640 /var/run/pulse/.esd_auth + fi + if [ -e /var/run/pulse/.pulse-cookie ]; then + chown pulse:pulse-access /var/run/pulse/.pulse-cookie + chmod 640 /var/run/pulse/.pulse-cookie + fi + log_end_msg ${status} +} + +pulseaudio_stop () { + log_daemon_msg "Stopping system PulseAudio Daemon" + start-stop-daemon -p $PIDFILE --stop --retry 5 || echo -n "...which is not running" + log_end_msg $? +} + +case "$1" in + start|stop) + pulseaudio_${1} + ;; + restart|reload|force-reload) + if [ -s $PIDFILE ] && kill -0 $(cat $PIDFILE) >/dev/null 2>&1; then + pulseaudio_stop + pulseaudio_start + fi + ;; + force-stop) + pulseaudio_stop + killall pulseaudio || true + sleep 2 + killall -9 pulseaudio || true + ;; + status) + status_of_proc -p $PIDFILE "$DAEMON" "system-wide PulseAudio" && exit 0 || exit $? + ;; + *) + echo "Usage: /etc/init.d/pulseaudio {start|stop|force-stop|restart|reload|force-reload|status}" + exit 1 + ;; +esac + +exit 0 --- pulseaudio-1.1.orig/debian/libpulse-mainloop-glib0.install +++ pulseaudio-1.1/debian/libpulse-mainloop-glib0.install @@ -0,0 +1 @@ +usr/lib/*/libpulse-mainloop-glib.so.* --- pulseaudio-1.1.orig/debian/libpulse0.symbols +++ pulseaudio-1.1/debian/libpulse0.symbols @@ -0,0 +1,1001 @@ +libpulse-simple.so.0 libpulse0 #MINVER# + PULSE_0@PULSE_0 1:0.99.1 + pa_simple_drain@PULSE_0 1:0.99.1 + pa_simple_flush@PULSE_0 1:0.99.1 + pa_simple_free@PULSE_0 1:0.99.1 + pa_simple_get_latency@PULSE_0 1:0.99.1 + pa_simple_new@PULSE_0 1:0.99.1 + pa_simple_read@PULSE_0 1:0.99.1 + pa_simple_write@PULSE_0 1:0.99.1 +libpulse.so.0 libpulse0 #MINVER# + PULSE_0@PULSE_0 1:0.99.1 + pa_ascii_filter@PULSE_0 1:0.99.1 + pa_ascii_valid@PULSE_0 1:0.99.1 + pa_bytes_per_second@PULSE_0 1:0.99.1 + pa_bytes_snprint@PULSE_0 1:0.99.1 + pa_bytes_to_usec@PULSE_0 1:0.99.1 + pa_channel_map_can_balance@PULSE_0 1:0.99.1 + pa_channel_map_can_fade@PULSE_0 1:0.99.1 + pa_channel_map_compatible@PULSE_0 1:0.99.1 + pa_channel_map_equal@PULSE_0 1:0.99.1 + pa_channel_map_has_position@PULSE_0 1:0.99.1 + pa_channel_map_init@PULSE_0 1:0.99.1 + pa_channel_map_init_auto@PULSE_0 1:0.99.1 + pa_channel_map_init_extend@PULSE_0 1:0.99.1 + pa_channel_map_init_mono@PULSE_0 1:0.99.1 + pa_channel_map_init_stereo@PULSE_0 1:0.99.1 + pa_channel_map_mask@PULSE_0 1:0.99.1 + pa_channel_map_parse@PULSE_0 1:0.99.1 + pa_channel_map_snprint@PULSE_0 1:0.99.1 + pa_channel_map_superset@PULSE_0 1:0.99.1 + pa_channel_map_to_name@PULSE_0 1:0.99.1 + pa_channel_map_to_pretty_name@PULSE_0 1:0.99.1 + pa_channel_map_valid@PULSE_0 1:0.99.1 + pa_channel_position_from_string@PULSE_0 1:0.99.1 + pa_channel_position_to_pretty_string@PULSE_0 1:0.99.1 + pa_channel_position_to_string@PULSE_0 1:0.99.1 + pa_context_add_autoload@PULSE_0 1:0.99.1 + pa_context_connect@PULSE_0 1:0.99.1 + pa_context_disconnect@PULSE_0 1:0.99.1 + pa_context_drain@PULSE_0 1:0.99.1 + pa_context_errno@PULSE_0 1:0.99.1 + pa_context_exit_daemon@PULSE_0 1:0.99.1 + pa_context_get_autoload_info_by_index@PULSE_0 1:0.99.1 + pa_context_get_autoload_info_by_name@PULSE_0 1:0.99.1 + pa_context_get_autoload_info_list@PULSE_0 1:0.99.1 + pa_context_get_card_info_by_index@PULSE_0 1:0.99.1 + pa_context_get_card_info_by_name@PULSE_0 1:0.99.1 + pa_context_get_card_info_list@PULSE_0 1:0.99.1 + pa_context_get_client_info@PULSE_0 1:0.99.1 + pa_context_get_client_info_list@PULSE_0 1:0.99.1 + pa_context_get_index@PULSE_0 1:0.99.1 + pa_context_get_module_info@PULSE_0 1:0.99.1 + pa_context_get_module_info_list@PULSE_0 1:0.99.1 + pa_context_get_protocol_version@PULSE_0 1:0.99.1 + pa_context_get_sample_info_by_index@PULSE_0 1:0.99.1 + pa_context_get_sample_info_by_name@PULSE_0 1:0.99.1 + pa_context_get_sample_info_list@PULSE_0 1:0.99.1 + pa_context_get_server@PULSE_0 1:0.99.1 + pa_context_get_server_info@PULSE_0 1:0.99.1 + pa_context_get_server_protocol_version@PULSE_0 1:0.99.1 + pa_context_get_sink_info_by_index@PULSE_0 1:0.99.1 + pa_context_get_sink_info_by_name@PULSE_0 1:0.99.1 + pa_context_get_sink_info_list@PULSE_0 1:0.99.1 + pa_context_get_sink_input_info@PULSE_0 1:0.99.1 + pa_context_get_sink_input_info_list@PULSE_0 1:0.99.1 + pa_context_get_source_info_by_index@PULSE_0 1:0.99.1 + pa_context_get_source_info_by_name@PULSE_0 1:0.99.1 + pa_context_get_source_info_list@PULSE_0 1:0.99.1 + pa_context_get_source_output_info@PULSE_0 1:0.99.1 + pa_context_get_source_output_info_list@PULSE_0 1:0.99.1 + pa_context_get_state@PULSE_0 1:0.99.1 + pa_context_get_tile_size@PULSE_0 1:0.99.1 + pa_context_is_local@PULSE_0 1:0.99.1 + pa_context_is_pending@PULSE_0 1:0.99.1 + pa_context_kill_client@PULSE_0 1:0.99.1 + pa_context_kill_sink_input@PULSE_0 1:0.99.1 + pa_context_kill_source_output@PULSE_0 1:0.99.1 + pa_context_load_module@PULSE_0 1:0.99.1 + pa_context_move_sink_input_by_index@PULSE_0 1:0.99.1 + pa_context_move_sink_input_by_name@PULSE_0 1:0.99.1 + pa_context_move_source_output_by_index@PULSE_0 1:0.99.1 + pa_context_move_source_output_by_name@PULSE_0 1:0.99.1 + pa_context_new@PULSE_0 1:0.99.1 + pa_context_new_with_proplist@PULSE_0 1:0.99.1 + pa_context_play_sample@PULSE_0 1:0.99.1 + pa_context_play_sample_with_proplist@PULSE_0 1:0.99.1 + pa_context_proplist_remove@PULSE_0 1:0.99.1 + pa_context_proplist_update@PULSE_0 1:0.99.1 + pa_context_ref@PULSE_0 1:0.99.1 + pa_context_remove_autoload_by_index@PULSE_0 1:0.99.1 + pa_context_remove_autoload_by_name@PULSE_0 1:0.99.1 + pa_context_remove_sample@PULSE_0 1:0.99.1 + pa_context_rttime_new@PULSE_0 1:0.99.1 + pa_context_rttime_restart@PULSE_0 1:0.99.1 + pa_context_set_card_profile_by_index@PULSE_0 1:0.99.1 + pa_context_set_card_profile_by_name@PULSE_0 1:0.99.1 + pa_context_set_default_sink@PULSE_0 1:0.99.1 + pa_context_set_default_source@PULSE_0 1:0.99.1 + pa_context_set_event_callback@PULSE_0 1:0.99.1 + pa_context_set_name@PULSE_0 1:0.99.1 + pa_context_set_sink_input_mute@PULSE_0 1:0.99.1 + pa_context_set_sink_input_volume@PULSE_0 1:0.99.1 + pa_context_set_sink_mute_by_index@PULSE_0 1:0.99.1 + pa_context_set_sink_mute_by_name@PULSE_0 1:0.99.1 + pa_context_set_sink_port_by_index@PULSE_0 1:0.99.1 + pa_context_set_sink_port_by_name@PULSE_0 1:0.99.1 + pa_context_set_sink_volume_by_index@PULSE_0 1:0.99.1 + pa_context_set_sink_volume_by_name@PULSE_0 1:0.99.1 + pa_context_set_source_mute_by_index@PULSE_0 1:0.99.1 + pa_context_set_source_mute_by_name@PULSE_0 1:0.99.1 + pa_context_set_source_output_mute@PULSE_0 1:0.99.1 + pa_context_set_source_output_volume@PULSE_0 1:0.99.1 + pa_context_set_source_port_by_index@PULSE_0 1:0.99.1 + pa_context_set_source_port_by_name@PULSE_0 1:0.99.1 + pa_context_set_source_volume_by_index@PULSE_0 1:0.99.1 + pa_context_set_source_volume_by_name@PULSE_0 1:0.99.1 + pa_context_set_state_callback@PULSE_0 1:0.99.1 + pa_context_set_subscribe_callback@PULSE_0 1:0.99.1 + pa_context_stat@PULSE_0 1:0.99.1 + pa_context_subscribe@PULSE_0 1:0.99.1 + pa_context_suspend_sink_by_index@PULSE_0 1:0.99.1 + pa_context_suspend_sink_by_name@PULSE_0 1:0.99.1 + pa_context_suspend_source_by_index@PULSE_0 1:0.99.1 + pa_context_suspend_source_by_name@PULSE_0 1:0.99.1 + pa_context_unload_module@PULSE_0 1:0.99.1 + pa_context_unref@PULSE_0 1:0.99.1 + pa_cvolume_avg@PULSE_0 1:0.99.1 + pa_cvolume_avg_mask@PULSE_0 1:0.99.1 + pa_cvolume_channels_equal_to@PULSE_0 1:0.99.1 + pa_cvolume_compatible@PULSE_0 1:0.99.1 + pa_cvolume_compatible_with_channel_map@PULSE_0 1:0.99.1 + pa_cvolume_dec@PULSE_0 1:0.99.1 + pa_cvolume_equal@PULSE_0 1:0.99.1 + pa_cvolume_get_balance@PULSE_0 1:0.99.1 + pa_cvolume_get_fade@PULSE_0 1:0.99.1 + pa_cvolume_get_position@PULSE_0 1:0.99.1 + pa_cvolume_inc@PULSE_0 1:0.99.1 + pa_cvolume_inc_clamp@PULSE_0 1:0.99.1 + pa_cvolume_init@PULSE_0 1:0.99.1 + pa_cvolume_max@PULSE_0 1:0.99.1 + pa_cvolume_max_mask@PULSE_0 1:0.99.1 + pa_cvolume_merge@PULSE_0 1:0.99.1 + pa_cvolume_min@PULSE_0 1:0.99.1 + pa_cvolume_min_mask@PULSE_0 1:0.99.1 + pa_cvolume_remap@PULSE_0 1:0.99.1 + pa_cvolume_scale@PULSE_0 1:0.99.1 + pa_cvolume_scale_mask@PULSE_0 1:0.99.1 + pa_cvolume_set@PULSE_0 1:0.99.1 + pa_cvolume_set_balance@PULSE_0 1:0.99.1 + pa_cvolume_set_fade@PULSE_0 1:0.99.1 + pa_cvolume_set_position@PULSE_0 1:0.99.1 + pa_cvolume_snprint@PULSE_0 1:0.99.1 + pa_cvolume_valid@PULSE_0 1:0.99.1 + pa_encoding_to_string@PULSE_0 1:1.0 + pa_ext_device_manager_delete@PULSE_0 1:0.99.1 + pa_ext_device_manager_enable_role_device_priority_routing@PULSE_0 1:0.99.1 + pa_ext_device_manager_read@PULSE_0 1:0.99.1 + pa_ext_device_manager_reorder_devices_for_role@PULSE_0 1:0.99.1 + pa_ext_device_manager_set_device_description@PULSE_0 1:0.99.1 + pa_ext_device_manager_set_subscribe_cb@PULSE_0 1:0.99.1 + pa_ext_device_manager_subscribe@PULSE_0 1:0.99.1 + pa_ext_device_manager_test@PULSE_0 1:0.99.1 + pa_ext_device_restore_read_formats@PULSE_0 1:0.99.3 + pa_ext_device_restore_read_formats_all@PULSE_0 1:0.99.3 +#MISSING: 1:0.99.3# pa_ext_device_restore_read_sink_formats@PULSE_0 1:0.99.1 +#MISSING: 1:0.99.3# pa_ext_device_restore_read_sink_formats_all@PULSE_0 1:0.99.1 + pa_ext_device_restore_save_formats@PULSE_0 1:0.99.3 +#MISSING: 1:0.99.3# pa_ext_device_restore_save_sink_formats@PULSE_0 1:0.99.1 + pa_ext_device_restore_set_subscribe_cb@PULSE_0 1:0.99.3 + pa_ext_device_restore_subscribe@PULSE_0 1:0.99.1 + pa_ext_device_restore_test@PULSE_0 1:0.99.1 + pa_ext_stream_restore_delete@PULSE_0 1:0.99.1 + pa_ext_stream_restore_read@PULSE_0 1:0.99.1 + pa_ext_stream_restore_set_subscribe_cb@PULSE_0 1:0.99.1 + pa_ext_stream_restore_subscribe@PULSE_0 1:0.99.1 + pa_ext_stream_restore_test@PULSE_0 1:0.99.1 + pa_ext_stream_restore_write@PULSE_0 1:0.99.1 + pa_format_info_copy@PULSE_0 1:1.0 + pa_format_info_free2@PULSE_0 1:1.0 + pa_format_info_free@PULSE_0 1:1.0 + pa_format_info_from_sample_spec@PULSE_0 1:1.0 + pa_format_info_from_string@PULSE_0 1:1.0 + pa_format_info_is_compatible@PULSE_0 1:1.0 + pa_format_info_is_pcm@PULSE_0 1:1.0 + pa_format_info_new@PULSE_0 1:1.0 + pa_format_info_set_channel_map@PULSE_0 1:1.0 + pa_format_info_set_channels@PULSE_0 1:1.0 + pa_format_info_set_prop_int@PULSE_0 1:1.0 + pa_format_info_set_prop_int_array@PULSE_0 1:1.0 + pa_format_info_set_prop_int_range@PULSE_0 1:1.0 + pa_format_info_set_prop_string@PULSE_0 1:1.0 + pa_format_info_set_prop_string_array@PULSE_0 1:1.0 + pa_format_info_set_rate@PULSE_0 1:1.0 + pa_format_info_set_sample_format@PULSE_0 1:1.0 + pa_format_info_snprint@PULSE_0 1:1.0 + pa_format_info_to_sample_spec@PULSE_0 1:1.0 + pa_format_info_to_sample_spec_fake@PULSE_0 1:1.0 + pa_format_info_valid@PULSE_0 1:1.0 + pa_frame_size@PULSE_0 1:0.99.1 + pa_get_binary_name@PULSE_0 1:0.99.1 + pa_get_fqdn@PULSE_0 1:0.99.1 + pa_get_home_dir@PULSE_0 1:0.99.1 + pa_get_host_name@PULSE_0 1:0.99.1 + pa_get_library_version@PULSE_0 1:0.99.1 + pa_get_user_name@PULSE_0 1:0.99.1 + pa_gettimeofday@PULSE_0 1:0.99.1 + pa_locale_to_utf8@PULSE_0 1:0.99.1 + pa_mainloop_api_once@PULSE_0 1:0.99.1 + pa_mainloop_dispatch@PULSE_0 1:0.99.1 + pa_mainloop_free@PULSE_0 1:0.99.1 + pa_mainloop_get_api@PULSE_0 1:0.99.1 + pa_mainloop_get_retval@PULSE_0 1:0.99.1 + pa_mainloop_iterate@PULSE_0 1:0.99.1 + pa_mainloop_new@PULSE_0 1:0.99.1 + pa_mainloop_poll@PULSE_0 1:0.99.1 + pa_mainloop_prepare@PULSE_0 1:0.99.1 + pa_mainloop_quit@PULSE_0 1:0.99.1 + pa_mainloop_run@PULSE_0 1:0.99.1 + pa_mainloop_set_poll_func@PULSE_0 1:0.99.1 + pa_mainloop_wakeup@PULSE_0 1:0.99.1 + pa_msleep@PULSE_0 1:0.99.1 + pa_operation_cancel@PULSE_0 1:0.99.1 + pa_operation_get_state@PULSE_0 1:0.99.1 + pa_operation_ref@PULSE_0 1:0.99.1 + pa_operation_unref@PULSE_0 1:0.99.1 + pa_parse_sample_format@PULSE_0 1:0.99.1 + pa_path_get_filename@PULSE_0 1:0.99.1 + pa_proplist_clear@PULSE_0 1:0.99.1 + pa_proplist_contains@PULSE_0 1:0.99.1 + pa_proplist_copy@PULSE_0 1:0.99.1 + pa_proplist_equal@PULSE_0 1:0.99.1 + pa_proplist_free@PULSE_0 1:0.99.1 + pa_proplist_from_string@PULSE_0 1:0.99.1 + pa_proplist_get@PULSE_0 1:0.99.1 + pa_proplist_gets@PULSE_0 1:0.99.1 + pa_proplist_isempty@PULSE_0 1:0.99.1 + pa_proplist_iterate@PULSE_0 1:0.99.1 + pa_proplist_new@PULSE_0 1:0.99.1 + pa_proplist_set@PULSE_0 1:0.99.1 + pa_proplist_setf@PULSE_0 1:0.99.1 + pa_proplist_setp@PULSE_0 1:0.99.1 + pa_proplist_sets@PULSE_0 1:0.99.1 + pa_proplist_size@PULSE_0 1:0.99.1 + pa_proplist_to_string@PULSE_0 1:0.99.1 + pa_proplist_to_string_sep@PULSE_0 1:0.99.1 + pa_proplist_unset@PULSE_0 1:0.99.1 + pa_proplist_unset_many@PULSE_0 1:0.99.1 + pa_proplist_update@PULSE_0 1:0.99.1 + pa_rtclock_now@PULSE_0 1:0.99.1 + pa_sample_format_is_be@PULSE_0 1:0.99.1 + pa_sample_format_is_le@PULSE_0 1:0.99.1 + pa_sample_format_to_string@PULSE_0 1:0.99.1 + pa_sample_size@PULSE_0 1:0.99.1 + pa_sample_size_of_format@PULSE_0 1:0.99.1 + pa_sample_spec_equal@PULSE_0 1:0.99.1 + pa_sample_spec_init@PULSE_0 1:0.99.1 + pa_sample_spec_snprint@PULSE_0 1:0.99.1 + pa_sample_spec_valid@PULSE_0 1:0.99.1 + pa_signal_done@PULSE_0 1:0.99.1 + pa_signal_free@PULSE_0 1:0.99.1 + pa_signal_init@PULSE_0 1:0.99.1 + pa_signal_new@PULSE_0 1:0.99.1 + pa_signal_set_destroy@PULSE_0 1:0.99.1 + pa_stream_begin_write@PULSE_0 1:0.99.1 + pa_stream_cancel_write@PULSE_0 1:0.99.1 + pa_stream_connect_playback@PULSE_0 1:0.99.1 + pa_stream_connect_record@PULSE_0 1:0.99.1 + pa_stream_connect_upload@PULSE_0 1:0.99.1 + pa_stream_cork@PULSE_0 1:0.99.1 + pa_stream_disconnect@PULSE_0 1:0.99.1 + pa_stream_drain@PULSE_0 1:0.99.1 + pa_stream_drop@PULSE_0 1:0.99.1 + pa_stream_finish_upload@PULSE_0 1:0.99.1 + pa_stream_flush@PULSE_0 1:0.99.1 + pa_stream_get_buffer_attr@PULSE_0 1:0.99.1 + pa_stream_get_channel_map@PULSE_0 1:0.99.1 + pa_stream_get_context@PULSE_0 1:0.99.1 + pa_stream_get_device_index@PULSE_0 1:0.99.1 + pa_stream_get_device_name@PULSE_0 1:0.99.1 + pa_stream_get_format_info@PULSE_0 1:0.99.1 + pa_stream_get_index@PULSE_0 1:0.99.1 + pa_stream_get_latency@PULSE_0 1:0.99.1 + pa_stream_get_monitor_stream@PULSE_0 1:0.99.1 + pa_stream_get_sample_spec@PULSE_0 1:0.99.1 + pa_stream_get_state@PULSE_0 1:0.99.1 + pa_stream_get_time@PULSE_0 1:0.99.1 + pa_stream_get_timing_info@PULSE_0 1:0.99.1 + pa_stream_get_underflow_index@PULSE_0 1:0.99.1 + pa_stream_is_corked@PULSE_0 1:0.99.1 + pa_stream_is_suspended@PULSE_0 1:0.99.1 + pa_stream_new@PULSE_0 1:0.99.1 + pa_stream_new_extended@PULSE_0 1:0.99.1 + pa_stream_new_with_proplist@PULSE_0 1:0.99.1 + pa_stream_peek@PULSE_0 1:0.99.1 + pa_stream_prebuf@PULSE_0 1:0.99.1 + pa_stream_proplist_remove@PULSE_0 1:0.99.1 + pa_stream_proplist_update@PULSE_0 1:0.99.1 + pa_stream_readable_size@PULSE_0 1:0.99.1 + pa_stream_ref@PULSE_0 1:0.99.1 + pa_stream_set_buffer_attr@PULSE_0 1:0.99.1 + pa_stream_set_buffer_attr_callback@PULSE_0 1:0.99.1 + pa_stream_set_event_callback@PULSE_0 1:0.99.1 + pa_stream_set_latency_update_callback@PULSE_0 1:0.99.1 + pa_stream_set_monitor_stream@PULSE_0 1:0.99.1 + pa_stream_set_moved_callback@PULSE_0 1:0.99.1 + pa_stream_set_name@PULSE_0 1:0.99.1 + pa_stream_set_overflow_callback@PULSE_0 1:0.99.1 + pa_stream_set_read_callback@PULSE_0 1:0.99.1 + pa_stream_set_started_callback@PULSE_0 1:0.99.1 + pa_stream_set_state_callback@PULSE_0 1:0.99.1 + pa_stream_set_suspended_callback@PULSE_0 1:0.99.1 + pa_stream_set_underflow_callback@PULSE_0 1:0.99.1 + pa_stream_set_write_callback@PULSE_0 1:0.99.1 + pa_stream_trigger@PULSE_0 1:0.99.1 + pa_stream_unref@PULSE_0 1:0.99.1 + pa_stream_update_sample_rate@PULSE_0 1:0.99.1 + pa_stream_update_timing_info@PULSE_0 1:0.99.1 + pa_stream_writable_size@PULSE_0 1:0.99.1 + pa_stream_write@PULSE_0 1:0.99.1 + pa_strerror@PULSE_0 1:0.99.1 + pa_sw_cvolume_divide@PULSE_0 1:0.99.1 + pa_sw_cvolume_divide_scalar@PULSE_0 1:0.99.1 + pa_sw_cvolume_multiply@PULSE_0 1:0.99.1 + pa_sw_cvolume_multiply_scalar@PULSE_0 1:0.99.1 + pa_sw_cvolume_snprint_dB@PULSE_0 1:0.99.1 + pa_sw_volume_divide@PULSE_0 1:0.99.1 + pa_sw_volume_from_dB@PULSE_0 1:0.99.1 + pa_sw_volume_from_linear@PULSE_0 1:0.99.1 + pa_sw_volume_multiply@PULSE_0 1:0.99.1 + pa_sw_volume_snprint_dB@PULSE_0 1:0.99.1 + pa_sw_volume_to_dB@PULSE_0 1:0.99.1 + pa_sw_volume_to_linear@PULSE_0 1:0.99.1 + pa_threaded_mainloop_accept@PULSE_0 1:0.99.1 + pa_threaded_mainloop_free@PULSE_0 1:0.99.1 + pa_threaded_mainloop_get_api@PULSE_0 1:0.99.1 + pa_threaded_mainloop_get_retval@PULSE_0 1:0.99.1 + pa_threaded_mainloop_in_thread@PULSE_0 1:0.99.1 + pa_threaded_mainloop_lock@PULSE_0 1:0.99.1 + pa_threaded_mainloop_new@PULSE_0 1:0.99.1 + pa_threaded_mainloop_signal@PULSE_0 1:0.99.1 + pa_threaded_mainloop_start@PULSE_0 1:0.99.1 + pa_threaded_mainloop_stop@PULSE_0 1:0.99.1 + pa_threaded_mainloop_unlock@PULSE_0 1:0.99.1 + pa_threaded_mainloop_wait@PULSE_0 1:0.99.1 + pa_timeval_add@PULSE_0 1:0.99.1 + pa_timeval_age@PULSE_0 1:0.99.1 + pa_timeval_cmp@PULSE_0 1:0.99.1 + pa_timeval_diff@PULSE_0 1:0.99.1 + pa_timeval_load@PULSE_0 1:0.99.1 + pa_timeval_store@PULSE_0 1:0.99.1 + pa_timeval_sub@PULSE_0 1:0.99.1 + pa_usec_to_bytes@PULSE_0 1:0.99.1 + pa_utf8_filter@PULSE_0 1:0.99.1 + pa_utf8_to_locale@PULSE_0 1:0.99.1 + pa_utf8_valid@PULSE_0 1:0.99.1 + pa_volume_snprint@PULSE_0 1:0.99.1 + pa_xfree@PULSE_0 1:0.99.1 + pa_xmalloc0@PULSE_0 1:0.99.1 + pa_xmalloc@PULSE_0 1:0.99.1 + pa_xmemdup@PULSE_0 1:0.99.1 + pa_xrealloc@PULSE_0 1:0.99.1 + pa_xstrdup@PULSE_0 1:0.99.1 + pa_xstrndup@PULSE_0 1:0.99.1 +libpulsecommon-1.0.so libpulse0 #MINVER# + pa_accept_cloexec@Base 1:1.0 + pa_ascii_filter@Base 1:1.0 + pa_ascii_valid@Base 1:1.0 + pa_atod@Base 1:1.0 + pa_atoi@Base 1:1.0 + pa_atol@Base 1:1.0 + pa_atou@Base 1:1.0 + pa_aupdate_free@Base 1:1.0 + pa_aupdate_new@Base 1:1.0 + pa_aupdate_read_begin@Base 1:1.0 + pa_aupdate_read_end@Base 1:1.0 + pa_aupdate_write_begin@Base 1:1.0 + pa_aupdate_write_end@Base 1:1.0 + pa_aupdate_write_swap@Base 1:1.0 + pa_authkey_load@Base 1:1.0 + pa_authkey_load_auto@Base 1:1.0 + pa_authkey_save@Base 1:1.0 + pa_autospawn_lock_acquire@Base 1:1.0 + pa_autospawn_lock_done@Base 1:1.0 + pa_autospawn_lock_init@Base 1:1.0 + pa_autospawn_lock_release@Base 1:1.0 + pa_bitset_equals@Base 1:1.0 + pa_bitset_get@Base 1:1.0 + pa_bitset_set@Base 1:1.0 + pa_bytes_per_second@Base 1:1.0 + pa_bytes_snprint@Base 1:1.0 + pa_bytes_to_usec@Base 1:1.0 + pa_channel_map_can_balance@Base 1:1.0 + pa_channel_map_can_fade@Base 1:1.0 + pa_channel_map_compatible@Base 1:1.0 + pa_channel_map_equal@Base 1:1.0 + pa_channel_map_has_position@Base 1:1.0 + pa_channel_map_init@Base 1:1.0 + pa_channel_map_init_auto@Base 1:1.0 + pa_channel_map_init_extend@Base 1:1.0 + pa_channel_map_init_mono@Base 1:1.0 + pa_channel_map_init_stereo@Base 1:1.0 + pa_channel_map_mask@Base 1:1.0 + pa_channel_map_parse@Base 1:1.0 + pa_channel_map_snprint@Base 1:1.0 + pa_channel_map_superset@Base 1:1.0 + pa_channel_map_to_name@Base 1:1.0 + pa_channel_map_to_pretty_name@Base 1:1.0 + pa_channel_map_valid@Base 1:1.0 + pa_channel_position_from_string@Base 1:1.0 + pa_channel_position_to_pretty_string@Base 1:1.0 + pa_channel_position_to_string@Base 1:1.0 + pa_check_in_group@Base 1:1.0 + pa_check_signal_is_blocked@Base 1:1.0 + pa_client_conf_env@Base 1:1.0 + pa_client_conf_free@Base 1:1.0 + pa_client_conf_from_x11@Base 1:1.0 + pa_client_conf_load@Base 1:1.0 + pa_client_conf_load_cookie@Base 1:1.0 + pa_client_conf_new@Base 1:1.0 + pa_close@Base 1:1.0 + pa_close_all@Base 1:1.0 + pa_close_allv@Base 1:1.0 + pa_close_pipe@Base 1:1.0 + pa_cond_free@Base 1:1.0 + pa_cond_new@Base 1:1.0 + pa_cond_signal@Base 1:1.0 + pa_cond_wait@Base 1:1.0 + pa_config_parse@Base 1:1.0 + pa_config_parse_bool@Base 1:1.0 + pa_config_parse_int@Base 1:1.0 + pa_config_parse_not_bool@Base 1:1.0 + pa_config_parse_size@Base 1:1.0 + pa_config_parse_string@Base 1:1.0 + pa_config_parse_unsigned@Base 1:1.0 + pa_cstrerror@Base 1:1.0 + pa_dbus_add_matches@Base 1:1.0 + pa_dbus_append_basic_array@Base 1:1.0 + pa_dbus_append_basic_array_variant@Base 1:1.0 + pa_dbus_append_basic_array_variant_dict_entry@Base 1:1.0 + pa_dbus_append_basic_variant@Base 1:1.0 + pa_dbus_append_basic_variant_dict_entry@Base 1:1.0 + pa_dbus_append_proplist@Base 1:1.0 + pa_dbus_append_proplist_variant@Base 1:1.0 + pa_dbus_append_proplist_variant_dict_entry@Base 1:1.0 + pa_dbus_free_pending_list@Base 1:1.0 + pa_dbus_get_proplist_arg@Base 1:1.0 + pa_dbus_pending_free@Base 1:1.0 + pa_dbus_pending_new@Base 1:1.0 + pa_dbus_remove_matches@Base 1:1.0 + pa_dbus_send_basic_array_variant_reply@Base 1:1.0 + pa_dbus_send_basic_value_reply@Base 1:1.0 + pa_dbus_send_basic_variant_reply@Base 1:1.0 + pa_dbus_send_empty_reply@Base 1:1.0 + pa_dbus_send_error@Base 1:1.0 + pa_dbus_send_proplist_variant_reply@Base 1:1.0 + pa_dbus_sync_pending_list@Base 1:1.0 + pa_dbus_wrap_connection_free@Base 1:1.0 + pa_dbus_wrap_connection_get@Base 1:1.0 + pa_dbus_wrap_connection_new@Base 1:1.0 + pa_dbus_wrap_connection_new_from_existing@Base 1:1.0 + pa_detect_fork@Base 1:1.0 + pa_disable_sigpipe@Base 1:1.0 + pa_dynarray_append@Base 1:1.0 + pa_dynarray_free@Base 1:1.0 + pa_dynarray_get@Base 1:1.0 + pa_dynarray_new@Base 1:1.0 + pa_dynarray_put@Base 1:1.0 + pa_dynarray_size@Base 1:1.0 + pa_endswith@Base 1:1.0 + pa_escape@Base 1:1.0 + pa_find_config_file@Base 1:1.0 + pa_flist_free@Base 1:1.0 + pa_flist_new@Base 1:1.0 + pa_flist_new_with_name@Base 1:1.0 + pa_flist_pop@Base 1:1.0 + pa_flist_push@Base 1:1.0 + pa_fopen_cloexec@Base 1:1.0 + pa_frame_size@Base 1:1.0 + pa_gcd@Base 1:1.0 + pa_get_binary_name@Base 1:1.0 + pa_get_binary_name_malloc@Base 1:1.0 + pa_get_fqdn@Base 1:1.0 + pa_get_gid_of_group@Base 1:1.0 + pa_get_home_dir@Base 1:1.0 + pa_get_home_dir_malloc@Base 1:1.0 + pa_get_host_name@Base 1:1.0 + pa_get_host_name_malloc@Base 1:1.0 + pa_get_runtime_dir@Base 1:1.0 + pa_get_state_dir@Base 1:1.0 + pa_get_temp_dir@Base 1:1.0 + pa_get_user_name@Base 1:1.0 + pa_get_user_name_malloc@Base 1:1.0 + pa_getcwd@Base 1:1.0 + pa_getgrgid_free@Base 1:1.0 + pa_getgrgid_malloc@Base 1:1.0 + pa_getgrnam_free@Base 1:1.0 + pa_getgrnam_malloc@Base 1:1.0 + pa_getpwnam_free@Base 1:1.0 + pa_getpwnam_malloc@Base 1:1.0 + pa_getpwuid_free@Base 1:1.0 + pa_getpwuid_malloc@Base 1:1.0 + pa_gettimeofday@Base 1:1.0 + pa_hashmap_first@Base 1:1.0 + pa_hashmap_free@Base 1:1.0 + pa_hashmap_get@Base 1:1.0 + pa_hashmap_isempty@Base 1:1.0 + pa_hashmap_iterate@Base 1:1.0 + pa_hashmap_iterate_backwards@Base 1:1.0 + pa_hashmap_last@Base 1:1.0 + pa_hashmap_new@Base 1:1.0 + pa_hashmap_put@Base 1:1.0 + pa_hashmap_remove@Base 1:1.0 + pa_hashmap_size@Base 1:1.0 + pa_hashmap_steal_first@Base 1:1.0 + pa_hexstr@Base 1:1.0 + pa_idxset_copy@Base 1:1.0 + pa_idxset_first@Base 1:1.0 + pa_idxset_free@Base 1:1.0 + pa_idxset_get_by_data@Base 1:1.0 + pa_idxset_get_by_index@Base 1:1.0 + pa_idxset_isempty@Base 1:1.0 + pa_idxset_iterate@Base 1:1.0 + pa_idxset_new@Base 1:1.0 + pa_idxset_next@Base 1:1.0 + pa_idxset_put@Base 1:1.0 + pa_idxset_remove_by_data@Base 1:1.0 + pa_idxset_remove_by_index@Base 1:1.0 + pa_idxset_rrobin@Base 1:1.0 + pa_idxset_size@Base 1:1.0 + pa_idxset_steal_first@Base 1:1.0 + pa_idxset_string_compare_func@Base 1:1.0 + pa_idxset_string_hash_func@Base 1:1.0 + pa_idxset_trivial_compare_func@Base 1:1.0 + pa_idxset_trivial_hash_func@Base 1:1.0 + pa_in_system_mode@Base 1:1.0 + pa_init_i18n@Base 1:1.0 + pa_init_proplist@Base 1:1.0 + pa_iochannel_creds_enable@Base 1:1.0 + pa_iochannel_creds_supported@Base 1:1.0 + pa_iochannel_free@Base 1:1.0 + pa_iochannel_get_mainloop_api@Base 1:1.0 + pa_iochannel_get_recv_fd@Base 1:1.0 + pa_iochannel_get_send_fd@Base 1:1.0 + pa_iochannel_is_hungup@Base 1:1.0 + pa_iochannel_is_readable@Base 1:1.0 + pa_iochannel_is_writable@Base 1:1.0 + pa_iochannel_new@Base 1:1.0 + pa_iochannel_read@Base 1:1.0 + pa_iochannel_read_with_creds@Base 1:1.0 + pa_iochannel_set_callback@Base 1:1.0 + pa_iochannel_set_noclose@Base 1:1.0 + pa_iochannel_socket_is_local@Base 1:1.0 + pa_iochannel_socket_peer_to_string@Base 1:1.0 + pa_iochannel_socket_set_rcvbuf@Base 1:1.0 + pa_iochannel_socket_set_sndbuf@Base 1:1.0 + pa_iochannel_write@Base 1:1.0 + pa_iochannel_write_with_creds@Base 1:1.0 + pa_ioline_close@Base 1:1.0 + pa_ioline_defer_close@Base 1:1.0 + pa_ioline_detach_iochannel@Base 1:1.0 + pa_ioline_is_drained@Base 1:1.0 + pa_ioline_new@Base 1:1.0 + pa_ioline_printf@Base 1:1.0 + pa_ioline_puts@Base 1:1.0 + pa_ioline_ref@Base 1:1.0 + pa_ioline_set_callback@Base 1:1.0 + pa_ioline_set_drain_callback@Base 1:1.0 + pa_ioline_unref@Base 1:1.0 + pa_ip_acl_check@Base 1:1.0 + pa_ip_acl_free@Base 1:1.0 + pa_ip_acl_new@Base 1:1.0 + pa_is_ip_address@Base 1:1.0 + pa_is_path_absolute@Base 1:1.0 + pa_locale_to_utf8@Base 1:1.0 + pa_lock_fd@Base 1:1.0 + pa_lock_lockfile@Base 1:1.0 + pa_log_level@Base 1:1.0 + pa_log_level_meta@Base 1:1.0 + pa_log_levelv@Base 1:1.0 + pa_log_levelv_meta@Base 1:1.0 + pa_log_ratelimit@Base 1:1.0 + pa_log_set_fd@Base 1:1.0 + pa_log_set_flags@Base 1:1.0 + pa_log_set_ident@Base 1:1.0 + pa_log_set_level@Base 1:1.0 + pa_log_set_show_backtrace@Base 1:1.0 + pa_log_set_skip_backtrace@Base 1:1.0 + pa_log_set_target@Base 1:1.0 + pa_loop_read@Base 1:1.0 + pa_loop_write@Base 1:1.0 + pa_machine_id@Base 1:1.0 + pa_make_fd_cloexec@Base 1:1.0 + pa_make_fd_nonblock@Base 1:1.0 + pa_make_path_absolute@Base 1:1.0 + pa_make_realtime@Base 1:1.0 + pa_make_secure_dir@Base 1:1.0 + pa_make_secure_parent_dir@Base 1:1.0 + pa_make_socket_low_delay@Base 1:1.0 + pa_make_tcp_socket_low_delay@Base 1:1.0 + pa_make_udp_socket_low_delay@Base 1:1.0 + pa_match@Base 1:1.0 + pa_maybe_prefix_path@Base 1:1.0 + pa_mcalign_csize@Base 1:1.0 + pa_mcalign_flush@Base 1:1.0 + pa_mcalign_free@Base 1:1.0 + pa_mcalign_new@Base 1:1.0 + pa_mcalign_pop@Base 1:1.0 + pa_mcalign_push@Base 1:1.0 + pa_memblock_acquire@Base 1:1.0 + pa_memblock_get_length@Base 1:1.0 + pa_memblock_get_pool@Base 1:1.0 + pa_memblock_is_read_only@Base 1:1.0 + pa_memblock_is_silence@Base 1:1.0 + pa_memblock_new@Base 1:1.0 + pa_memblock_new_fixed@Base 1:1.0 + pa_memblock_new_pool@Base 1:1.0 + pa_memblock_new_user@Base 1:1.0 + pa_memblock_ref@Base 1:1.0 + pa_memblock_ref_is_one@Base 1:1.0 + pa_memblock_release@Base 1:1.0 + pa_memblock_set_is_silence@Base 1:1.0 + pa_memblock_unref@Base 1:1.0 + pa_memblock_unref_fixed@Base 1:1.0 + pa_memblock_will_need@Base 1:1.0 + pa_memblockq_apply_attr@Base 1:1.0 + pa_memblockq_drop@Base 1:1.0 + pa_memblockq_flush_read@Base 1:1.0 + pa_memblockq_flush_write@Base 1:1.0 + pa_memblockq_free@Base 1:1.0 + pa_memblockq_get_attr@Base 1:1.0 + pa_memblockq_get_base@Base 1:1.0 + pa_memblockq_get_length@Base 1:1.0 + pa_memblockq_get_maxlength@Base 1:1.0 + pa_memblockq_get_maxrewind@Base 1:1.0 + pa_memblockq_get_minreq@Base 1:1.0 + pa_memblockq_get_nblocks@Base 1:1.0 + pa_memblockq_get_prebuf@Base 1:1.0 + pa_memblockq_get_read_index@Base 1:1.0 + pa_memblockq_get_tlength@Base 1:1.0 + pa_memblockq_get_write_index@Base 1:1.0 + pa_memblockq_is_empty@Base 1:1.0 + pa_memblockq_is_readable@Base 1:1.0 + pa_memblockq_missing@Base 1:1.0 + pa_memblockq_new@Base 1:1.0 + pa_memblockq_peek@Base 1:1.0 + pa_memblockq_peek_fixed_size@Base 1:1.0 + pa_memblockq_pop_missing@Base 1:1.0 + pa_memblockq_prebuf_active@Base 1:1.0 + pa_memblockq_prebuf_disable@Base 1:1.0 + pa_memblockq_prebuf_force@Base 1:1.0 + pa_memblockq_push@Base 1:1.0 + pa_memblockq_push_align@Base 1:1.0 + pa_memblockq_rewind@Base 1:1.0 + pa_memblockq_seek@Base 1:1.0 + pa_memblockq_set_maxlength@Base 1:1.0 + pa_memblockq_set_maxrewind@Base 1:1.0 + pa_memblockq_set_minreq@Base 1:1.0 + pa_memblockq_set_prebuf@Base 1:1.0 + pa_memblockq_set_silence@Base 1:1.0 + pa_memblockq_set_tlength@Base 1:1.0 + pa_memblockq_silence@Base 1:1.0 + pa_memblockq_splice@Base 1:1.0 + pa_memblockq_willneed@Base 1:1.0 + pa_memchunk_isset@Base 1:1.0 + pa_memchunk_make_writable@Base 1:1.0 + pa_memchunk_memcpy@Base 1:1.0 + pa_memchunk_reset@Base 1:1.0 + pa_memchunk_will_need@Base 1:1.0 + pa_memexport_free@Base 1:1.0 + pa_memexport_new@Base 1:1.0 + pa_memexport_process_release@Base 1:1.0 + pa_memexport_put@Base 1:1.0 + pa_memimport_free@Base 1:1.0 + pa_memimport_get@Base 1:1.0 + pa_memimport_new@Base 1:1.0 + pa_memimport_process_revoke@Base 1:1.0 + pa_mempool_block_size_max@Base 1:1.0 + pa_mempool_free@Base 1:1.0 + pa_mempool_get_shm_id@Base 1:1.0 + pa_mempool_get_stat@Base 1:1.0 + pa_mempool_is_shared@Base 1:1.0 + pa_mempool_new@Base 1:1.0 + pa_mempool_vacuum@Base 1:1.0 + pa_memtrap_add@Base 1:1.0 + pa_memtrap_install@Base 1:1.0 + pa_memtrap_is_good@Base 1:1.0 + pa_memtrap_remove@Base 1:1.0 + pa_memtrap_update@Base 1:1.0 + pa_msleep@Base 1:1.0 + pa_mutex_free@Base 1:1.0 + pa_mutex_lock@Base 1:1.0 + pa_mutex_new@Base 1:1.0 + pa_mutex_try_lock@Base 1:1.0 + pa_mutex_unlock@Base 1:1.0 + pa_ncpus@Base 1:1.0 + pa_nullify_stdfds@Base 1:1.0 + pa_once_begin@Base 1:1.0 + pa_once_end@Base 1:1.0 + pa_open_cloexec@Base 1:1.0 + pa_open_config_file@Base 1:1.0 + pa_own_uid_in_group@Base 1:1.0 + pa_packet_new@Base 1:1.0 + pa_packet_new_dynamic@Base 1:1.0 + pa_packet_ref@Base 1:1.0 + pa_packet_unref@Base 1:1.0 + pa_parent_dir@Base 1:1.0 + pa_parse_address@Base 1:1.0 + pa_parse_boolean@Base 1:1.0 + pa_parse_sample_format@Base 1:1.0 + pa_parsehex@Base 1:1.0 + pa_path_get_filename@Base 1:1.0 + pa_pdispatch_creds@Base 1:1.0 + pa_pdispatch_is_pending@Base 1:1.0 + pa_pdispatch_new@Base 1:1.0 + pa_pdispatch_ref@Base 1:1.0 + pa_pdispatch_register_reply@Base 1:1.0 + pa_pdispatch_run@Base 1:1.0 + pa_pdispatch_set_drain_callback@Base 1:1.0 + pa_pdispatch_unref@Base 1:1.0 + pa_pdispatch_unregister_reply@Base 1:1.0 + pa_pid_file_check_running@Base 1:1.0 + pa_pid_file_create@Base 1:1.0 + pa_pid_file_kill@Base 1:1.0 + pa_pid_file_remove@Base 1:1.0 + pa_pipe_buf@Base 1:1.0 + pa_pipe_cloexec@Base 1:1.0 + pa_prioq_free@Base 1:1.0 + pa_prioq_isempty@Base 1:1.0 + pa_prioq_new@Base 1:1.0 + pa_prioq_peek@Base 1:1.0 + pa_prioq_pop@Base 1:1.0 + pa_prioq_put@Base 1:1.0 + pa_prioq_remove@Base 1:1.0 + pa_prioq_reshuffle@Base 1:1.0 + pa_prioq_size@Base 1:1.0 + pa_proplist_clear@Base 1:1.0 + pa_proplist_contains@Base 1:1.0 + pa_proplist_copy@Base 1:1.0 + pa_proplist_equal@Base 1:1.0 + pa_proplist_free@Base 1:1.0 + pa_proplist_from_string@Base 1:1.0 + pa_proplist_get@Base 1:1.0 + pa_proplist_gets@Base 1:1.0 + pa_proplist_isempty@Base 1:1.0 + pa_proplist_iterate@Base 1:1.0 + pa_proplist_new@Base 1:1.0 + pa_proplist_set@Base 1:1.0 + pa_proplist_setf@Base 1:1.0 + pa_proplist_setp@Base 1:1.0 + pa_proplist_sets@Base 1:1.0 + pa_proplist_size@Base 1:1.0 + pa_proplist_to_string@Base 1:1.0 + pa_proplist_to_string_sep@Base 1:1.0 + pa_proplist_unset@Base 1:1.0 + pa_proplist_unset_many@Base 1:1.0 + pa_proplist_update@Base 1:1.0 + pa_pstream_enable_shm@Base 1:1.0 + pa_pstream_get_shm@Base 1:1.0 + pa_pstream_is_pending@Base 1:1.0 + pa_pstream_new@Base 1:1.0 + pa_pstream_ref@Base 1:1.0 + pa_pstream_send_error@Base 1:1.0 + pa_pstream_send_memblock@Base 1:1.0 + pa_pstream_send_packet@Base 1:1.0 + pa_pstream_send_release@Base 1:1.0 + pa_pstream_send_revoke@Base 1:1.0 + pa_pstream_send_simple_ack@Base 1:1.0 + pa_pstream_send_tagstruct_with_creds@Base 1:1.0 + pa_pstream_set_die_callback@Base 1:1.0 + pa_pstream_set_drain_callback@Base 1:1.0 + pa_pstream_set_recieve_memblock_callback@Base 1:1.0 + pa_pstream_set_recieve_packet_callback@Base 1:1.0 + pa_pstream_set_release_callback@Base 1:1.0 + pa_pstream_set_revoke_callback@Base 1:1.0 + pa_pstream_unlink@Base 1:1.0 + pa_pstream_unref@Base 1:1.0 + pa_queue_free@Base 1:1.0 + pa_queue_isempty@Base 1:1.0 + pa_queue_new@Base 1:1.0 + pa_queue_pop@Base 1:1.0 + pa_queue_push@Base 1:1.0 + pa_raise_priority@Base 1:1.0 + pa_random@Base 1:1.0 + pa_random_seed@Base 1:1.0 + pa_ratelimit_test@Base 1:1.0 + pa_read@Base 1:1.0 + pa_read_line_from_file@Base 1:1.0 + pa_readlink@Base 1:1.0 + pa_realpath@Base 1:1.0 + pa_reduce@Base 1:1.0 + pa_replace@Base 1:1.0 + pa_reset_personality@Base 1:1.0 + pa_reset_priority@Base 1:1.0 + pa_reset_sigs@Base 1:1.0 + pa_reset_sigsv@Base 1:1.0 + pa_rtclock_age@Base 1:1.0 + pa_rtclock_from_wallclock@Base 1:1.0 + pa_rtclock_get@Base 1:1.0 + pa_rtclock_hrtimer@Base 1:1.0 + pa_rtclock_hrtimer_enable@Base 1:1.0 + pa_rtclock_now@Base 1:1.0 + pa_run_once@Base 1:1.0 + pa_running_in_vm@Base 1:1.0 + pa_runtime_path@Base 1:1.0 + pa_sample_format_is_be@Base 1:1.0 + pa_sample_format_is_le@Base 1:1.0 + pa_sample_format_to_string@Base 1:1.0 + pa_sample_size@Base 1:1.0 + pa_sample_size_of_format@Base 1:1.0 + pa_sample_spec_equal@Base 1:1.0 + pa_sample_spec_init@Base 1:1.0 + pa_sample_spec_snprint@Base 1:1.0 + pa_sample_spec_valid@Base 1:1.0 + pa_semaphore_free@Base 1:1.0 + pa_semaphore_new@Base 1:1.0 + pa_semaphore_post@Base 1:1.0 + pa_semaphore_wait@Base 1:1.0 + pa_session_id@Base 1:1.0 + pa_set_env@Base 1:1.0 + pa_set_env_and_record@Base 1:1.0 + pa_shm_attach_ro@Base 1:1.0 + pa_shm_cleanup@Base 1:1.0 + pa_shm_create_rw@Base 1:1.0 + pa_shm_free@Base 1:1.0 + pa_shm_punch@Base 1:1.0 + pa_sig2str@Base 1:1.0 + pa_smoother_fix_now@Base 1:1.0 + pa_smoother_free@Base 1:1.0 + pa_smoother_get@Base 1:1.0 + pa_smoother_new@Base 1:1.0 + pa_smoother_pause@Base 1:1.0 + pa_smoother_put@Base 1:1.0 + pa_smoother_reset@Base 1:1.0 + pa_smoother_resume@Base 1:1.0 + pa_smoother_set_time_offset@Base 1:1.0 + pa_smoother_translate@Base 1:1.0 + pa_sndfile_dump_formats@Base 1:1.0 + pa_sndfile_format_from_string@Base 1:1.0 + pa_sndfile_init_proplist@Base 1:1.0 + pa_sndfile_read_channel_map@Base 1:1.0 + pa_sndfile_read_sample_spec@Base 1:1.0 + pa_sndfile_readf_function@Base 1:1.0 + pa_sndfile_write_channel_map@Base 1:1.0 + pa_sndfile_write_sample_spec@Base 1:1.0 + pa_sndfile_writef_function@Base 1:1.0 + pa_snprintf@Base 1:1.0 + pa_socket_address_is_local@Base 1:1.0 + pa_socket_client_is_local@Base 1:1.0 + pa_socket_client_new_ipv4@Base 1:1.0 + pa_socket_client_new_ipv6@Base 1:1.0 + pa_socket_client_new_sockaddr@Base 1:1.0 + pa_socket_client_new_string@Base 1:1.0 + pa_socket_client_new_unix@Base 1:1.0 + pa_socket_client_ref@Base 1:1.0 + pa_socket_client_set_callback@Base 1:1.0 + pa_socket_client_unref@Base 1:1.0 + pa_socket_cloexec@Base 1:1.0 + pa_socket_is_local@Base 1:1.0 + pa_socket_peer_to_string@Base 1:1.0 + pa_socket_server_get_address@Base 1:1.0 + pa_socket_server_new@Base 1:1.0 + pa_socket_server_new_ipv4@Base 1:1.0 + pa_socket_server_new_ipv4_any@Base 1:1.0 + pa_socket_server_new_ipv4_loopback@Base 1:1.0 + pa_socket_server_new_ipv4_string@Base 1:1.0 + pa_socket_server_new_ipv6@Base 1:1.0 + pa_socket_server_new_ipv6_any@Base 1:1.0 + pa_socket_server_new_ipv6_loopback@Base 1:1.0 + pa_socket_server_new_ipv6_string@Base 1:1.0 + pa_socket_server_new_unix@Base 1:1.0 + pa_socket_server_ref@Base 1:1.0 + pa_socket_server_set_callback@Base 1:1.0 + pa_socket_server_unref@Base 1:1.0 + pa_socket_set_rcvbuf@Base 1:1.0 + pa_socket_set_sndbuf@Base 1:1.0 + pa_split@Base 1:1.0 + pa_split_spaces@Base 1:1.0 + pa_split_spaces_strv@Base 1:1.0 + pa_sprintf_malloc@Base 1:1.0 + pa_startswith@Base 1:1.0 + pa_state_path@Base 1:1.0 + pa_static_mutex_get@Base 1:1.0 + pa_static_semaphore_get@Base 1:1.0 + pa_strbuf_free@Base 1:1.0 + pa_strbuf_isempty@Base 1:1.0 + pa_strbuf_new@Base 1:1.0 + pa_strbuf_printf@Base 1:1.0 + pa_strbuf_putc@Base 1:1.0 + pa_strbuf_puts@Base 1:1.0 + pa_strbuf_putsn@Base 1:1.0 + pa_strbuf_tostring@Base 1:1.0 + pa_strbuf_tostring_free@Base 1:1.0 + pa_strip@Base 1:1.0 + pa_strip_nl@Base 1:1.0 + pa_strlcpy@Base 1:1.0 + pa_strlist_data@Base 1:1.0 + pa_strlist_free@Base 1:1.0 + pa_strlist_next@Base 1:1.0 + pa_strlist_parse@Base 1:1.0 + pa_strlist_pop@Base 1:1.0 + pa_strlist_prepend@Base 1:1.0 + pa_strlist_remove@Base 1:1.0 + pa_strlist_reverse@Base 1:1.0 + pa_strlist_tostring@Base 1:1.0 + pa_tagstruct_data@Base 1:1.0 + pa_tagstruct_eof@Base 1:1.0 + pa_tagstruct_free@Base 1:1.0 + pa_tagstruct_free_data@Base 1:1.0 + pa_tagstruct_get@Base 1:1.0 + pa_tagstruct_get_arbitrary@Base 1:1.0 + pa_tagstruct_get_boolean@Base 1:1.0 + pa_tagstruct_get_channel_map@Base 1:1.0 + pa_tagstruct_get_cvolume@Base 1:1.0 + pa_tagstruct_get_format_info@Base 1:1.0 + pa_tagstruct_get_proplist@Base 1:1.0 + pa_tagstruct_get_sample_spec@Base 1:1.0 + pa_tagstruct_get_timeval@Base 1:1.0 + pa_tagstruct_get_usec@Base 1:1.0 + pa_tagstruct_get_volume@Base 1:1.0 + pa_tagstruct_gets64@Base 1:1.0 + pa_tagstruct_gets@Base 1:1.0 + pa_tagstruct_getu32@Base 1:1.0 + pa_tagstruct_getu64@Base 1:1.0 + pa_tagstruct_getu8@Base 1:1.0 + pa_tagstruct_new@Base 1:1.0 + pa_tagstruct_put@Base 1:1.0 + pa_tagstruct_put_arbitrary@Base 1:1.0 + pa_tagstruct_put_boolean@Base 1:1.0 + pa_tagstruct_put_channel_map@Base 1:1.0 + pa_tagstruct_put_cvolume@Base 1:1.0 + pa_tagstruct_put_format_info@Base 1:1.0 + pa_tagstruct_put_proplist@Base 1:1.0 + pa_tagstruct_put_sample_spec@Base 1:1.0 + pa_tagstruct_put_timeval@Base 1:1.0 + pa_tagstruct_put_usec@Base 1:1.0 + pa_tagstruct_put_volume@Base 1:1.0 + pa_tagstruct_puts64@Base 1:1.0 + pa_tagstruct_puts@Base 1:1.0 + pa_tagstruct_putu32@Base 1:1.0 + pa_tagstruct_putu64@Base 1:1.0 + pa_tagstruct_putu8@Base 1:1.0 + pa_thread_free@Base 1:1.0 + pa_thread_get_data@Base 1:1.0 + pa_thread_get_name@Base 1:1.0 + pa_thread_is_running@Base 1:1.0 + pa_thread_join@Base 1:1.0 + pa_thread_new@Base 1:1.0 + pa_thread_self@Base 1:1.0 + pa_thread_set_data@Base 1:1.0 + pa_thread_set_name@Base 1:1.0 + pa_thread_yield@Base 1:1.0 + pa_timespec_load@Base 1:1.0 + pa_timespec_store@Base 1:1.0 + pa_timeval_add@Base 1:1.0 + pa_timeval_age@Base 1:1.0 + pa_timeval_cmp@Base 1:1.0 + pa_timeval_diff@Base 1:1.0 + pa_timeval_load@Base 1:1.0 + pa_timeval_rtstore@Base 1:1.0 + pa_timeval_store@Base 1:1.0 + pa_timeval_sub@Base 1:1.0 + pa_tls_free@Base 1:1.0 + pa_tls_get@Base 1:1.0 + pa_tls_new@Base 1:1.0 + pa_tls_set@Base 1:1.0 + pa_tokenizer_free@Base 1:1.0 + pa_tokenizer_get@Base 1:1.0 + pa_tokenizer_new@Base 1:1.0 + pa_truncate_utf8@Base 1:1.0 + pa_uid_in_group@Base 1:1.0 + pa_uname_string@Base 1:1.0 + pa_unblock_sigs@Base 1:1.0 + pa_unblock_sigsv@Base 1:1.0 + pa_unescape@Base 1:1.0 + pa_unix_socket_is_stale@Base 1:1.0 + pa_unix_socket_remove_stale@Base 1:1.0 + pa_unlock_lockfile@Base 1:1.0 + pa_unset_env_recorded@Base 1:1.0 + pa_usec_to_bytes@Base 1:1.0 + pa_utf8_filter@Base 1:1.0 + pa_utf8_to_locale@Base 1:1.0 + pa_utf8_valid@Base 1:1.0 + pa_vsnprintf@Base 1:1.0 + pa_vsprintf_malloc@Base 1:1.0 + pa_will_need@Base 1:1.0 + pa_write@Base 1:1.0 + pa_x11_del_prop@Base 1:1.0 + pa_x11_get_prop@Base 1:1.0 + pa_x11_set_prop@Base 1:1.0 + pa_xfree@Base 1:1.0 + pa_xfreev@Base 1:1.0 + pa_xmalloc0@Base 1:1.0 + pa_xmalloc@Base 1:1.0 + pa_xmemdup@Base 1:1.0 + pa_xrealloc@Base 1:1.0 + pa_xstrdup@Base 1:1.0 + pa_xstrndup@Base 1:1.0 + pretty_table@Base 1:1.0 + rtkit_make_high_priority@Base 1:1.0 + rtkit_make_realtime@Base 1:1.0 + table@Base 1:1.0 --- pulseaudio-1.1.orig/debian/pulseaudio-utils.install +++ pulseaudio-1.1/debian/pulseaudio-utils.install @@ -0,0 +1,10 @@ +usr/bin/pacat +usr/bin/pacmd +usr/bin/pactl +usr/bin/paplay +usr/bin/pamon +usr/bin/parec +usr/bin/parecord +usr/bin/padsp +usr/bin/pax11publish +usr/bin/pasuspender --- pulseaudio-1.1.orig/debian/shlibs.local +++ pulseaudio-1.1/debian/shlibs.local @@ -0,0 +1 @@ +libpulsecore 0 pulseaudio (= ${binary:Version}) --- pulseaudio-1.1.orig/debian/apport-hook.py +++ pulseaudio-1.1/debian/apport-hook.py @@ -0,0 +1,15 @@ +'''apport package hook for pulseaudio + +(c) 2009 Canonical Ltd. +Author: +Matt Zimmerman + +''' + +from apport.hookutils import * +import re + +def add_info(report): + attach_alsa(report) + recent_syslog(re.compile(r'pulseaudio\[')) + attach_conffiles(report, 'pulseaudio') --- pulseaudio-1.1.orig/debian/pulse-alsa.conf +++ pulseaudio-1.1/debian/pulse-alsa.conf @@ -0,0 +1,13 @@ +# Default to PulseAudio + +pcm.!default { + type pulse + hint { + show on + description "Playback/recording through the PulseAudio sound server" + } +} + +ctl.!default { + type pulse +} --- pulseaudio-1.1.orig/debian/pulse.conf +++ pulseaudio-1.1/debian/pulse.conf @@ -0,0 +1,16 @@ +# PulseAudio alsa plugin configuration file to set the pulseaudio plugin as +# default output for applications using alsa when pulseaudio is running. +hook_func.pulse_load_if_running { + lib "libasound_module_conf_pulse.so" + func "conf_pulse_hook_load_if_running" +} + +@hooks [ + { + func pulse_load_if_running + files [ + "/usr/share/alsa/pulse-alsa.conf" + ] + errors false + } +] --- pulseaudio-1.1.orig/debian/changelog +++ pulseaudio-1.1/debian/changelog @@ -0,0 +1,3555 @@ +pulseaudio (1:1.1-0ubuntu13) precise; urgency=low + + * 0020-daemon-Initialize-dbus-to-use-thread-safe-mode-by-de.patch: + Make sure dbus is thread safe to avoid crashes in pa_make_realtime + (LP: #937933) + * 0111-protocol-native-Protect-against-clients-trying-to-se.patch: + Don't crash if clients try to set a NULL port (LP: #951273) + * 0021-Fix-input-device-for-M-audio-fasttrack-pro.patch: + Probe two different input devices (LP: #569932) + * 0112-module-loopback-Never-call-adjust_rates-after-teardo.patch: + Don't crash on shutdown in module-loopback (LP: #946400) + * 0619-module-switch-on-port-available-Do-not-switch-profil.patch: + Prevent switching to HDMI profiles from analog profiles, as a result + of discussion on the pulseaudio-discuss and ubuntu-audio-dev mailinglist. + + -- David Henningsson Wed, 21 Mar 2012 10:47:33 +0100 + +pulseaudio (1:1.1-0ubuntu12) precise; urgency=low + + [ Luke Yelavich ] + * debian/control: Demote pulseaudio-esound-compat to suggests (LP: #930703) + + [ David Henningsson ] + * 0110-flist-Avoid-the-ABA-problem.patch: + Fix occasional crashes in pa_memblock_free, pa_memblock_ref and drop_block + (LP: #924416) + + -- David Henningsson Fri, 09 Mar 2012 00:08:42 +0100 + +pulseaudio (1:1.1-0ubuntu11) precise; urgency=low + + * Cherry-pick a few crash-related patches from upstream git + * 0616-alsa-mixer-Make-speaker-get-available-no-when-headph.patch: + Don't remove paths if the state(un)plugged of the jack differs (LP: 933825) + + -- David Henningsson Wed, 29 Feb 2012 11:03:32 +0100 + +pulseaudio (1:1.1-0ubuntu10) precise; urgency=low + + * debian/pulse-alsa.conf: Update syntax, as this file was throwing + errors when apps used the alsa pulse plugin. + + -- Luke Yelavich Thu, 23 Feb 2012 14:58:36 +1100 + +pulseaudio (1:1.1-0ubuntu9) precise; urgency=low + + * debian/pulseaudio.init: Don't tell the user pulseaudio daemon isn't + starting when in per-user mode. This is the most common case in Ubuntu + and causing needless distracting text on the screen. (LP: #656426) + + -- Mario Limonciello Fri, 17 Feb 2012 16:32:52 -0600 + +pulseaudio (1:1.1-0ubuntu8) precise; urgency=low + + [ David Henningsson ] + * Make sure we switch away from unavailable ports at + startup (LP: #928914) + * 0020-Fix-Darth-Vader-panning-bug.patch: + Fix distorted sound when panned hard left (or right). (LP: #928757) + * 0618-alsa-mixer-Don-t-use-dangling-pointers-as-port-hashm.patch: + Fix inability to set port when options were used (LP: #932804) + * Minimize margins for deferred volumes, as a workaround for volume + changes being dropped on port change. + * 0610-Jack-detection-kcontrol-implementation.patch: + Fix a bug in the headphone path + + -- Luke Yelavich Fri, 17 Feb 2012 07:28:23 +1100 + +pulseaudio (1:1.1-0ubuntu7) precise; urgency=low + + * Move the pulse.conf ALSA config file to the correct location, alsa.conf.d + not conf.d, thanks to Pete Graner for teh heads up. + + -- Luke Yelavich Thu, 09 Feb 2012 08:22:04 +1100 + +pulseaudio (1:1.1-0ubuntu6) precise; urgency=low + + [ David Henningsson ] + * 0103-alsa-mixer-Allow-speaker-port-to-control-Front-Speak.patch: + - Control "Front Speaker" and a few more. From upstream git. (LP: #551441) + * 0105-loopback-Fix-crashes.patch: + - Fix some crashes on shutting down the loopback module, from upstream git. + * 0104-alsa-Improve-well-known-descriptions-for-ports.patch: + - Replace with upstream version. + * 0018-module-tunnel-source-fixup-create_record_stream.patch: + - Fix protocol error in module-tunnel-source (LP: #923661) + * Fixup HDMI patch to make sure it does not affect M-audio fasttrack Pro + (LP: #926911) + * Add two more jack detection patches to make it work better with the + upcoming UI changes + + [ Martin-Éric Racine ] + * Use --disallow-exit when running in system mode, as recommended + by PulseAudio log file (LP: #922848) + + [ Luke Yelavich ] + * Move the main pulse ALSA configuration file, pulse.conf to + /usr/share/alsa/conf.d, available in ALSA 1.0.25. + * Disable the dbus-protocol by default, as there have been recent reports + of crashes and race conditions, and upstream no longer finds the code + trustworthy. + + -- Luke Yelavich Wed, 08 Feb 2012 15:58:41 +1100 + +pulseaudio (1:1.1-0ubuntu5) precise; urgency=low + + * Redo jack detection patches, so that they use the new jack detection + interface and the upstream code whenever possible. + * New patch better-well-known-descriptions.patch: + - Simplify port names. This patch is to be committed upstream shortly + * New patches from upstream git: + - 0101-alsa-Ignore-the-virtual-thinkpad-acpi-card.patch: + Ignore the dummy thinkpad-acpi soundcard (as it cannot playback or + record sound anyway) + - 0102-alsa-mixer-When-selecting-an-input-turn-off-boosts-o.patch: + alsa-mixer: When selecting an input, turn off boosts of + other inputs + + -- David Henningsson Fri, 27 Jan 2012 13:56:46 +0100 + +pulseaudio (1:1.1-0ubuntu4) precise; urgency=low + + [ Daniel T Chen ] + * Don't load module-raop-discover by default. (LP: #782860) + + [ Gabor Kelemen ] + * Run dh_translations to generate translation template, add it as build-dep. + (LP: #876866) + + -- Luke Yelavich Wed, 14 Dec 2011 10:50:16 +1100 + +pulseaudio (1:1.1-0ubuntu3) precise; urgency=low + + * Allow pulseaudio-module-bluetooth to build on armhf. + + -- Adam Conrad Mon, 05 Dec 2011 12:57:06 -0700 + +pulseaudio (1:1.1-0ubuntu2) precise; urgency=low + + * No-change rebuild to drop spurious libsfgcc1 dependency on armhf. + + -- Adam Conrad Fri, 02 Dec 2011 17:31:22 -0700 + +pulseaudio (1:1.1-0ubuntu1) precise; urgency=low + + * New upstream release + * debian/watch: Update to new location + * Dropped patches, as these were from upstream: + - 0100-extended-Fix-doxygen-comment-style-typos.patch + - 0101-sink-source-Avoid-unnecessary-call-to-pa_rtclock_now.patch + - 0102-Always-return-a-three-part-version-number-in-API-cal.patch + - 0103-module-jackdbus-detect-Avoid-double-free-of-modargs.patch + - 0104-source-output-Do-not-use-unset-channel-map-in-pa_sou.patch + - 0105-Fix-deferred-volume-not-being-applied-if-sink-is-clo.patch + - 0106-sink-Move-updating-the-requested-latency-after-the-r.patch + - 0107-n ull-sink-Set-latency-range-at-the-time-of-initializ.patch + - 0108-Make-pulse-build-with-clang-again.patch + - 0109-alsa-Give-compressed-formats-preference-over-PCM.patch + - 0110-alsa-Better-error-handling-in-mixer-rtpoll-callback.patch + - 0111-echo-cancel-Fail-if-loaded-between-a-sink-and-its-mo.patch + - 0112-doc-Add-some-more-doxygen-tags-to-existing-comments.patch + - 0113-alsa-Make-mixer-error-handling-more-robust-still.patch + - 0114-echo-cancel-Don-t-crash-if-adjust_time-0.patch + - 0115-echo-cancel-Close-debug-files-on-module-unload.patch + - 0116-tests-Fix-calculation-of-memblock-size-in-resampler-.patch + - 0117-filter-apply-Move-sink-source-unlink-callbacks-befor.patch + - 0118-build-sys-Drop-libsamplerate-from-pulsecommon-deps.patch + - 0119-build-sys-Provide-a-simple-CMake-Config-setup-simila.patch + * Put libpulsedsp.so into its own package, so it can be built for + multi-arch + * debian/rules: Update for 1.1 + * Update shlib files + + -- Luke Yelavich Thu, 27 Oct 2011 12:36:17 +1100 + +pulseaudio (1:1.0-0ubuntu4) precise; urgency=low + + [ David Henningsson ] + * Added patches: + 0103-module-jackdbus-detect-Avoid-double-free-of-modargs.patch: + (LP: #867444) + 0104-source-output-Do-not-use-unset-channel-map-in-pa_sou.patch: + (LP: #864071) + 0105-Fix-deferred-volume-not-being-applied-if-sink-is-clo.patch, + 0017-Hack-around-a-bug-in-the-core-causing-volumes-not-to.patch: + These two patches affect users not having their volume correctly + set on port change (LP: #877954) + + [ Luke Yelavich ] + * debian/control: Update Vcs-Bzr field + * 0102-Always-return-a-three-part-version-number-in-API-cal.patch: Refresh + the patch from upstrea git, to refer to the correct commit hash, and + update the description + * Pull some bug fixes from the stable-1.x upstream git branch: + - 411af6b (sink: Move updating the requested latency after the rewind + request when finishing a stream move.) + - 87f70c6 (null-sink: Set latency range at the time of initialization of + module.) + - d71a291 (Make pulse build with clang again) + - 4e5943b (alsa: Give compressed formats preference over PCM) + - 867170a (alsa: Better error handling in mixer rtpoll callback) + - c055c55 (echo-cancel: Fail if loaded between a sink and its monitor) + - 8754e0c (doc: Add some more doxygen tags to existing comments) + - 2c30c07 (alsa: Make mixer error handling more robust still) + - 8a5e6e8 (echo-cancel: Don't crash if adjust_time = 0) + - 7b13a79 (echo-cancel: Close debug files on module unload) + - 6bf0489 (tests: Fix calculation of memblock size in resampler-test) + - 93f55a4 (filter-apply: Move sink/source unlink callbacks before m-s-r) + - b1dabfb (build-sys: Drop libsamplerate from pulsecommon deps) + - 743a4d0 (build-sys: Provide a simple CMake Config setup (similar to + pkgconfig)) + * Add liborc-0.4-dev as a build dependency to add orc support + * debian/libpulse-dev.install: Ship cmake files + + -- Luke Yelavich Thu, 20 Oct 2011 11:36:43 +1100 + +pulseaudio (1:1.0-0ubuntu3) oneiric; urgency=low + + * debian/patches/0102-Always-return-a-three-part-version-number-in-API + -cal.patch: Update to fix skype regression as well (LP: #865820) + + -- David Henningsson Thu, 06 Oct 2011 10:39:49 +0200 + +pulseaudio (1:1.0-0ubuntu2) oneiric; urgency=low + + [ Matthias Klose ] + * Drop build dependency on libatomic-ops-dev. Not needed on !ia64. + + [ Scott Kitterman ] + * Add debian/patches/0102-Always-return-a-three-part-version-number-in-API + -cal.patch to fix regression in pulseaudio version detection by + applications depending on the three part version number previously used by + pulseaudio (including phonon) + - Cherrypicked from upstream + + -- Scott Kitterman Tue, 04 Oct 2011 22:06:39 -0500 + +pulseaudio (1:1.0-0ubuntu1) oneiric; urgency=low + + [ David Henningsson ] + * Fix "Parse failure" error with remote sources/sinks, + thanks to Martin-Eric Racine for reporting/testing! (LP: #852902) + * Fix crash when dbus module does not load (LP: #855729) + * Add more bug fixes from upstream git + + [ Daniel T Chen ] + * debian/copyright: Update all shipped sources + * Various xcb_*() bugs already fixed in Sep 2010 (LP: #642030, + LP: #646583, LP: #646616, LP: #648104) + * Passthrough is supported in 1.0 (LP: #448024) + * PulseAudio + alsa-plugins route through PulseAudio by default + (LP: #378382) + + [ Luke Yelavich ] + * New upstream bugfix release + - vala: Add has_type_id=false to all enums, structs and classes + - module-switch-on-connect: Don't switch unlinked sink input and source + outputs + - alsa-mixer: Set "Front" control to 0 dB on headphone path + - module-equalizer-sink: Use %z for printf of size_t variables + - module-equalizer-sink: Use = in initialising variables + - bluetooth/sbc: Use __asm__ keyword + - module-equalizer-sink: Use correct limit in loop + - Squash the last gcc warnings + - Make gcc --std=c99 happy + - device-restore: Simplify the migration of data to per-port keys. + - stream-restore: Add in some variable sets that were missing from 9ffa93. + - stream-restore: Add proper data validity checks to the legacy database + entry read. + - formats: The format code should be in libpulse, not libpulsecommon + - formats: Export more functions needed for a clean build. + - device-restore: Fix use-after-free error. + - raop: Use the port supplied by avahi when connecting to RAOP devices. + - loopback: New modargs: sink_input_properties and + source_output_properties. + - bluetooth: Bump DBus version to 1.3.0 and drop conditional code. + - alsa: Tidy up argument descriptions + - module-suspend-on-idle: Move vacuum code to core + - alsa-mixer: Add support for the Microsoft Kinect Sensor device + - modargs: Ensure modargs can be accessed in their raw form. + - raop: Properly deal with the name coming from the device. + - build-sys: Oops forgot to add the Kinect profile to the build system. + - volume: Rename 'sync volume' to 'deferred volume'. + - raop: Don't crash if fd is not open when trying to close it + - doc: Update README with fresh links. + - doc: Add info about running pulseaudio from the build dir + - stream: Relax assert for extended API + - def: Hide server-side sink/source flags + - volume: Handle varying channel count for shared volumes + - virtual: Make volume sharing on by default + - equalizer: Use volume sharing by default + - echo-cancel: Use volume sharing by default + - sink,source: Avoid crash by not updating volume on shutdown + - conf: Make sure module-dbus-protocol is loaded after + module-default-device-restore + - build-sys: bump soname + - sink,source: Handle missing in the shared volume case + - dbus: Don't crash if the module does not load + - Fix crash in threaded message queues + - build-sys: Switch to the tar-ustar format (as per a lot of GNOME stuff + for 3.2) and distribute .xz files. + - build-sys: bump soname + * Dropped patches, all applied upstream: + - 0017-Avoid-crash-by-not-updating-volume-on-shutdown.patch + - 0018-RAOP-Don-t-crash-if-fd-is-not-open-when-trying-to-cl.patch + - 0019-Make-sure-module-dbus-protocol-is-loaded-after-modul.patch + - 0100-vala-Add-has_type_id-false-to-all-enums-structs-and-.patch + - 0101-module-switch-on-connect-Don-t-switch-unlinked-sink-.patch + - 0102-alsa-mixer-Set-Front-control-to-0-dB-on-headphone-pa.patch + - 0103-module-equalizer-sink-Use-z-for-printf-of-size_t-var.patch + - 0104-module-equalizer-sink-Use-in-initialising-variables.patch + - 0105-bluetooth-sbc-Use-__asm__-keyword.patch + - 0106-module-equalizer-sink-Use-correct-limit-in-loop.patch + - 0107-Squash-the-last-gcc-warnings.patch + - 0108-Make-gcc-std-c99-happy.patch + - 0109-device-restore-Simplify-the-migration-of-data-to-per.patch + - 0110-stream-restore-Add-in-some-variable-sets-that-were-m.patch + - 0111-stream-restore-Add-proper-data-validity-checks-to-th.patch + * Pull some post-1.0 fixes from upstream git master + - 6878140 (extended: Fix doxygen comment style typos) + - 6a9272f (sink,source: Avoid unnecessary call to pa_rtclock_now()) + * debian/rules: Modules are now in a 1.0 directory + * Update symbols + + -- Luke Yelavich Thu, 29 Sep 2011 10:01:56 +1000 + +pulseaudio (1:0.99.3-0ubuntu5) oneiric; urgency=low + + [ David Henningsson ] + * 0017-Avoid-crash-by-not-updating-volume-on-shutdown.patch: + Fix typo in patch + + [ Luke Yelavich ] + * Patch from David Henningssen to make sure module-dbus-protocol is loaded + after module-device-restore (LP: #843780) + + -- Luke Yelavich Thu, 15 Sep 2011 09:59:20 +1000 + +pulseaudio (1:0.99.3-0ubuntu4) oneiric; urgency=low + + * Fix crash in jack detection patches (LP: #845468) + * Fix crash when reading volume when sink/source is unlinked (LP: #841968) + * Fix crash in RAOP (LP: #845286) + + -- David Henningsson Mon, 12 Sep 2011 10:29:00 +0200 + +pulseaudio (1:0.99.3-0ubuntu3) oneiric; urgency=low + + * Jack detection support, second version, now with HDMI support + + -- David Henningsson Mon, 05 Sep 2011 16:41:12 +0200 + +pulseaudio (1:0.99.3-0ubuntu2) oneiric; urgency=low + + * Dropped patches (applied upstream): + - 0004-mute-iec958-optical-raw-for-audigyX.patch + - 0011-lp451635-handle-dove-x0-line-hp-swap.patch + - 0012-JACK-Load-module-jackdbus-detect-in-default.pa.patch + + -- David Henningsson Mon, 05 Sep 2011 11:55:59 +0200 + +pulseaudio (1:0.99.3-0ubuntu1) oneiric; urgency=low + + [ David Henningsson ] + * 0018-alsa-mixer-Set-Front-control-to-0-dB-on-headphone-pa.patch: + Set Front to 0 dB for Headphones (LP: #836921) + + [ Luke Yelavich ] + * New upstream bugfix release + - source: Remove the PA_SOURCE_PASSTHROUGH flag + - alsa: Don't always suspend/unsuspend on sink-input removal + - formats: Use correct API to check for passthrough streams + - alsa: Open iec958 device with NONAUDIO bit set in passthrough mode + - formats: Fix bad passsthrough check + - alsa: Fix bad function name + - daemon: Fix compiler warning about missing function prototype + - passthrough: We must not plug in a resampler on stream move + - sink-input: Ensure no volumes are applied for passthrough streams + - source-output: Ensure no volumes are applied for passthrough streams + - Revert "device-restore: Make bools not be bit fields" + - sample-util: Fix off-by-one in error check + - sink: Add PA_SINK_SET_FORMATS macro + - build-sys: Fix some LDFLAGS vs. LDADD usage + - echo-cancel: Add multiple include protection for header + - echo-cancel: Use pa_streq instead of strcmp + - echo-cancel: Move speex preprocessing out of the main module + - passthrough: Fix what volume we set sinks/sources to + - passthrough: Fix setting volume to unamplified again + - echo-cancel: Make save_aec modarg a bool instead of an int + - echo-cancel: Don't allow streams to attach while unloading + - echo-cancel: Get rid of annoying compiler warnings + - equalizer: Comment out unused function + - def: Add a new enum to allow differntiation between sinks and sources. + - dbus: Use pa_device_type_t rather than an internal equivalent + - device-restore: Change the API to include type information (sink + vs. source) + - device-restore: Split device restore database into two parts. + - device-restore: Restore volumes on port change. + - build-sys: bump soname + - alsa-mixer: Mute IEC958 optical raw for several Audigy models + - alsa-mixer: Add "Line HP Swap" element + - JACK: Load module-jackdbus-detect in default.pa + - Remove offensive part of error message + - switch-on-connect: Don't switch to a monitor source + - Fix spelling sucess -> success + - Set better priorities on input paths + - introspect: fix typo in default sink/source docs + - pacat: make pacat respond to cork/uncork events + - Spelling fixes in public headers + - More spelling fixes + - gitignore: Add Orc autogenerated files + - echo-cancel: Use stream index in debug message + - Remove extra ; s where they are not allowed in strict C99 + - sndfile-util: Check return value of sf_command for errors + * Pull some further fixes from upstream git master: + - fb107fc (vala: Add has_type_id=false to all enums, structs and classes) + - c7bba24 (module-switch-on-connect: Don't switch unlinked sink input and + source outputs) + - 9636991 (alsa-mixer: Set "Front" control to 0 dB on headphone path) + - fc3ddfb (module-equalizer-sink: Use %z for printf of size_t variables) + - 918f168 (module-equalizer-sink: Use = in initialising variables) + - 3d04a05 (bluetooth/sbc: Use __asm__ keyword) + - 647048e (module-equalizer-sink: Use correct limit in loop) + - dfd706d (Squash the last gcc warnings) + - 9133c6c (Make gcc --std=c99 happy) + - 47c9d8c (device-restore: Simplify the migration of data to per-port keys.) + - e7b65d3 (stream-restore: Add in some variable sets that were missing + from 9ffa93.) + - 2b96fdf (stream-restore: Add proper data validity checks to the legacy + database entry read.) + * Dropped patches, applied upstream: + - 0017-Make-dbus-error-more-polite.patch + - 0018-alsa-mixer-Set-Front-control-to-0-dB-on-headphone-pa.patch + - 0400-introspect-fix-typo-in-default-sink-source-docs.patch + - 0401-source-Remove-the-PA_SOURCE_PASSTHROUGH-flag.patch + - 0402-alsa-Don-t-always-suspend-unsuspend-on-sink-input-re.patch + - 0403-formats-Use-correct-API-to-check-for-passthrough-str.patch + * 0604-ALSA-part-of-jack-detection-and-a-small-policy-modul.patch: Refreshed + * Update symbols files + + -- Luke Yelavich Mon, 05 Sep 2011 14:37:01 +1000 + +pulseaudio (1:0.99.2-0ubuntu2) oneiric; urgency=low + + * Build-depend on libxcb1-dev (>= 1.6) rather than libxcb-atom1-dev, in + line with the packaging in Debian experimental. + * Build-depend on libtdb-dev rather than tdb-dev. + + -- Colin Watson Thu, 18 Aug 2011 16:10:53 +0100 + +pulseaudio (1:0.99.2-0ubuntu1) oneiric; urgency=low + + * New upstream bugfix release + * 0005-dont-load-cork-music-on-phone.patch: Refreshed + * Dropped patches, applied upstream + - 0400-Fix-crash-in-path-subset-elimination.patch + - 0402-source-output-Fix-resampling.patch + - 0403-stream-restore-Save-restore-source-output-volume-mut.patch + * Pull some post 0.99.2 fixes from upstream git master: + - 7ed177d (introspect: fix typo in default sink/source docs) + - 2677911 (source: Remove the PA_SOURCE_PASSTHROUGH flag) + - dde09c7 (alsa: Don't always suspend/unsuspend on sink-input removal) + - adbdb62 (formats: Use correct API to check for passthrough streams) + + -- Luke Yelavich Thu, 18 Aug 2011 09:17:09 +1000 + +pulseaudio (1:0.99.1-0ubuntu3) oneiric; urgency=low + + * debian/libpulse-glib-mainloop0.symbols: Fix a typo in the package name + which was made at the time of symbol generation + + -- Luke Yelavich Tue, 16 Aug 2011 15:20:47 +1000 + +pulseaudio (1:0.99.1-0ubuntu2) oneiric; urgency=low + + * Build for multiarch: + - libpulse{,-mainloop-glib}0{,-dbg} and libpulse-dev are Multi-Arch: same. + - pulseaudio itself should be Multi-Arch: foreign, since it's a daemon. + - drop dh-buildinfo build-dependency, incompatible with multiarch and not + relevant in Ubuntu where we have build logs for all builds. + - LP: #825342. + + -- Steve Langasek Sat, 13 Aug 2011 02:22:42 +0000 + +pulseaudio (1:0.99.1-0ubuntu1) oneiric; urgency=low + + [ Daniel T Chen ] + * 0017-Make-dbus-error-more-polite.patch: Remove language that doesn't + add anything to the error message (LP: #444400). + + [ David Henningsson ] + * New upstream release, remaining patches: + * Add build dependency on libjson0-dev + * Dropped patches (implemented upstream): + 0001-Work-around-some-platforms-not-having-O_CLOEXEC.patch + 0009-lp533877-handle-digmic.patch + 0015-alsa-mixer-Add-workaround-for-some-USB-headsets.patch + 0200-gold.patch + 0201-alsa-mixer-Add-a-few-well-known-descriptions.patch + 0202-alsa-mixer-add-required-any-and-required-for-enum-op.patch + 0203-alsa-mixer-always-round-towards-0-dB.patch + 0204-alsa-mixer-Add-new-paths-for-Internal-Mic-Front-Mic-.patch + 0205-alsa-mixer-Fixup-Mic-Line-analog-input-paths-to-work.patch + 0206-alsa-mixer-Make-sure-capture-source-and-input-source.patch + 0207-PulseAudio-added-IT-block-to-fix-thumb-conditional-i.patch + 0208-alsa-sink-Fix-incorrect-work_done-value-to-prevent-expensive-update... + _smoother-calls.patch + 0209-sndfile-pacat-Use-file-extension-and-fix-format-from-string.patch + * Refreshed patches: + 0005-dont-load-cork-music-on-phone.patch + 0012-JACK-Load-module-jackdbus-detect-in-default.pa.patch + 0013-Load-RAOP-Zeroconf-by-default.patch + 0014-alsa-mixer-Add-separate-profile-for-Nvidia.patch + 0017-Make-dbus-error-more-polite.patch + * Upstream has removed libpulsebrowse, replace with dummy packages for the + time being. + * Updated shlibs files and debian/rules with new version number + * Add new modules to the pulseaudio package + * Initial pulseaudio support for jack detection + + [ Luke Yelavich ] + * debian/control: Remove the libpulse-browse0 package, and add set + pulseaudio to replace that package until after the next LTS + * Add symbols files for libpulse0 and libpulse-mainloop-glib0 and adjust + other shlibs files as necessary + + -- Luke Yelavich Thu, 11 Aug 2011 14:30:44 +1000 + +pulseaudio (1:0.9.23-0ubuntu2) oneiric; urgency=low + + [ Daniel T Chen ] + * Add the following patches backported from upstream git: + - aa7bc32 (parecord: Automatically detect file format from extension) + [series patch 0208] + - 226ddb1 (alsa-sink: fix mmap_write() work_done) [series patch 0209] + * Update debian/copyright to cover echo-cancel files. + + [ Michael Terry ] + * 0016-nodisplay-autostart.patch: + - Don't show in "Startup Applications" (LP: #803917) + + -- Michael Terry Fri, 01 Jul 2011 12:56:15 +0100 + +pulseaudio (1:0.9.23-0ubuntu1) oneiric; urgency=low + + * New upstream release, the following commits from the stable-queue branch + are included in this release: + - d4c9ad1 (streams: Fix the actual resampler method shown in debug + messages.) + - cc91a8f (module-combine-sink: Initialize smoother with offset + pa_rtclock_now()) + - 8a437ee (module-combine-sink: Initialize smoother in paused state) + - b54a43a (module-combine-sink: Check running flag before rendering in null + mode + - b3e4152 (pulsecore: Add a couple pa_asserts() on pa_tagstruct* calls.) + - 22c0dcb (device-manager: Free a hook slot to prevent segv on unload) + - c3bfcc9 (SSE/MMX: Fix problem with highpitched noise on i386) + - 9ee4229 (build-sys: Add echo-cancel dummy Makefile) + - f558189 (build-sys: bump soname) + * Bumped shlibs + * debian/rules: Exclude 0.9.23 modules from shlibs + + -- Luke Yelavich Fri, 24 Jun 2011 10:18:17 +1000 + +pulseaudio (1:0.9.22+stable-queue-69-gf8e8-0ubuntu1) oneiric; urgency=low + + * Merge from unreleased Debian git, remaining changes: + - epoch (my stupid fault :S) + - use speex-float-1 and change buffer and fragment size, depending on + architecture + - Add alsa configuration files to route alsa applications via pulseaudio + - Move libasound2-plugins from Recommends to Depends + - Add pm-utils sleep hook to suspend (and resume) users' pulseaudio + daemons + - Make initscript more informative in the default case of per-user + sessions + - add status check for system wide pulseaudio instance + - create /var/run/pulse, and make restart more robust + - indicate that the system pulseaudio instance is being started from the + init script + - check whether pulseaudio is running before preloading the padsp library + - Add DEB_OPT_FLAG = -O3 as per recommendation from + pulseaudio-discuss/2007-December/001017.html + - Generate a PO template on build + - the esd wrapper script should not load pulseaudio if pulseaudio is being + used as a system service + - add a pulseaudio apport hook + - drop padevchooser(Recommends) and pavucontrol (Suggests) + - add libudev-dev as a build-dependency + - Fix initialization of devices with modem subdevices + - Disable cork-music-on-phone + - disable flat volume + - Mute IEC958 Optical Raw by default + - use tdd instead of gdbm + - Add conflicts/replaces for pulseaudio-module-udev and + pulseaudio-module-rygel-media-server + - Add replaces for pulseaudio-module-hal to the pulseaudio package to handle + upgrades from hardy + - Load module-x11-bell in the start-pulseaudio-x11 script + - added IT block to fix thumb conditional instruction build error messages + - recommend instead of suggest rtkit + - Ship the jackdbus-detect module + - Ship extra quirks to mixer profiles for various x86 and ARM hardware, as + well as USB hardware + * New snapshot based on upstream git branch stable-queue: + - 4f67775 (http: support HTTP HEAD) + - 3bb6546 (vala: More vala fixes) + - 7fd0771 (x11: Fix build errors with newest xcb-util.) + - b72fc9b (x11: More XCB fixes.) + - f8e8a03 (rtkit: use private bus connection in order to avoid threading + issues when invoking pa_make_realtime()) + - c524b4c (memblockq: implement new call pa_memblockq_peek_fixed_size()) + - 1a8cf00 (make echo-cancel module that exposes a new sink and source) + - 9fa71e7 (echo-cancel: take into account snapshot delay) + - 7b972f5 (echo-cancel: use the phone media role) + - de6cdf9 (echo-cancel: tweak the resync code a little) + - 1c26694 (echo-cancel: improve debug) + - b30bf12 (echo-cancel: keep frame_size a power of 2) + - 6d8a907 (echo-cancel: Move the module into it's own directory) + - 57c5983 (echo-cancel: Split out speex code from the core module) + - 668f4e4 (echo-cancel: Pass arguments to the specific canceller module) + - c975dfa (echo-cancel: Let AEC module determine source/sink spec) + - 47e4dd1 (echo-cancel: Add alternative echo-cancellation implementation) + - 4a9fa8c (echo-cancel: Allow selection of AEC method using modargs) + - b6b8a7b (echo-cancel: Make blocksize a module-wide parameter) + - 2923c5e (echo-cancel: Mark immutable parameters as const in vfunc) + - 9f79c0e (echo-cancel: rework alignment code) + - 56a4684 (echo-cancel: improve accuracy) + - e936447 (echo-cancel: pause timer when echo canceling is off) + - d39043c (echo-cancel: Fix make distcheck) + - d8fab84 (echo-cancel: Fix out-of-tree build) + - 1212a6f (echo-cancel: Ensure correct handling of endianness) + - d866ade (echo-cancel: Use S16NE for adrian module) + - f93b5e1 (echo-cancel: Fix source may_move_to function) + - 6664650 (i18n: Update POTFILES.*) + * debian/libpulse-dev.install: Ship vala bindings + * Dropped patches, either they were previously backported, or are now + upstream: + - 0005-load-sample-dir-lazy.patch + - 0090-disable-flat-volumes.patch + - 0211-module-loopback-Add-adjust_time-to-valid-args.patch + - 0212-Limit-rate-adjustments-to-small-inaudible-jumps.patch + - 0213-module-rtp-recv-Use-new-algorithm-for-adjusting-samp.patch + - 0214-module-rtp-recv-Average-the-estimated-real-sample-ra.patch + - 0215-module-rtp-recv-Remove-smoother-from-write-index.patch + - 0216-conf-Make-system.pa-use-udev-detect-and-not-hal-dete.patch + - 0217-volume-Add-a-PA_VOLUME_UI_MAX-define-for-the-recomme.patch + - 0218-vala-Some-bugfixes-for-the-vala-bindings.patch + - 0219-vala-delegate-FreeCb-does-not-have-a-target.patch + - 0220-vala-move-GLibMainLoop-class-into-separate-file-to-f.patch + - 0221-vala-Fix-path-error-in-the-last-commit.patch + - 0222-build-sys-Link-binaries-linking-libpulse-to-libpulse.patch + - 0223-build-sys-Link-binaries-linking-libpulsecommon-to-li.patch + - 0224-build-sys-Link-lirc-libraries-in-right-order.patch + - 0225-module-jack-sink-source-protect-against-null-return-.patch + - 0226-vala-ChannelMap-has-no-destroy-function.patch + * debian/patches/series: Renamed and re-ordered some patches, and clearly + identified distro specific patches and upstream/upstreamable patches + * 0209-alsa-mixer-Fix-makefile-in.patch: Drop, as we use dh-autoreconf, + which takes care of this for us + * debian/pulseaudio.install: Add the echo-cancel module + * 0003-Mention-speex-and-libsamplerate-in-pulse-daemon.conf.patch: Drop, + upstream + + -- Luke Yelavich Fri, 27 May 2011 14:05:01 +1000 + +pulseaudio (1:0.9.22+stable-queue-24-g67d18-0ubuntu4) oneiric; urgency=low + + [ David Henningsson ] + * Fix missing Internal/Front/Rear mics on Nvidia chipsets (LP: #771739) + + [ Luke Yelavich ] + * debian/control: Update Vcs-Bzr field + + -- David Henningsson Thu, 28 Apr 2011 10:31:42 +0200 + +pulseaudio (1:0.9.22+stable-queue-24-g67d18-0ubuntu3) natty; urgency=low + + [ David Henningsson ] + * Add separate profile for Nvidia to make it easier to select the right + codec out of four (LP: #716371) + * Add workaround to make it possible to control the volume of some + USB headsets (LP: #749856, LP: #671560) + + [ Luke Yelavich ] + * debian/control: Demote pulseaudio-module-raop to suggests, as it is + causing various issues, including crashers, (LP: #742281, #743073) + and re-opens (LP #688272) + * Pull some bugfixes from the stable-queue branch: + - 4fa7495 (vala: Some bugfixes for the vala bindings) + - ea0a2a6 (vala: delegate FreeCb does not have a target.) + - 64985aa (vala: move GLibMainLoop class into separate file to fix linker + errors) + - 9f52c10 (vala: Fix path error in the last commit.) + - 1ade8df (build-sys: Link binaries linking libpulse to libpulsecommon too) + - c25207f (build-sys: Link binaries linking libpulsecommon to libpulse too) + - 4be49ae (build-sys: Link lirc libraries in right order) + - fd5b282 (module-jack-sink/source: protect against null return in + jack_get_ports) (LP: #733424) + - 93e7a19 (vala: ChannelMap has no destroy function.) + * debian/patches/0097-explicitly-link-libraries.patch: Dropped, applied + upstream + * debian/control, debian/rules: Add dh-autoreconf + + -- Luke Yelavich Mon, 11 Apr 2011 16:58:14 +1000 + +pulseaudio (1:0.9.22+stable-queue-24-g67d18-0ubuntu2) natty; urgency=low + + * Update to latest stable queue patches: + - 09770e5 (module-loopback: Add adjust_time to valid args + - 90c5520 (Limit rate adjustments to small, inaudible jumps + - 4620039 (module-rtp-recv: Use new algorithm for adjusting sample rate + - 2bfc032 (module-rtp-recv: Average the estimated real sample rate + - 2ee4ec5 (module-rtp-recv: Remove smoother from write index (LP: #569378) + - a8cd9d2 (conf: Make system.pa use udev-detect and not hal-detect. + - b872254 (volume: Add a PA_VOLUME_UI_MAX define for the recommended max + volume to show in UIs) + * 0210-PulseAudio-added-IT-block-to-fix-thumb-conditional-i.patch: + - added IT block to fix thumb conditional instruction build error messages + * debian/rules: Remove CFLAGS that are specific to arm, the above patch + makes those redundant (LP: #721498) + * debian/control: Add a dependency on pulseaudio-module-raop + + -- Luke Yelavich Thu, 10 Mar 2011 07:15:02 +1100 + +pulseaudio (1:0.9.22+stable-queue-24-g67d18-0ubuntu1) natty; urgency=low + + [ David Henningsson ] + * debian/patches/020x patches - add PulseAudio input mixer rewrite. + This will cause several HDA chips to have better named and controlled + sliders on the input side. + + [ Luke Yelavich ] + * New upstream snapshot based on stable queue: + - 67d1888 (client: Don't update smoother while corked) + - 6b280e9 (Fighting rewinds: Reduce calls to handle_seek) + - 3aeb047 (Fighting rewinds: Seek and write data in the same message) + - 1e1b299 (Core: Fix incorrect check of return value) + - 4080725 (tunnel: Fix automatic names when source/sink_name argument is + missing.) + - ec5a785 (ratelimit: fix log levels of log suppression messages) + + -- Luke Yelavich Fri, 18 Feb 2011 13:50:30 +1100 + +pulseaudio (1:0.9.22+stable-queue-18-geb966-0ubuntu2) natty; urgency=low + + * Fix FTBFS with ld.gold. + + -- Matthias Klose Wed, 19 Jan 2011 06:57:29 +0100 + +pulseaudio (1:0.9.22+stable-queue-18-geb966-0ubuntu1) natty; urgency=low + + [ Daniel T Chen ] + * debian/control: pulseaudio-module-zeroconf Depends on avahi-daemon + (LP: #689093) + * debian/patches/0101-update-stable-queue.patch: Apply 84c8b23c to + resolve incorrect header being used for libsndfile seen with pacat + --file-format (LP: #660504) + * debian/patches/0104-Load-RAOP-Zeroconf-by-default.patch: Follow + recommendation by Martin-Éric Racine to conditionally load support + by default for streaming to an Apple Airport Express (LP: #688272) + * debian/pulseaudio-utils.links: Also add pamon(1) and parecord(1) + (Closes: #599696) + + [ David Henningsson ] + * debian/pulse-alsa.conf: Add name hint for default pcm device, + indicating that PulseAudio is active. + + [ Luke Yelavich ] + * New upstream snapshot based on the stable queue branch: + - eb966f7 (build-sys: Make --disable-dbus actually work.) + - 8f8d247 (build-sys: Mention dbus support in the summary) + - b3ff4f4 (build-sys: Put in specific warnings when there is no udev or + DBUS support) + - 862bbee (console-kit: Console Kit support is dependent on DBUS and is + thus optional.) + - 7cb1401 (padsp: wrap __open_2 and __open64_2) + - 6f870f5 (fix bug about get source-output status) + - 4269b05 (Fix typos) + - 1c83b03 (Further clarify src- and speex- references in pulse-daemon.conf) + - 84c8b23 (Fix return value of pa_sndfile_format_from_string) + - d963b86 (core: Fix variable "has_whined" value bug) + - 52e3268 (trivial: Mention speex as a resampler reference in + pulse-daemon.conf) + - 3e6af07 (module-loopback: Prevent an infinite loop when rate adjusting + is disabled + * 0101-update-stable-queue.patch and + #0102-autoreconf.patch: + - Disable for now, since latest stable queue are roled into the snapshot + tarball + + -- Luke Yelavich Fri, 14 Jan 2011 10:03:49 -0600 + +pulseaudio (0.9.22-2) UNRELEASED; urgency=low + + * debian/control: + + Fix typo in long description of pulseaudio-module-x11, thanks to + Sam Morris (Closes: #500038) + + Clarify long description of pulseaudio-esound-compat. Many apps + still in use require functionality from this package + (Closes: #601725) + * debian/libpulse-dev.examples: Apply patch from Mario Lang to include + simple examples in the dev package. Thanks! (Closes: #561258) + * debian/patches/ + 0003-Mention-speex-and-libsamplerate-in-pulse-daemon.conf.patch: + + Mention speex in the resampling section. Currently the Resampler + section of "Programming with Speex (the libspeex API)" contains + the relevant information (Closes: #541206) + * debian/pulseaudio-utils.links: Also add pamon(1), parec(1), and + parecord(1) (Closes: #599696) + * debian/README.Debian: Clarify historical pulse-rt use and document + current recommendation of RealtimeKit (Closes: #548363) + + -- Daniel T Chen Sat, 18 Dec 2010 20:26:47 -0500 + +pulseaudio (0.9.22-1) experimental; urgency=low + + * New upstream release + * debian/patches/0002-CVE-2009-1299.patch: + + Dropped, fixed upstream + * debian/patches/0003-Re-bootstrap.patch + + Dropped, not needed anymore + * debian/rules: Stop using -g0 on mips{,el} the toolchain has been fixed + * debian/rules, debian/control: Update build-depends and force building + with X11 + * debian/control: Suggest rtkit + * debian/control: Prune unneeded depends of libpulse-dev + + -- Sjoerd Simons Sun, 05 Dec 2010 12:01:37 +0000 + +pulseaudio (1:0.9.22-0ubuntu3) natty; urgency=low + + * debian/pulseaudio-module-jack.install: Ship the jackdbus-detect module + + -- Luke Yelavich Wed, 08 Dec 2010 17:57:18 +1100 + +pulseaudio (1:0.9.22-0ubuntu2) natty; urgency=low + + * 0101-update-stable-queue.patch, update to latest stable queue: + - 205cad6 (jack: Add module-jackdbus-detect + - e9deb97 (build-sys: Include the .version file in the distribution + tarball) + - a1f1255 (build-sys: Fix make distcheck failure due to udev rules + fixed install path) + - 675cc0a (build-sys: Replace dummy Makefiles with proper Makefile.am's) + - bd769fa (rescue-streams: Fix segfault in some conditions) + - f6574c8 (volume: Add explicit checks for ARMv6 instructions) + * 0102-autoreconf.patch: Re-generate autotools pieces for the above update + * 0103-JACK-Load-module-jackdbus-detect-in-default.pa.patch: Enable jackdbus + module by default for now, hopefully longer term there will be a better + way to turn this module on/off + + -- Luke Yelavich Wed, 08 Dec 2010 16:58:27 +1100 + +pulseaudio (1:0.9.22-0ubuntu1) natty; urgency=low + + * New upstream release, based on the stable-queue branch + * Drop following patches, as applied upstream: + - 0101-alsa-mixer-add-profile-for-Native-Instruments-Koreco.patch + - 0102-intended-roles-Mark-devices-with-a-form-factor-of-he.patch + * debian/rules: + - Disable --as-needed due to a circular dependency for libpulsecommon + - Adjust filenames/paths for 0.9.22 + + -- Luke Yelavich Fri, 26 Nov 2010 13:44:10 +1100 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-98-ga8d7-0ubuntu3) natty; urgency=low + + * 0101-alsa-mixer-add-profile-for-Native-Instruments-Koreco.patch: Also + adjust src/Makefile.in, so that the new profile actually gets shipped + + -- Luke Yelavich Fri, 05 Nov 2010 14:27:34 -0400 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-98-ga8d7-0ubuntu2) natty; urgency=low + + * debian/control: Update Vcs-Bzr field + * Pull latest fixes from stable queue: + - 8a30d4c (alsa-mixer: add profile for Native Instruments Korecontroller) + - 848dd37 (intended-roles: Mark devices with a form factor of 'headset' as + being appropriate for 'phone' streams) + + -- Luke Yelavich Fri, 05 Nov 2010 10:40:47 -0400 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-98-ga8d7-0ubuntu1) natty; urgency=low + + * New upstream snapshot, based on the stable-queue branch + * debian/patches: Drop the following patches as they are applied upstream, + or were created to regenerate autotools files/package version + - 0090-use-volume-ignore-for-analog-output.patch + - 0093-backport-fixes-stable-queue-head.patch + - 0094-add-missing-mixer-paths-and-rerun-automake.patch + - 0095-cve-2009-1299.patch + - 0097-regenerate-configure.patch + - 0098-tarball-version.patch + - 0192-stream-restore-Clear-the-save_sink-save_source-flags.patch + - 0193-augment-properties-Search-for-.desktop-files-in-subf.patch + - 0194-device-manager-Ensure-that-sinks-sources-populate-th.patch + - 0195-SSE-MMX-ARM-Fix-high-frequency-noise-with-unusual-nu.patch + * debian/control: Update Vcs-Bzr link + * 0097-explicitly-link-libraries.patch: Patch to explicitly link pulseaudio + tests binaries against pulseaudio libraries, due to gcc 4.5 and new + binutils in natty enforcing explicit linking + + -- Luke Yelavich Fri, 29 Oct 2010 12:39:27 -0400 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu21.1) maverick-proposed; urgency=low + + * 0195-SSE-MMX-ARM-Fix-high-frequency-noise-with-unusual-nu.patch: + - Pull fix from the upstream stable-queue branch a8d76e9 to Fix a high + frequency noise with an nunusual number of channels, when either SSE, + MMX, or ARM optimized volume scaling code is used. (LP: #445849) + + -- Luke Yelavich Thu, 14 Oct 2010 16:38:46 +1100 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu21) maverick; urgency=low + + * Add 0192-stream-restore-Clear-the-save_sink-save_source-flags.patch + Clear the save_sink/save_source flags on apply_entry. + * Add 0193-augment-properties-Search-for-.desktop-files-in-subf.patch + Search for .desktop files in subfolders too. + * Add 0194-device-manager-Ensure-that-sinks-sources-populate-th.patch + Ensure that sinks/sources populate the device manager lists in order + of their priority. + + -- Jonathan Riddell Sun, 03 Oct 2010 20:38:24 +0100 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu20) maverick; urgency=low + + * 0093-backport-fixes-stable-queue-head.patch: Backport the following + changesets from the stable-queue branch: + + 2c564f2 (xcb: Ensure the XCB connection is valid before using it.) + + 5c0bc09 (xcb: xcb_get_setup() can return 0, so make sure we check it before using) + + 165cb87 (x11: Use the default screen for X11 properties.) + (LP: #640127) + + -- Daniel T Chen Sat, 18 Sep 2010 08:46:31 -0400 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu19) maverick; urgency=low + + * Removed packaging for a patch that was being tested locally, as the + patch is not going into maverick. Fixes FTBFS + + -- Luke Yelavich Wed, 15 Sep 2010 14:38:38 +1000 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu18) maverick; urgency=low + + [ Emmet Hikory ] + * Drop 0001-change-resample-and-buffering.patch + * debian/rules: Add arch-specific build-time configuration patching system + - set resample-method to speex-fixed-1 and fragments to 2 for armel + - set resample-method to speex-float-1 and fragments to 8 for other arches + - Closes LP: #623242 + + [ Luke Yelavich ] + * debian/rules: + - Back up src/daemon/daemon.conf.in, restoring on package clean, allowing + the package to be built more than once, and keeping the diff sane + - Disable flat volumes via regular expression instead of a patch, to + prevent the mess that goes with touching a file multiple times, and + with multiple methods + * 0093-backport-fixes-stable-queue-head.patch: Backport the following + changesets from the stable-queue branch: + + 6c8660a (alsa: Fix assertion on mmap_write (triggered via a52 plugin)) + + aaae99d (alsa: disable rewinds when using ALSA plugins) + + 4a1072e (udev: fix hex decoding) + + 2b88634 (x11: Partially convert to XCB.) + + 9375019 (alsa: resume smoother after unsuspend) + + 4fb02d8 (alsa: increase the smoother window) + + e2ef3a1 (alsa: don't make use of tsched related variables when tsched is + disabled) + + 514fd1e (add rewind-safeguard parameter) + + 8748ebd (alsa-sink: Get rid of a compiler warning regarding + rewind_safeguard type.) + + a65825f (alsa: Set the rewind safeguard proportionally to sample spec) + + 3d9b710 (smoother: avoid losing precision) + + 1503b8c (alsa-source: refactor smoother and device start) + + 74c117f (alsa-time-test: make test usable for capture too) + + 1c29f55 (alsa: work around slightly broken _delay implementations) + + 1ff360c (alsa: make defines for smoother configuration) + + 28f4aeb (alsa-mixer: add profile for Traktor Kontrol S4) + + eef247b (alsa: Only set the 'first' flag to false when we actually call + snd_pcm_start()) + * debian/control: Add libxcb-atom1-dev and libx11-xcb-dev to build depends + * debian/patches/0090-disable-flat-volumes.patch: Drop, as per above + * debian/patches/0097-regenerate-configure.patch: Refreshed + * debian/patches/0098-tarball-version.patch: Ensure the version string for + pulseaudio internally stays the same, in case the build process wants + to regenerate autotools files + * debian/patches/0094-add-missing-mixer-paths-and-rerun-automake.patch: + - Remove the patch to Makefile.in, easier to do it all at once in a + single patch later in the series + + -- Luke Yelavich Wed, 15 Sep 2010 13:57:55 +1000 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu17) maverick; urgency=low + + * No-change rebuild to pick up new j-a-c-k shlibs + + -- Luke Yelavich Wed, 21 Jul 2010 11:29:18 +0200 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu16) maverick; urgency=low + + * Include /usr/bin/start-pulseaudio-kde and its autostart file now that KDE + will be using PulseAudio by default in Maverick (LP: #563250) + * Also update 0057-load-module-x11-bell.patch to give its improvements to + /usr/bin/start-pulseaudio-kde as well + + -- Jonathan Thomas Mon, 07 Jun 2010 18:32:53 -0400 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu15) maverick; urgency=low + + * 0093-backport-fixes-stable-queue-head.patch: Backport the following + changesets from the stable-queue branch: + + bc7314f (name all threads for /proc/$PID/task/$TID/comm) + + d519ca4 (prevent crash on jack server shutdown) (LP: #538815) + + 65f89dc (fix bracketing in pa_rtp_recv()) + * debian/01PulseAudio: modify the ConsoleKit active seat checks in the + pm-utils hook so that: + - pre-suspend: all users' sink & source states are stored, then only + the active seat's sinks and sources are muted + - post-resume: all users' sink & source pre-suspend states are + restored + This resolves the issue where users' post-resume sink & source + states don't correspond with their pre-suspend ones. + (LP: #569395) + * debian/01PulseAudio: fix broken quoting and misuse of su -l. Merged + from lp:~hyperair/pulseaudio/fix-01Pulseaudio-quoting. Thanks, + Chow Loong Jin! (LP: #572391) + * debian/control: Update bzr branch for maverick. + + -- Daniel T Chen Sat, 08 May 2010 11:08:56 -0400 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu14) lucid; urgency=low + + * 0096-lp451635-handle-dove-x0-line-hp-swap.patch: Make the connector + work as intended: if 'Analog Output' is selected in the dropdown, + then 'Line HP Swap' is muted; if 'Analog Headphones' is selected, + then 'Line HP Swap' is unmuted. This better fits existing speaker + semantics and actually works. Many thanks to Tobin Davis for + helping chase this one. Really closes (LP: #451635) + + -- Daniel T Chen Fri, 26 Mar 2010 15:18:35 -0700 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu13) lucid; urgency=low + + [ Daniel T Chen ] + * 0093-backport-fixes-stable-queue-head.patch: Backport the following + changesets from the stable-queue branch: + + a7c1778 (don't pick monitor sources automatically for role-based + device selection). + + e8b83fa (handle asyncns failure when IPv6 is not supported in the + kernel). + * 0096-lp453966-handle-digmic-pt2.patch: Raise the priority of the + 'Digital Mic 1' digital input source for newer Dell laptops. + (LP: #453966) + * 0096-lp451635-handle-dove-x0-line-hp-swap.patch: Add 'Line HP Swap' + to the Headphone profile. (LP: #451635) + * debian/control: Update Vcs-Bzr to point to new branch that uses pack + repo format 2a. + + -- Daniel T Chen Thu, 25 Mar 2010 21:58:46 -0700 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu12) lucid; urgency=low + + * debian/pulseaudio.init: Remove udev from Required-* LSB headers + (LP: #432301) + * debian/patches/: + + 0095-cve-2009-1299.patch: Fix insecure temporary file creation; + pulled from upstream stable-queue d3efa43; CVE-2009-1299. + (LP: #509008) + + 0096-lp533877-handle-digmic.patch: Prefer the built-in digital + mic on newer Dells, e.g., XPS 1330. (stable-queue 29845be) + (LP: #533877) + + 0097-regenerate-configure.patch: Apply changes from stable-queue + f9b31fe (gobject linking) and d3efa43 above. + + -- Daniel T Chen Wed, 10 Mar 2010 18:53:51 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu11) lucid; urgency=low + + * 0093-backport-fixes-stable-queue-head.patch: Backport the following + changesets from the stable-queue branch: + + 522c44 (strip spaces from ALSA card/pcm names) + + 195069 (use pa_strip()) + + dd682d (reset max_rewind/max_request in sink while suspending) + + 30f28e (fix wrong counters by using pa_memblockq_pop_missing() for + all request handling) + + 0d1154 (rework how stream volumes affect sink volumes) + + -- Daniel T Chen Mon, 22 Feb 2010 00:22:50 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu10) lucid; urgency=low + + * 0093-backport-fixes-stable-queue-head.patch: Backport the following + changesets from the stable-queue branch: + + dfe27f (don't complain about missing SHM segments) + + 5ce18c (fix definition of INVALID_INDEX for vala) + + 6bbdd2 (fix definition of the GLib mainloop adapter for vala) + + 3f44bf (Use "Subwoofer" in channelmap) + + 117c99 (fix wrapping of port setting calls for vala) + + ddabaa (explicitly mention 'test' role in proplist) + + 8adf53 (increase verboseness when not restoring sink) + + 180589 (use sample name for unmodified fallback) + + f9b957 (don't queue cached sample when sink is suspended) + + b2e9fb (pass buffer_attr to recording streams) + + a469d4 (make devices resume for corked state to fix latency + miscalculation) (LP: #511558) + + 4a3210 (improve buffer_attrs logging) + * 0094-add-missing-mixer-paths-and-rerun-automake.patch has been + merged upstream (047e16f in the stable-queue branch), but we'll continue to + carry it until the next stable tarball is rolled. + + -- Daniel T Chen Sun, 21 Feb 2010 22:37:37 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu9) lucid; urgency=low + + * 0094-add-missing-mixer-paths-and-rerun-automake.patch: Fix missing paths + elements that broke volume control. + + -- Daniel T Chen Thu, 18 Feb 2010 23:56:42 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu8) lucid; urgency=low + + * Back out 307bd1 until we can roll a new tarball. Applying it to the + current source package requires all sorts of nasty hacks. + (LP: #523716) + * Drop 0094-autoconf.patch, as it's no longer needed + + -- Daniel T Chen Thu, 18 Feb 2010 07:32:58 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu7) lucid; urgency=low + + * debian/control: Since JACK has been approved for promotion back into + main, add its packages + * 0093-backport-fixes-stable-queue-head.patch: Backport the following + changesets from the stable-queue branch: + + 19fa81 (always fulfill write requests from the server) + + 96ec29 (store away fd type for pacmd) + + 6e064d (don't enter busy loop when reading from stdin very early) + + -- Daniel T Chen Wed, 17 Feb 2010 22:33:34 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu6) lucid; urgency=low + + [ Daniel T Chen ] + * pulseaudio.default: More clearly describe the conditions for + autospawn to function correctly given the recent login-speedup work. + (As a side effect, it now also lists what one needs to do to disable + PA.) + * 0093-backport-fixes-stable-queue-head.patch: Backport the following + changesets from the stable-queue branch: + + a631be (PA_SINK_INPUT_IS_LINKED typo fix) + + e8cb96 ('Desktop Speaker' handling) + + 7d6bab ('Shared Mic/Line in', 'Analog Source' handling) + + 0c836a ('Internal Mic' handling) + + 307bd1 (default output port names) + + f9b31f (gobject explicit linking) + + ff2474 (padsp handling of /dev/audio) + + 96592c (dbus timeout callback timer fix) + + 5e2af2 (logging of eventfd read failures) + * 0094-autoconf.patch: Rerun autoconf given explicit gobject link + addition; readd version string. + + [ Martin Pitt ] + * 0092-delay-gnome-autostart.patch: Push it out a little further; the X11 + bell is not crucial at desktop startup, and it keeps other programs from + doing more urgent initialization. + + -- Daniel T Chen Mon, 08 Feb 2010 12:42:02 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu5) lucid; urgency=low + + * Add bzr-builddeb configuration (merge mode). + * debian/control: Prefix the Debian git Vcs-* fields with XS-Debian-*, so + that debcheckout on Ubuntu will actually work. + * Add 0092-delay-gnome-autostart.patch: Delay applet startup by two seconds, + so that pulseaudio has started up enough to avoid starting it a second + time through autospawn. + + -- Martin Pitt Mon, 01 Feb 2010 18:12:13 -0800 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu4) lucid; urgency=low + + * debian/01PulseAudio: Break from state (re)store in the correct + place! + + -- Daniel T Chen Sun, 31 Jan 2010 13:44:57 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu3) lucid; urgency=low + + * debian/01PulseAudio: + + Fix su(1) -c quoting (LP: #515038) + + Now that PA only stores mixer state for the active CK seat, and + because the active ConsoleKit seat is the only one we care about, + we don't need to save all PA users' mixer states. Thus, we can + stop (re)storing state as soon as we've finished processing the + active ConsoleKit seat, thereby further optimizing the suspend/ + resume speed. + + -- Daniel T Chen Sun, 31 Jan 2010 13:16:46 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu2) lucid; urgency=low + + * debian/01PulseAudio: Use su(1) instead of sudo(8) + (LP: #489144, #498980). + * debian/patches/series: To trim the startup time, don't lazy-load + sounds by not applying 0005-load-sample-dir-lazy.patch. + * 0091-dont-load-cork-music-on-phone.patch: Refresh. + * 0057-load-module-x11-bell.patch: Don't explicitly load the daemon + since it will autospawn if necessary, and if the system or user + configuration has autospawn disabled it breaks that semantics + (LP: #513120). + + -- Daniel T Chen Fri, 29 Jan 2010 14:37:52 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-32-g8478-0ubuntu1) lucid; urgency=low + + * New snapshot of stable-queue branch as requested by upstream + * debian/patches/0099-back-out-8d3566.patch: Drop. Seeking is fixed + in the latest snapshot. + * debian/pulseaudio.default: Update instructions for using system + mode. + + -- Daniel T Chen Sun, 17 Jan 2010 22:51:57 -0500 + +pulseaudio (1:0.9.22~0.9.21+stable-queue-24-gfa64-0ubuntu1) lucid; urgency=low + + * Reroll actual stable-queue tarball (arrrg!) + * debian/01PulseAudio: Rework pacmd bits (LP: #507941) + * debian/patches/: + + add: 0099-back-out-8d3566.patch (upstream says this commit causes + regressions) + - drop: 0099-change-configure-git-version-tag.patch (no longer + relevant) + + refresh: 0001-change-resample-and-buffering.patch + 0054-mute-iec958-optical-raw-for-audigyX.patch + 0090-disable-flat-volumes.patch + 0091-dont-load-cork-music-on-phone.patch + 0057-load-module-x11-bell.patch + + -- Daniel T Chen Fri, 15 Jan 2010 19:06:15 -0500 + +pulseaudio (1:0.9.22~0.9.21+341-g62bf-0ubuntu1) lucid; urgency=low + + * New snapshot based on stable-queue git branch (testing requested + specifically by upstream) + - LP: #164745, #173212, #201391, #204536, #207796, #210016, #221038, + - LP: #226342, #230408, #236423, #237443, #250059, #269585, #274304, + - LP: #274577, #275474, #277532, #277566, #277932, #278025, #280534, + - LP: #283049, #286816, #287036, #292732, #298011, #298301, #300290, + - LP: #302038, #311497, #311853, #324062, #339448, #344057, #348979, + - LP: #350829, #356206, #367379, #367544, #369822, #371897, #374846, + - LP: #375570, #381801, #399515, #402950, #403786, #408169, #409322, + - LP: #409723, #410326, #410446, #417695, #417976, #419271, #421072, + - LP: #422774, #423979, #424655, #425028, #427016, #431072, #432660, + - LP: #437640, #437996, #442191, #443306, #443389, #446719, #449762, + - LP: #455417, #461532, #464652, #483191, #497537, #503780 + * debian/patches/: + + add: 0099-change-configure-git-version-tag.patch: Match released + upstream 0.9.21 for shlibs and LIBPULSE_VERSION_INFO + - drop: 0004-set-tsched0.patch (no longer relevant) + 0050-revert-pacmd-poll-argv.patch (no longer relevant) + 0056-dont-bail-on-sound-class-modem.patch (merged) + 0056-ignore-sound-class-modem.patch (merged) + 0058-Backport-4c793.patch (merged) + 0059-Backport-978d3.patch (merged) + 0060-fix-implicit-func-decl-cpu-arm.patch (merged) + 0061-Backport-c5fdb.patch (merged) + 0070-dont-bail-on-sound-class-modem-devs.patch (merged) + + refresh: 0001-change-resample-and-buffering.patch + 0090-disable-flat-volumes.patch + 0091-dont-load-cork-music-on-phone.patch + 0057-load-module-x11-bell.patch + + -- Daniel T Chen Thu, 14 Jan 2010 20:33:05 -0500 + +pulseaudio (0.9.21-3) unstable; urgency=low + + * debian/rules: Compile with -g0 on mips{,el} to work around #519006 in + gcc-4.4 + + -- Sjoerd Simons Sat, 03 Jul 2010 15:12:54 +0100 + +pulseaudio (0.9.21-2) unstable; urgency=low + + * Import NMU patches into pkg-pulse git, thanks to the security team for + their work! + * debian/patches/0003-Re-bootstrap.patch + + Added. Update configure so we don't have to re-run autotools when + building the package (Closes: #576457, #576546, #576769) + * Install a KDE specific startup file and module-device-manager. + Thanks to Daniel Schaal and Zsolt Rizsanyi for patches and tips. + (Closes: #570487) + * d/p/0004-In-KDE-only-start-pulseaudio-from-the-KDE-specific-d.patch + + Added. When running KDE use the KDE specific autostart desktop file + instead of the generic pulseaudio-x11 file + * Fix two typos in debian/pulseaudio.default, patch by Paul Menzel + (Closes: #566332) + * Prepare the debian package for building on HURD again (needs some upstream + fixes as well). Patch by Pino Toscano (Closes: #573339) + * Use the pulseaudio.1 manpage from the source tree instead of the older (and + outdated) debian specific one. + + -- Sjoerd Simons Sun, 27 Jun 2010 20:27:23 +0100 + +pulseaudio (0.9.21-1.2) unstable; urgency=high + + * Non-maintainer upload by the Security Team. + * Added autoconf, automake, and libtool in Build-Depends to regenerate + configure and auto* files at build time, and fixed a regression introduced + in previous NMU (Closes: #576457) + + -- Giuseppe Iuculano Mon, 05 Apr 2010 23:02:56 +0200 + +pulseaudio (0.9.21-1.1) unstable; urgency=high + + * Non-maintainer upload. + * Fix insecure temporary file creation security issue (closes: #573615). + + -- Michael Gilbert Sat, 27 Mar 2010 14:32:13 -0400 + +pulseaudio (0.9.21-1) unstable; urgency=low + + * New upstream release + * d/p/0002-Fix-makefiles-to-include-all-alsa-path-files-on-inst.patch + + Removed, merged upstream + * debian/copyright: Updated + * debian/rules: Fix build on arm (slightly changes target name) + + -- Sjoerd Simons Mon, 23 Nov 2009 23:51:16 +0000 + +pulseaudio (1:0.9.21-0ubuntu6) lucid; urgency=low + + * Backport fix from master HEAD: + + 0061-Backport-c5fdb.patch (LP: #502992) + * The following patches have been merged upstream, but we'll continue + to apply them here until the next upstream snapshot: + . 0056-ignore-sound-class-modem.patch + . 0060-fix-implicit-func-decl-cpu-arm.patch + + -- Daniel T Chen Tue, 05 Jan 2010 18:34:40 -0500 + +pulseaudio (1:0.9.21-0ubuntu5) lucid; urgency=low + + * Refresh 0060-fix-implicit-func-decl-cpu-arm.patch with more FTBFS- + on-armel fixes (all submitted upstream). + + -- Daniel T Chen Thu, 17 Dec 2009 00:01:49 -0500 + +pulseaudio (1:0.9.21-0ubuntu4) lucid; urgency=low + + * 0060-fix-implicit-func-decl-cpu-arm.patch: Fix FTBFS on armel. + + -- Daniel T Chen Wed, 16 Dec 2009 22:45:25 -0500 + +pulseaudio (1:0.9.21-0ubuntu3) lucid; urgency=low + + * 0070-dont-bail-on-sound-class-modem-devs.patch: Fix parameter + in function call. Thanks to Whoopie for spotting. + + -- Daniel T Chen Wed, 16 Dec 2009 20:13:43 -0500 + +pulseaudio (1:0.9.21-0ubuntu2) lucid; urgency=low + + * Fix LP: #394500, #450222: + + 0070-dont-bail-on-sound-class-modem-devs.patch: + + Add pa_udev_get_sysattr() helper function so that we can + retrieve pcm_class. + + Add short-circuit in is_card_busy(). Currently there is an + incorrect break out of the loop when an HDA modem is driven by + slmodemd/hsfmodem. An HDA modem resides in device 6 and will + not contain "closed\n" for + /proc/asound/card.../pcm.../sub.../status. + * 0058-Backport-4c793.patch: Use pa_stream pointers to hashmaps + instead of dynarrays. + * 0059-Backport-978d3.patch: Mark shared variables as volatile + to supress compiler optimizations. + + -- Daniel T Chen Sun, 06 Dec 2009 19:40:04 -0500 + +pulseaudio (1:0.9.21-0ubuntu1) lucid; urgency=low + + [ Daniel T Chen ] + * New upstream bugfix release + * debian/control: pulseaudio-module-raop must Depends + pulseaudio-module-zeroconf (LP: #484870). Thanks, Dominic Evans! + * Bump for 0.9.21: + + debian/libpulse0.shlibs + + debian/pulseaudio.shlibs + + debian/rules + * debian/pulseaudio.install: + debian/copyright: Amend for addition of: + + module-device-manager.so + * debian/README.Debian: Update for Ubuntu 9.04+. + * 0002-Fix-makefiles-to-include-all-alsa-path-files-on-inst.patch: + Drop, fixed upstream. + * 0051-fix-sigfpe-mcalign.patch: Drop, needs fixing in alsa-kernel + and alsa-lib. + + [ Chow Loong Jin ] + * debian/01PulseAudio: Add/modify functions to (re)store sink/source + state for (resume/)suspend (LP: #404986, #483900) + + [ Luke Yelavich ] + * Remove wrapper scripts and accessibility special case, to help with the + desktop startup time. The accessibility case should be solved in + speech-dispatcher by the time lucid ships. + - debian/patches/0006-a11y-special-case-disable.patch: Removed + - debian/70pulseaudio: Removed + - debian/pulse-session: Removed + - debian/pulseaudio.install: Re-add the xdg autostart desktop file + - debian/pulseaudio.preinst: Instead of removing the xdg autostart desktop + file on upgrade, remove the 70pulseaudio X Session script on upgrade + + -- Daniel T Chen Wed, 25 Nov 2009 16:34:54 -0500 + +pulseaudio (0.9.20-1) unstable; urgency=low + + * New upstream release + * d/p/0002-Fix-makefiles-to-include-all-alsa-path-files-on-inst.patch + + Added. Make sure all alsa path configuration files are installed + + -- Sjoerd Simons Sat, 14 Nov 2009 22:50:52 +0000 + +pulseaudio (1:0.9.20-0ubuntu3) lucid; urgency=low + + * drop the enforced switch to ARMv6 in debian rules (we build for cortex-a8 + by default now). + * Make sure the arm specific assembler code builds properly with thumb + support by adding -Wa,-mimplicit-it=thumb instead until it is added to + the default compiler flags (fixes FTBFS). + + -- Oliver Grawert Wed, 25 Nov 2009 14:16:59 +0100 + +pulseaudio (1:0.9.20-0ubuntu2) lucid; urgency=low + + * Add 0002-Fix-makefiles-to-include-all-alsa-path-files-on-inst.patch + from Debian unstable (thanks, Sjoerd Simons!) + * Fix 0055-handle-Master-Front.patch to handle only front elements + based on comments from Lennart. The patch now does the right thing + despite linux still doing the wrong thing, but at least we handle + cases where linux will do the right thing. + + -- Daniel T Chen Sun, 15 Nov 2009 13:45:49 -0500 + +pulseaudio (1:0.9.20-0ubuntu1) lucid; urgency=low + + * New upstream bugfix release + + Fix BT validation (LP: #437293) + * debian/control: + + pulseaudio Provides pulseaudio-module-hal, pulseaudio-module-udev, + and pulseaudio-module-rygel-media-server for upgrades (really + fixes LP #477382) + * debian/patches/: + - 0002-work-around-suspend-on-idle-source-sink-race.patch: + - 0052-revert-sse2-optimize.patch: + - 0055-backport-alsa-bt-position-fixes-b3592a1.patch: + Remove; applied upstream + + 0054-mute-iec958-optical-raw-for-audigyX.patch: Refresh + + 0055-handle-Master-Front.patch: For new VIA-based HDA, handle + this mixer control until we've fixed it in linux (LP: #478868) + * Bump for 0.9.20: + + debian/libpulse0.shlibs + + debian/pulseaudio.shlibs + + debian/rules + + -- Daniel T Chen Thu, 12 Nov 2009 19:19:21 -0500 + +pulseaudio (1:0.9.19-2ubuntu2) lucid; urgency=low + + * debian/control: + + Promote pulseaudio-utils to Depends for pulseaudio so that the + pm-utils script is present (LP: #478182) + - Drop obsolete Depends on pulseaudio-module-udev for pulseaudio + (LP: #477382) + * debian/01PulseAudio: Don't fail suspend/resume when system-wide + daemon is running (LP: #476505) + + -- Daniel T Chen Fri, 06 Nov 2009 18:37:36 -0500 + +pulseaudio (1:0.9.19-2ubuntu1) lucid; urgency=low + + * Merge from Debian unstable, remaining changes: + - epoch (my stupid fault :S) + - Don't build against, and create jack package. Jack is not in main + - use speex-float-1 resampler to work better with lack of PREEMPT in + karmic's -generic kernel config, also change buffer size + - Add alsa configuration files to route alsa applications via pulseaudio + - Move libasound2-plugins from Recommends to Depends + - Add pm-utils sleep hook to suspend (and resume) users' pulseaudio + daemons + - Make initscript more informative in the default case of per-user + sessions + - add status check for system wide pulseaudio instance + - create /var/run/pulse, and make restart more robust + - LSB {Required-*,Should-*} should specify hal instead of dbus, + since hal is required (and already requires dbus) + - indicate that the system pulseaudio instance is being started from the init + script + - Install more upstream man pages + - Link to pacat for parec man page + - check whether pulseaudio is running before preloading the padsp library + - Add DEB_OPT_FLAG = -O3 as per recommendation from + pulseaudio-discuss/2007-December/001017.html + - cache /usr/share/sounds/ubuntu/stereo/ wav files on pulseaudio load + - Generate a PO template on build + - add special case to disable pulseaudio loading if accessibility/speech + is being used + - the esd wrapper script should not load pulseaudio if pulseaudio is being + used as a system service + - add a pulseaudio apport hook + - fix some typos in README.Debian + - drop padevchooser(Recommends) and pavucontrol (Suggests) + - drop libasyncns-dev build dependency, its in universe + - add libudev-dev as a build-dependency + - Fix initialization of devices with modem subdevices + - Backport ALSA BlueTOoth position fixes from git HEAD + - Disable cork-music-on-phone + - Revert sse2 optimizations + - disable flat volume + - Handle div by zero attempts + - Mute IEC958 Optical Raw by default + - use tdd instead of gdbm + * debian/control: + - Dro packages, due to debian including the files in these packages in the + main pulseaudio package: pulseaudio-module-udev, + pulseaudio-module-udev-dbg, pulseaudio-module-rygel-media-server, + pulseaudio-module-rygel-media-server-dbg + - Add conflicts/replaces for pulseaudio-module-udev and + pulseaudio-module-rygel-media-server + - Add replaces for pulseaudio-module-hal to the pulseaudio package to handle + upgrades from hardy + - Remove rtkit from conflicts, and add it to recommends, as 2.6.32 has the + needed patches + + [ Daniel T Chen ] + * 0057-load-module-x11-bell.patch: Load module-x11-bell in the + start-pulseaudio-x11 script (LP: #301174) + + -- Luke Yelavich Fri, 06 Nov 2009 14:07:19 +1100 + +pulseaudio (0.9.19-2) unstable; urgency=low + + * Built with normal old-style hal support on kfreebsd and the hurd + * debian/patches/0001-Work-around-some-platforms-not-having-O_CLOEXEC.patch: + + Added. Don't use O_CLOEXEC on platforms that don't support it. + (Closes: #550826) + * debian/pulseaudio.install: Install pulse udev rules so device profiles can + be matched with the few devices that need special tweaks + * debian/pulseaudio.install: Add the rygel media server plugin, such that + pulseaudio sources and sinks can be exposed over UPNP via rygel. + + -- Sjoerd Simons Sun, 25 Oct 2009 13:43:06 +0000 + +pulseaudio (0.9.19-1) unstable; urgency=low + + * New upstream release + * Remove patches that were merged upstream: + d/p/0001-tunnel-fix-parsing-of-sink-info-from-newer-servers.patch + d/p/0002-tunnel-fix-parsing-of-source-info-from-newer-servers.patch + d/p/0003-svolume-tweak-constraints-for-32-bits.patch + * Only compile the ARMv6 optimized code with -march=armv6 (Closes: #546322) + * Depend on udev (>= 143) for device detection (Closes: #548821, #549001) + * Update various shlibs files to use 0.9.19 + + -- Sjoerd Simons Sat, 03 Oct 2009 18:22:56 +0100 + +pulseaudio (1:0.9.19-0ubuntu4) karmic; urgency=low + + * Remove 0053-fix-sigsegv-module-bluetooth-device.patch, as it did + more harm than good (reopens LP #437293). + * debian/01PulseAudio: Fix bashisms, and make suspend/resume actually + work with sudo -H -u (LP: #432096, #450461). + + -- Daniel T Chen Tue, 20 Oct 2009 10:29:04 -0400 + +pulseaudio (1:0.9.19-0ubuntu3) karmic; urgency=low + + [ Tony Espy ] + * debian/control: Add a Conflicts for rtkit so we force removal, and + hence get more testing coverage between now and Karmic final (LP: #452458). + + [ Daniel T Chen ] + * debian/patches/0056-ignore-sound-class-modem.patch: + + Apply patch from Whoopie to fix initialization of devices with + modem subdevices (LP: #394500, #450222) + + -- Tony Espy Thu, 15 Oct 2009 15:33:02 -0400 + +pulseaudio (1:0.9.19-0ubuntu2) karmic; urgency=low + + * debian/control: Drop rtkit from recommends, as the kernel patches have + not landed in karmic, so rtkit is currently useless. + + -- Luke Yelavich Wed, 14 Oct 2009 12:02:50 +1100 + +pulseaudio (1:0.9.19-0ubuntu1) karmic; urgency=low + + * New upstream bugfix release + * debian/: + . {libpulse0,pulseaudio}.shlibs: + . shlibs{,_pulseaudio}.local: + . rules: Update for new release + * debian + + pulseaudio.dirs: + . patches/0006-a11y-special-case-disable.patch: + . pulse-session: Use a system-wide flag to assist in fixing + alsactl store race. + * debian/patches/: + - 0060-backport-c194d.patch: Drop, subsumed by new release + + 0053-fix-sigsegv-module-bluetooth-device.patch: Don't strcmp + uninitialized memory (LP: #437293) + + 0055-backport-alsa-bt-position-fixes-b3592a1.patch: Apply the + following changesets from origin/master HEAD for fixes: + 40c1ca76c48147c7648e1f1a72cc2c747f3d0c9b, + 7b682c969025845f75cbc74a9f830ad2dec8a415, + c96d2d1117a7e59b351358c8cdd79ef465ddbd49, + b3592a160f0d2a28605048a81c0261bf7c45acbb + + 0091-dont-load-cork-music-on-phone.patch: Disable for Karmic; + it's confusing users (LP: #437638) + * Previous uploads resolved Launchpad bug reports: + - LP: #434003 (crashed with SIGILL in pa_smoother_translate() ) + - LP: #437638 (cpulimit.c: Received request to terminate) + + -- Daniel T Chen Tue, 06 Oct 2009 18:40:38 -0400 + +pulseaudio (0.9.18-1) unstable; urgency=low + + * New upstream release + * d/p/0001-tunnel-fix-parsing-of-sink-info-from-newer-servers.patch + + Added. Fix parsing of the sink info when using module-tunnel + From the upstream 0.9.18-stable branch + * d/p/0002-tunnel-fix-parsing-of-source-info-from-newer-servers.patch + + Added. Fix parsing of the source info when using module-tunnel + From the upstream 0.9.18-stable branch + * d/p/0003-svolume-tweak-constraints-for-32-bits.patch + + Added. Fixes gcc and the inline assembly using the same register. + From the upstream 0.9.18-stable branch + * debian/control: Build-Depend on libudev-dev instead of libhal-dev. + Pulseaudio now uses udev for device detection (Closes: #546721) + * debian/control: Enable hal->udev compat module + * Update various shlibs files to use 0.9.18 + * debian/pulseaudio.install, debian/rules: Add udev and loopback modules + * debian/pulseaudio-utils.install: Add pamon and parecord + * debian/pulseaudio.install: Add dbus configuration file for system-wide + pulse instance (Closes: #529989) + * debian/control: Bump libsndfile1-dev build-depend to >= 1.0.20. + (Closes: #546734) + * debian/rules: Add -march=armv6 to the CFLAGS on arm and armel + (Closes: #546322) + + -- Sjoerd Simons Sun, 27 Sep 2009 23:46:37 +0200 + +pulseaudio (1:0.9.18-0ubuntu3) karmic; urgency=low + + * debian/patches/: + + 0052-revert-sse2-optimize.patch: Revert 3d5a57 causing audio + anomalies (LP: #428619) + + -- Daniel T Chen Tue, 22 Sep 2009 22:19:42 -0400 + +pulseaudio (1:0.9.18-0ubuntu2) karmic; urgency=low + + * Remove epoch again, fixes FTBFs. + + -- Luke Yelavich Mon, 21 Sep 2009 11:12:00 +1000 + +pulseaudio (1:0.9.18-0ubuntu1) karmic; urgency=low + + [ Daniel T Chen ] + * New upstream bugfix release + * debian/patches/: + - 0052-backport-56b6e18030.patch: Drop + - 0053-fix-output-element.patch: Drop, applied upstream + - 0090-use-volume-ignore-for-analog-output.patch: Stop applying + this patch. Too many people are confused as to why PCM isn't + being changed when they adjust PA's volume. + + 0060-backport-c194d.patch: Backport fixes from 0.9.18-stable + branch (to changeset c194db71b0ff853b4f46df26e135edf63b215451) + + 0090-disable-flat-volumes.patch: Many people seem uncomfortable + with PA's new default volume adjustment routine, so disable it + in favour of the existing behaviour known in previous Ubuntu + releases. The downside is that the user again has many knobs to + fiddle; the upside is that applications can no longer drop the + volume floor. This addresses LP: #403859, #433209. + + [ Luke Yelavich ] + * debian/pulse-alsa.conf: Expose the pulse device to the ALSA name hint API. + Thanks to David Henningsson for the patch. + * Add epoch to shlibs version definitions. + + -- Luke Yelavich Mon, 21 Sep 2009 10:28:25 +1000 + +pulseaudio (0.9.17-1) unstable; urgency=low + + * New upstream release + * debian/copyright: updated + * Update various shlibs files to use 0.9.17 + + -- Sjoerd Simons Sat, 12 Sep 2009 10:27:46 +0100 + +pulseaudio (1:0.9.17-0ubuntu2) karmic; urgency=low + + * debian/patches/: + + 0051-fix-sigfpe-mcalign.patch: Handle div by zero attempts + (LP: #412224) + + 0052-backport-56b6e18030.patch: Backport fixes from git HEAD + (56b6e18030b5a467946bd0a5803ec119efccdc8a) + + 0053-fix-output-element.patch: Fix misspelling of Surround + + 0054-mute-iec958-optical-raw-for-audigyX.patch: Mute + IEC958 Optical Raw by default (LP: #400629, #408370) + + -- Daniel T Chen Thu, 17 Sep 2009 19:57:15 -0400 + +pulseaudio (1:0.9.17-0ubuntu1) karmic; urgency=low + + [ Daniel T Chen ] + * New upstream release + + [ Luke Yelavich ] + * debian/rules: refer to the 0.9.17 directory + * bump shlibs + + -- Luke Yelavich Mon, 14 Sep 2009 10:01:24 +1000 + +pulseaudio (0.9.16-1) unstable; urgency=low + + * New upstream release + * debian/copyright: updated + * debian/control: Remove the liboil build-dep + * debian/libpulse0.shlibs: Bump to >= 0.9.16 + * debian/pulseaudio.postinst: No longer make pulseaudio suid and no longer + create the pulse-rt group. Setting realtime priorities is now handled by + rtkit. + + -- Sjoerd Simons Thu, 10 Sep 2009 21:53:15 +0100 + +pulseaudio (1:0.9.16-0ubuntu1) karmic; urgency=low + + [ Daniel T Chen ] + * debian/patches/0090-use-volume-ignore-for-analog-output.patch: + + Realign volume control behaviour with existing Ubuntu releases, + i.e., disable volume = merge and use volume = ignore for + analog output + + [ Luke Yelavich ] + * New upstream release + * debian/patches/0057-introspect-version-fixes.patch (LP: #426210), + debian/patches/0056-alsa-rework.patch, + debian/patches/0055-llvm-clang-analyzer-fixes.patch, + 0054-volume-libpulse-backported-fixes.patch, + 0053-add-input-sources.patch, + debian/patches/0052-disable-cpu-limit.patch: Dropped, all applied upstream + * debian/patches/0051-reduce-lib-linking.patch: Drop, since we are not going + to be doing bi-arch pulseaudio packages for karmic + + -- Luke Yelavich Fri, 11 Sep 2009 09:24:39 +1000 + +pulseaudio (1:0.9.16~test7-14-g7ca81-0ubuntu2) karmic; urgency=low + + * debian/control: Fix missing pulseaudio-module-rygel-media-server + Depends thanks to lintian + * debian/patches/0054-use-sse2-volume.patch: + - Remove, resolved differently upstream (see below) + * debian/patches/0054-volume-libpulse-backported-fixes.patch: + + Add fixes from git HEAD: + e6a666d8d5fffbc9847b51b35349b88d74970079 (PA_BYTES_SNPRINT_MAX) + 5cf0c1e544a5fce97d514c793256b2e301277136 (rearrange functions) + 508c462841fd087528649ed1ca3646363387bb5d: + b5ac3839e18524524fa3e0da7ec68dbce16e8203 (remap/vol only SSE2) + 723499439f575f744f07c85a42b47d95cdc98de6 (init SSE2) + 3bbc5e6a4d0211d8cedd2fe6698c2e2c07d1c4b9 (add PA_VOLUME_INVALID) + cc6c4fe91f916451bbea9073619c11a6b122b684 (check pa_volume_t args) + 9755bfa58af0c27b478d5d8cc56013527a6f660b (drop expensive checks) + d000dd6f4b976894558613f69bdad2974cce7d1e (NULL chan map consist.) + 41a0dc1e9987ae00b605fd88bf887becbdf097d5 (log invalid fade/bal) + 08a4d57ce2f20173ea8a90e597a3ebcd28398242 (ok NULL proplist inv.) + * debian/patches/0055-llvm-clang-analyzer-fixes.patch: + + Add fixes from git HEAD: + f5046759cdd72daf5ba3b31c9dfc7b8d5be6bc9b.. + 7cc100d9e1d7093da44c8c83cbf61bb8c6000d9a + + -- Daniel T Chen Tue, 08 Sep 2009 18:21:00 -0400 + +pulseaudio (1:0.9.16~test7-14-g7ca81-0ubuntu1) karmic; urgency=low + + * New git snapshot of origin/master (0.9.16~test7-14-g7ca81) + fixes LP: #419658, #422451, #424127 + * debian/pulseaudio.install: add module-loopback + * debian/control: remove liboil*-dev build-dependency thanks to + included ASM optimisations + * debian/copyright: update; we've added module-loopback + * debian/patches/0052-disable-cpu-limit.patch: Disable cpu limit as + per 812be327836c93492ad389333bcc037566141eb8 + * debian/patches/0053-add-input-sources.patch: Add internal mic and + docking station as per 8cd635bc614834c13d0f1c586d472b4a52b98664 + * debian/patches/0054-use-sse2-volume.patch: Only use if SSE2 is + available. This is a workaround for LP: #418448, thanks "knarf"! + + -- Daniel T Chen Sun, 06 Sep 2009 14:23:15 -0400 + +pulseaudio (1:0.9.16~test6-3-g57e1-0ubuntu2) karmic; urgency=low + + * add -march=armv6 to compiler flags on armel, recent upstream changes + make pulse fail building on anything below v6 (what a very bad idea !) + + -- Oliver Grawert Thu, 27 Aug 2009 16:25:15 +0200 + +pulseaudio (1:0.9.16~test6-3-g57e1-0ubuntu1) karmic; urgency=low + + [ Daniel T Chen ] + * New git snapshot of origin/master (0.9.16~test6-3-g57e1) + * debian/patches/: + + 0050-revert-pacmd-poll-argv.patch: Retain, still seeing + excessive cpu usage with resume + - 0051-leave-hp-enabled.patch: Drop, applied upstream + + 0051-reduce-lib-linking.patch: Refresh and rename previous + 0052-reduce.. so that minimal changes are made + + [ Luke Yelavich ] + * debian/control: Promote rtkit from suggests to recommends + + -- Luke Yelavich Tue, 25 Aug 2009 09:44:32 +1000 + +pulseaudio (0.9.16~test5-1) experimental; urgency=low + + * New Upstream Version + + -- Sjoerd Simons Sat, 22 Aug 2009 21:59:34 +0100 + +pulseaudio (1:0.9.16~test5-0ubuntu2) karmic; urgency=low + + [ Daniel T Chen ] + * debian/patches/0051-leave-hp-enabled.patch: Leave + headphones enabled in the default analog mixer profiles + + [ Luke Yelavich ] + * debian/patches/0052-reduce-lib-linking.patch: Reduce the number of + libraries that the libpulse libraries are linked against as much as + possible, to lessen the work needed to make bi-arch libpulse packages + in the future + * Remove pulseaudio.desktop once again, as the a11y special case is + not being honoured, and we have the Xsession.d script to start pulse + for us, to avoid any races with other apps wanting to play sounds on + session startup + + -- Luke Yelavich Fri, 21 Aug 2009 15:48:31 +1000 + +pulseaudio (1:0.9.16~test5-0ubuntu1) karmic; urgency=low + + * New upstream release + * debian/patches/0050-backport-git-post-test4.patch: drop + * debian/patches/0050-revert-pacmd-poll-argv.patch: revert pacmd + changesets due to excessive cpu usage (poll()) with resume: + - aae7054b1c442e62cc1154d15a4b7a569d60d8f4 + - 5fcb8a3c0838a4ecdb00a0af09b6e1a358b114d0 + * debian/01PulseAudio: Escape hash when passed to sudo -u + (LP: #414385). Thanks, Christoph Kurrat and Dana Goyette! + * debian/pulseaudio.init: Add NetworkManager to + Should-St{art,op} to fix sink/source publishing with Avahi + (LP: #413443). Thanks, Martin-Éric Racine! + + -- Daniel T Chen Wed, 19 Aug 2009 17:43:48 -0400 + +pulseaudio (0.9.16~test4-1) experimental; urgency=low + + * New Upstream Version + + -- Sjoerd Simons Sun, 09 Aug 2009 18:24:46 +0100 + +pulseaudio (1:0.9.16~test4-0ubuntu6) karmic; urgency=low + + * Correct changelog entry for 1:0.9.16~test4-0ubuntu5 + (5fcb8a3c0838a4ecdb00a0af09b6e1a358b114d0 was _not_ + applied) + * Resync proper 0050-backport-git-post-test4.patch + from the ~ubuntu-audio-dev PPA branch + * debian/control: Drop libgdbm-dev; use tdb-dev instead + since it's upstream's approach + + -- Daniel T Chen Thu, 13 Aug 2009 22:49:07 -0400 + +pulseaudio (1:0.9.16~test4-0ubuntu5) karmic; urgency=low + + [ Daniel T Chen ] + * 0050-backport-git-post-test4.patch: Add the following changesets + from git (can be dropped with -test5): + + 51b3899348bf29dd88b56691aeea9f57895dfd14 + + 7d4916379bbf05384ad199004949cc220822aa5f + + 23a294c97e62e0bee9b17b1f8ad20a39e1ba15da + + d27e26dca0b492b1906b42b2d0f7decd38ed8ae3 + + 462cdf44b7fe36768c836c90761f6b8153290517 + + e8340345f6a102cd03b6676576bcd3879ead7aad + + 8998cba6839a46f11daec411c83a1b35723c5117 + + facae1f27504983d7eff7c7c3ffa864f7e002272 + + 9f53aa5546e7bf9246546c6dda5637d50679483c + + ef176ecb62a8f04bd14ca37e7c2a40469f0bb8ba + + 27b8cd783c2aedb23af8f88fc88632d5c4f387fd + + 5921324fd3c16e2b3d38d07b200febd90835f169 + + 286ab2f19370c7a0041897435614b2c6aadc8e70 + + 17d57415f5abad5b7c30301227054b4c899bc705 + + [ Luke Yelavich ] + * debian/pulseaudio.install: Also add previously dropped 70pulseaudio file + + -- Luke Yelavich Fri, 14 Aug 2009 10:29:16 +1000 + +pulseaudio (1:0.9.16~test4-0ubuntu4) karmic; urgency=low + + * debian/pulseaudio.install: ...and also re-add droped apport hook, and + alsa configuration files + + -- Luke Yelavich Fri, 07 Aug 2009 10:05:51 +0100 + +pulseaudio (1:0.9.16~test4-0ubuntu3) karmic; urgency=low + + * debian/pulseaudio.install: Also re-add pulse-session wrapper script + + -- Luke Yelavich Fri, 07 Aug 2009 09:41:15 +0100 + +pulseaudio (1:0.9.16~test4-0ubuntu2) karmic; urgency=low + + * debian/pulseaudio.install: + - Re-add the pm-utils script that was inadvertantly left out with the + previous Debian merge + - Add udev rules from upstream, needed for particular sound hardware + + -- Luke Yelavich Thu, 06 Aug 2009 18:49:12 +0100 + +pulseaudio (1:0.9.16~test4-0ubuntu1) karmic; urgency=low + + * New upstream release + * debian/patches/0008-clean-out-old-files.patch: Dropped, applied upstream + * debian/control: Fix pulseaudio-module-rygel-media-server debug package name + + -- Luke Yelavich Wed, 05 Aug 2009 12:02:18 +0100 + +pulseaudio (1:0.9.16~test3-0ubuntu1) karmic; urgency=low + + * New upstream release + * debian/pulseaudio.postinst: + - Do not create the pulse-rt group any more + - Do not make the pulseaudio binary suid root + * debian/pulseaudio.postrm: Do not try to remove the pulse-rt group + * debian/pulseaudio.preinst: Remove the pulse-rt group on upgrade + * debian/control: + - Suggest rtkit + - Renamed pulseaudio-module-hal and pulseaudio-module-hal-dbg to + pulseaudio-module-udev and pulseaudio-module-udev-dbg respectively + - pulseaudio-module-udev replaces pulseaudio-module-hal + - Bumped libudev-dev requirement to >= 143 + - Added build dependencies libICE-dev, libxi-dev, x11proto-core-dev + - Add new package for the rygel-media-server module + - Tighten libasound2-dev and libsndfile1-dev dependencies + * debian/pulseaudio.init: Change all hal references to udev + * debian/patches/0008-clean-out-old-files.patch: Remove non-existant files + from POTFILES.in, patch sent upstream + * Merge from Debian unstable, remaining changes: + - epoch (my stupid fault :S) + - Don't build against, and create jack package. Jack is not in main + - use speex-float-1 resampler to work better with lack of PREEMPT in + karmic's -generic kernel config, also change buffer size + - Add alsa configuration files to route alsa applications via pulseaudio + - Move libasound2-plugins from Recommends to Depends + - Add pm-utils sleep hook to suspend (and resume) users' pulseaudio + daemons + - patch to fix source/sink and suspend-on-idle race + - Make initscript more informative in the default case of per-user + sessions + - add status check for system wide pulseaudio instance + - create /var/run/pulse, and make restart more robust + - LSB {Required-*,Should-*} should specify hal instead of dbus, + since hal is required (and already requires dbus) + - indicate that the system pulseaudio instance is being started from the init + script + - Install more upstream man pages + - Link to pacat for parec man page + - check whether pulseaudio is running before preloading the padsp library + - Add DEB_OPT_FLAG = -O3 as per recommendation from + pulseaudio-discuss/2007-December/001017.html + - cache /usr/share/sounds/ubuntu/stereo/ wav files on pulseaudio load + - Generate a PO template on build + - add special case to disable pulseaudio loading if accessibility/speech + is being used + - the esd wrapper script should not load pulseaudio if pulseaudio is being + used as a system service + - add a pulseaudio apport hook + - fix some typos in README.Debian + - drop padevchooser(Recommends) and pavucontrol (Suggests) + - drop libasyncns-dev build dependency, its in universe + - add libudev-dev as a build-dependency + + -- Luke Yelavich Tue, 04 Aug 2009 11:46:25 +0100 + +pulseaudio (0.9.16~test2~20090726git59659e1db-1) experimental; urgency=low + + * New Upstream Version + * Ack NMU (Was fixed upstream in this version) (Closes: #537351) + * Remove all patches, everything was merged upstream :) + * debian/copyright: updated + * debian/pulseaudio.install: Don't install the PolicyKit config file + * debian/control: Removed build-dep on libpolkit-dbus-dev + * Update various shlibs files to use 0.9.16 + * debian/pulseaudio.install: Install pulseaudio shared config files + * debian/pulseaudio.instal: Add module-intended-roles + * debian/control: Make pulseaudio-module-raop-dbg depend on + pulseaudio-module-raop + + -- Sjoerd Simons Tue, 28 Jul 2009 14:00:27 +0200 + +pulseaudio (0.9.15-4.1) unstable; urgency=high + + * Non-maintainer upload by the Security Team. + * Fix race condition when reading /proc/self/exe and reloading the binary + that leads to arbitrary code execution as pulseaudio is suid root + + Use LDFLAGS to preload DSOs + + regenerate autofoo + (CVE-2009-1894; Closes: #537351). + + -- Nico Golde Fri, 24 Jul 2009 18:02:24 +0200 + +pulseaudio (1:0.9.15-4ubuntu3) karmic; urgency=low + + * debian/01PulseAudio: Mute sinks and sources prior to + suspend; unmute sinks and sources after resume (LP: #404986) + * debian/patches/series: Reenable glitch-free. + + -- Daniel T Chen Mon, 27 Jul 2009 22:06:34 -0400 + +pulseaudio (1:0.9.15-4ubuntu2) karmic; urgency=low + + * SECURITY UPDATE: root escalation from BIND_NOW re-execution. + - 0040-do-not-exec-for-bindnow.patch: use -Wl,-z,now instead of + performing a racey re-exec. + - CVE-2009-1894 + + -- Kees Cook Thu, 16 Jul 2009 10:03:46 -0700 + +pulseaudio (1:0.9.15-4ubuntu1) karmic; urgency=low + + [ Daniel T Chen ] + * debian/patches/0001_change_resample_and_buffering.patch: Bump + default resampler to speex-float-1 due to remaining audio + anomalies when playing DVDs (LP: #376374) + + [ Luke Yelavich ] + * Merge from Debian unstable, remaining changes: + - epoch (my stupid fault :S) + - Don't build against, and create jack package. Jack is not in main + - use speex-float-1 resampler to work better with lack of PREEMPT in + karmic's -generic kernel config, also change buffer size + - Add alsa configuration files to route alsa applications via pulseaudio + - Move libasound2-plugins from Recommends to Depends + - Add pm-utils sleep hook to suspend (and resume) users' pulseaudio + daemons + - patch to fix source/sink and suspend-on-idle race + - Make initscript more informative in the default case of per-user + sessions + - add status check for system wide pulseaudio instance + - create /var/run/pulse, and make restart more robust + - LSB {Required-*,Should-*} should specify hal instead of dbus, + since hal is required (and already requires dbus) + - indicate that the system pulseaudio instance is being started from the init + script + - Install more upstream man pages + - Link to pacat for parec man page + - check whether pulseaudio is running before preloading the padsp library + - Add DEB_OPT_FLAG = -O3 as per recommendation from + pulseaudio-discuss/2007-December/001017.html + - cache /usr/share/sounds/ubuntu/stereo/ wav files on pulseaudio load + - disable glitch free (use tsched=0) + - Generate a PO template on build + - add special case to disable pulseaud * debian/patches/0090-fix-sw-mute-desync.patch: Dropped, as this is included + in the recently added patches in Debian.io loading if accessibility/speech + is being used + - the esd wrapper script should not load pulseaudio if pulseaudio is being + used as a system service + - add a pulseaudio apport hook + - fix some typos in README.Debian + - drop padevchooser(Recommends) and pavucontrol (Suggests) + - drop libasyncns-dev build dependency, its in universe + - add libudev-dev as a build-dependency + * debian/patches/0090-fix-sw-mute-desync.patch: Dropped, as this is included + in the recently added patches in Debian. + + -- Luke Yelavich Mon, 22 Jun 2009 11:17:06 +1000 + +pulseaudio (0.9.15-4) unstable; urgency=low + + * Synchronize our patches with Mandriva and Fedora (thanks to Colin Guthrie + and Lennart Poettering) + - 0002-util-if-NULL-is-passed-to-pa_path_get_filename-just-.patch + - 0003-alsa-don-t-hit-an-assert-when-invalid-module-argumen.patch + - 0004-alsa-fix-wording-we-are-speaking-of-card-profiles-no.patch + - 0005-alsa-initialize-buffer-size-before-number-of-periods.patch + - 0006-conf-remove-obsolete-module-idle-time-directive-from.patch + - 0007-core-make-sure-soft-mute-status-stays-in-sync-with-h.patch + + Ensure hw and software mute states stay in sync + (Closes: #525572, #522177) + - 0008-endian-fix-LE-BE-order-for-24-bit-accessor-functions.patch + - 0009-log-print-file-name-only-when-we-have-it.patch + - 0010-man-document-24bit-sample-types-in-man-page.patch + - 0011-man-document-log-related-daemon.conf-options.patch + - 0012-man-document-that-tsched-doesn-t-use-fragment-settin.patch + - 0013-mutex-when-we-fail-to-fill-in-mutex-into-static-mute.patch + - 0014-oss-don-t-deadlock-when-we-try-to-resume-an-OSS-devi.patch + - 0015-simple-protocol-don-t-hit-an-assert-when-we-call-con.patch + - 0016-idxset-add-enumeration-macro-PA_IDXSET_FOREACH.patch + - 0017-rescue-streams-when-one-stream-move-fails-try-to-con.patch + - 0018-sample-correctly-pass-s24-32-formats.patch + - 0019-sample-util-fix-iteration-loop-when-adjusting-volume.patch + - 0020-sample-util-properly-allocate-silence-block-for-s24-.patch + - 0021-sconv-fix-a-few-minor-conversion-issues.patch + - 0022-alsa-be-a-bit-more-verbose-when-a-hwparam-call-fails.patch + - 0023-rescue-make-we-don-t-end-up-in-an-endless-loop-when-.patch + - 0024-core-introduce-pa_-sink-source-_set_fixed_latency.patch + - 0025-core-cache-requested-latency-only-when-we-are-runnin.patch + - 0026-sample-fix-build-on-BE-archs.patch + - 0027-alsa-properly-convert-return-values-of-snd_strerror-.patch + - 0028-alsa-remove-debug-code.patch + + -- Sjoerd Simons Sun, 21 Jun 2009 15:40:33 +0100 + +pulseaudio (1:0.9.15-3ubuntu1) karmic; urgency=low + + [ Daniel T Chen ] + * debian/patches/0001_change_resample_and_buffering.patch: Bump + default resampler to ffmpeg. We cannot peg the cpu, and we cannot + have audio anomalies, so this change _should_ be regression-free + but needs extensive testing (LP: #376374). + * debian/patches/0090_fix_sw_mute_desync.patch: Backport from + git HEAD to resolve sw vol becoming muted on logout + (LP: #315971, #352732) + + [ Luke Yelavich ] + * Merge from Debian unstable, remaining changes: + - epoch (my stupid fault :S) + - Don't build against, and create jack package. Jack is not in main + - use ffmpeg resampler to work better with lack of PREEMPT in jaunty's + -generic kernel config, also change buffer size + - Add alsa configuration files to route alsa applications via pulseaudio + - Move libasound2-plugins from Recommends to Depends + - Add pm-utils sleep hook to suspend (and resume) users' pulseaudio + daemons + - patch to fix source/sink and suspend-on-idle race + - Make initscript more informative in the default case of per-user + sessions + - add status check for system wide pulseaudio instance + - create /var/run/pulse, and make restart more robust + - LSB {Required-*,Should-*} should specify hal instead of dbus, + since hal is required (and already requires dbus) + - indicate that the system pulseaudio instance is being started from the init + script + - Install more upstream man pages + - Link to pacat for parec man page + - check whether pulseaudio is running before preloading the padsp library + - Add DEB_OPT_FLAG = -O3 as per recommendation from + pulseaudio-discuss/2007-December/001017.html + - cache /usr/share/sounds/ubuntu/stereo/ wav files on pulseaudio load + - disable glitch free (use tsched=0) + - Generate a PO template on build + - add special case to disable pulseaudio loading if accessibility/speech + is being used + - the esd wrapper script should not load pulseaudio if pulseaudio is being + used as a system service + - add a pulseaudio apport hook + - fix some typos in README.Debian + - drop padevchooser(Recommends) and pavucontrol (Suggests) + - drop libasyncns-dev build dependency, its in universe + - add libudev-dev as a build-dependency + + -- Luke Yelavich Tue, 09 Jun 2009 10:47:05 +1000 + +pulseaudio (0.9.15-3) unstable; urgency=low + + * Re-enable bluetooth support (Closes: #530514) + * No longer recommend padevchooser and let paprefs be a suggest + (Closes: #530810) + * 0001-alsa-allow-configuration-of-fallback-device-strings-.patch + - Added. Support alsa devices which only have the raw hw device, but no + front device even though they can do 2ch stereo (from upstream git) + * Add support for the status action in the init script, patch by Peter + Eisentraut (Closes: #527333) + * Change the libjack0.100.0-dev build-depend to libjack-dev as per request of + the debian multimedia maintainers (Closes: #527424) + * Prevent the default.pa manpage from being installed as part of the pa + locale (Closes: #508874) + + -- Sjoerd Simons Sun, 07 Jun 2009 22:30:33 +0100 + +pulseaudio (1:0.9.15-2ubuntu1) karmic; urgency=low + + * Merge from Debian unstable, remaining changes: + - epoch (my stupid fault :S) + - Don't build against, and create jack package. Jack is not in main + - use linear resampler to work better with lack of PREEMPT in jaunty's + -generic kernel config, also change buffer size + - Add alsa configuration files to route alsa applications via pulseaudio + - Move libasound2-plugins from Recommends to Depends + - Add pm-utils sleep hook to suspend (and resume) users' pulseaudio + daemons + - patch to fix source/sink and suspend-on-idle race + - Make initscript more informative in the default case of per-user + sessions + - create /var/run/pulse, and make restart more robust + - add status check for system wide pulseaudio instance + - LSB {Required-*,Should-*} should specify hal instead of dbus, + since hal is required (and already requires dbus) + - indicate that the system pulseaudio instance is being started from the init + script + - Install more upstream man pages + - Link to pacat for parec man page + - check whether pulseaudio is running before preloading the padsp library + - Add DEB_OPT_FLAG = -O3 as per recommendation from + pulseaudio-discuss/2007-December/001017.html + - cache /usr/share/sounds/ubuntu/stereo/ wav files on pulseaudio load + - disable glitch free (use tsched=0) + - Generate a PO template on build + - add special case to disable pulseaudio loading if accessibility/speech + is being used + - the sd wrapper script should not load pulseaudio if pulseaudio is being + used as a system service + - add a pulseaudio apport hook + - fix some typos in README.Debian + - demote paprefs to suggests + - drop padevchooser(Recommends) and pavucontrol (Suggests) + - drop libasyncns-dev build dependency, its in universe + - add libudev-dev as a build-dependency + - Retain libbluetooth-dev build dependency + * debian/01Pulseaudio: Harvist users by UID, and not username, to ensure + that the script doesn't choak on characters not already considered as + used in a username (LP: #374694) + + -- Luke Yelavich Tue, 26 May 2009 23:33:42 +0200 + +pulseaudio (0.9.15-2) unstable; urgency=low + + * debian/control: Add strict dependencies from libpulse-dev to the various + libraries (Closes: #525759) + * Add local shlib files to ensure the correct dependencies get generated + (Closes: #528405) + + -- Sjoerd Simons Thu, 21 May 2009 00:54:38 +0100 + +pulseaudio (1:0.9.15-1ubuntu3) karmic; urgency=low + + * debian/control: libltdl7-dev -> libltdl-dev + + -- Luke Yelavich Mon, 11 May 2009 12:33:08 +1000 + +pulseaudio (1:0.9.15-1ubuntu2) karmic; urgency=low + + * debian/01PulseAudio: harvest users more robustly. Thanks, + Chow Loong Jin ! (LP: #202089) + * debian/control: pulseaudio depends on pulseaudio-module-hal + to fix LP: #326532 + + -- Daniel T Chen Thu, 09 Apr 2009 17:03:00 -0400 + +pulseaudio (1:0.9.15-1ubuntu1) karmic; urgency=low + + * Merge from unreleased Debian pulseaudio git, remaining changes: + - epoch (my stupid fault :S) + - Don't build against, and create jack package. Jack is not in main + - use linear resampler to work better with lack of PREEMPT in jaunty's + -generic kernel config, also change buffer size + - Add alsa configuration files to route alsa applications via pulseaudio + - Move libasound2-plugins from Recommends to Depends + - Add pm-utils sleep hook to suspend (and resume) users' pulseaudio + daemons + - patch to fix source/sink and suspend-on-idle race + - Make initscript more informative in the default case of per-user + sessions + - create /var/run/pulse, and make restart more robust + - add status check for system wide pulseaudio instance + - LSB {Required-*,Should-*} should specify hal instead of dbus, + since hal is required (and already requires dbus) + - indicate that the system pulseaudio instance is being started from the init + script + - Install more upstream man pages + - Link to pacat for parec man page + - check whether pulseaudio is running before preloading the padsp library + - Add DEB_OPT_FLAG = -O3 as per recommendation from + pulseaudio-discuss/2007-December/001017.html + - cache /usr/share/sounds/ubuntu/stereo/ wav files on pulseaudio load + - disable glitch free (use tsched=0) + - Generate a PO template on build + - add special case to disable pulseaudio loading if accessibility/speech + is being used + - the sd wrapper script should not load pulseaudio if pulseaudio is being + used as a system service + - add a pulseaudio apport hook + - fix some typos in README.Debian + - demote paprefs to suggests + - drop padevchooser(Recommends) and pavucontrol (Suggests) + - drop libasyncns-dev build dependency, its in universe + * add libudev-dev as a build-dependency + + -- Luke Yelavich Tue, 05 May 2009 14:18:20 +1000 + +pulseaudio (0.9.15-1) unstable; urgency=low + + * debian/control: Build-Depend on libcap-dev instead of libcap2-dev + * New Upstream Version + * Fixes building on HPPA (Closes: #520378) + * Fixes building with recent libtool (Closes: #522716) + * Update copyright file + * Updated pulseaudio-module-hal.install, dbus-util became part of pulsecore + * Move debug package to the debug Section + * Done make shlibs files for modules in /usr/lib/pulse-0.9.15 + * Update standards-version to 3.8.1, no further changes + * Set priority of pulseaudio-module-raop-dbg to extra + * Change build-depend on libltdl7-dev to recent versions libltdl-dev + * Add Breaks to libpulse0 for old version of pavucontrol + * Temporarily disable bluetooth support as the needed bluez version is stuck + in the NEW queue + + -- Sjoerd Simons Sun, 19 Apr 2009 14:43:41 +0100 + +pulseaudio (0.9.15~test5-1) experimental; urgency=low + + * New Upstream Version + * debian/copyright: Updated + * debian/control: Build-Depends on libltdl7-dev + * debian/control: Build-Depends on libasound2-dev (>= 1.0.19) + * debian/rules: Use git format-patch instead of git-format-patch + * debian/patches/0001-load-module-gconf-earlier.patch: + - Removed. Merged upstream + * debian/pulseaudio.install: Update for new modules + * debian/pulseaudio-module-x11.install: Update for new modules + * Move libpulscore into the pulseaudio package + * debian/pulseaudio-module-bluetooth.install: Add the bluetooth-util module + library + * debian/pulseaudio.install: Add new modules + * debian/control: Add bulid-depends on libgtk2.0-dev and libxtst-dev + * debian/pulseaudio.shlibs, debian/libpulse0.shlibs: Update shlib files + * debian/pulseaudio.install: Add liboss-util.so oss module helper library + * debian/control, debian/pulseaudio-module-raop.install: Add RAOP module + + -- Sjoerd Simons Sun, 22 Mar 2009 23:06:50 +0000 + +pulseaudio (0.9.14-2) unstable; urgency=low + + [ Sjoerd Simons ] + * Build against libcap2-dev (Closes: #489060) + * Bump shlibs of libpulse0 (Closes: #514645) + * Bump soname of libpulsecore to 9 + * Wait up to 5 seconds for pulseaudio to stop. Fix suggested by Aron Griffis + (Closes: #488754, #498457) + * Don't put stop links in rc0 and rc6. Pulse doens't really need it. Patch + supplied by James Westby (Closes: #494959) + * Make the start option of the init script report the right status. Fix + suggested by Aron Griffis (Closes: #488752) + * Use per user esound sockets instead of a single one for all users + + [ Baptiste Mille-Mathias ] + * debian/control: + - create a separate package for bluetooth module (Closes: #513832) + * debian/pulseaudio-module-bluetooth.install + - put files for the separate bluetooth module package + * debian/pulseaudio.install + - remove files of the separate bluetooth module package + + [ Sjoerd Simons ] + * debian/control: Don't build the bluetooth module on non-linux systems + (Closes: #502837) + * debian/control: Make the bluetooth module conflict with older pulseaudio + versions + * Update standards version, no changes needed + * debian/copyright: Big update + + -- Sjoerd Simons Sun, 01 Mar 2009 15:53:27 +0000 + +pulseaudio (0.9.14-1) experimental; urgency=low + + * New Upstream Version + * 0002-load-module-gconf-earlier.patch renamed to + 0001-load-module-gconf-earlier.patch and updated + * 0001-Fix-library-search-path-to-include-lib-and-usr-lib.patch + - Removed, no longer applicable + * 0003-make-sure-to-use-64bit-rounding-even-on-32bit-machin.patch + - Removed, fixed upstream + * 0004-properly-remove-dbus-matches-an-filters-when-unloadi.patch + - Removed, fixed upstream + * debian/patches/series + - Updated + + -- Sjoerd Simons Sun, 01 Feb 2009 12:47:55 +0000 + +pulseaudio (1:0.9.14-0ubuntu20) jaunty; urgency=low + + * debian/01PulseAudio: use pactl instead of pacmd (LP: #202089) + + -- Daniel T Chen Wed, 08 Apr 2009 18:54:30 -0400 + +pulseaudio (1:0.9.14-0ubuntu19) jaunty; urgency=low + + [ Daniel T Chen ] + * debian/pulseaudio.init: + - Fix inane stop() syntax (LP: #357201) + * Update backported (from git HEAD) fixes: + - 0091_workaround_alsa_horkage.patch + * Add new fixes: + - 0049_fix_sampling_rate_not_beyond_pa-rate-max.patch + + -- Luke Yelavich Thu, 09 Apr 2009 07:29:24 +1000 + +pulseaudio (1:0.9.14-0ubuntu18) jaunty; urgency=low + + * debian/apport-hook.py: Add apport hook + * debian/rules, debian/pulseaudio.install: Install apport hook + * LP: #357913 + + -- Matt Zimmerman Wed, 08 Apr 2009 20:14:17 +0100 + +pulseaudio (1:0.9.14-0ubuntu17) jaunty; urgency=low + + [ Daniel T Chen ] + * debian/pulseaudio.init: + - Actually create /var/run/pulse, and make handling of /restart + more robust (LP #317921) + - Add /status check for system-wide daemon instance + (LP: #298299) + * Backport from upstream git HEAD: + - 0046_ignore_hal_no_such_cap.patch, + - 0047_pick_up_all_cards.patch (LP: #353807), + - 0048_fix_stuck_prebuf.patch (LP: #355825) + + [ Luke Yelavich ] + * debian/control: Drop recommends from the pulseaudio-module-x11 package. if + they were dropped previously, they were re-added somehow, so lets get rid + of them once and for all. + + -- Luke Yelavich Tue, 07 Apr 2009 16:51:59 +1000 + +pulseaudio (1:0.9.14-0ubuntu16) jaunty; urgency=low + + * Introduce epoch to fix my stupidity in uploading a test release of + pulseaudio. + + -- Luke Yelavich Wed, 01 Apr 2009 14:04:33 +1100 + +pulseaudio (0.9.14-0ubuntu15) jaunty; urgency=low + + [ Daniel T Chen ] + * README.Debian: + pulse-session: + pulseaudio.default: Clarify function of system-wide check, and + make /usr/bin/pulse-session do the right thing if system-wide + is enabled (LP: #286966) + + [ Luke Yelavich ] + * Make the a11y no start special case per user, not system wide. + * Also make the esd wrapper script honour system wide pulseaudio. + + -- Luke Yelavich Mon, 30 Mar 2009 11:33:33 +1100 + +pulseaudio (0.9.14-0ubuntu14) jaunty; urgency=low + + * No-change rebuild to fix lpia shared library dependencies. + + -- Colin Watson Thu, 19 Mar 2009 13:57:35 +0000 + +pulseaudio (0.9.14-0ubuntu13) jaunty; urgency=low + + * debian/rules: Generate a PO template on build. Thanks to Timo Jyrinki for + the patch! (LP: #342159) + + -- Martin Pitt Mon, 16 Mar 2009 10:14:19 +0100 + +pulseaudio (0.9.14-0ubuntu12) jaunty; urgency=low + + * 0091_workaround_alsa_horkage.patch: + - Lower severity of logging level to prevent DoS on syslog + LP: #320875, #343254 + LP #330814 + + -- Daniel T Chen Sat, 14 Mar 2009 22:39:03 -0400 + +pulseaudio (0.9.14-0ubuntu11) jaunty; urgency=low + + [ Daniel T Chen ] + * Reenable 0030_set_tsched0.patch, which re-disables glitch-free; + too many users are reporting regressions and audio aberrations. + * Adjust 0003_change_resample_and_buffering.patch to use linear + resampler to work better with lack of PREEMPT in jaunty's + -generic kernel config (LP: #207135, #322250, #332761, #335955, + LP: #336965). + * Last upload, specifically 0091_workaround_alsa_horkage, fixes: + LP: #235990, #237443, #279847, #317997, #323185, #330814, + LP: #334874. + * sudo -H change in ubuntu6 fixed LP: #312505. + * Closing old bugs fixed in 0.9.11+: LP: #187963, #193520, #211052. + * Refresh 0006_regen-autotools.patch. + * Add 0043_load_sample_dir_lazy.patch to cache + /usr/share/sounds/ubuntu/stereo/* in default.pa. + * debian/: + - control: Build against libcap2-dev (LP: #339448); + - copyright: Update copyright from Debian's 0.9.14-2; + - rules: Add DEB_OPT_FLAG = -O3 as per recommendation from + pulseaudio-discuss/2007-December/001017.html. + * Refresh fixes from git HEAD: + - 0038_handle_errno_properly.patch, + - 0091_workaround_alsa_horkage.patch, + - 0092_fix_null_pointer_access.patch. + + [ Luke Yelavich ] + * Add a special case to prevent Pulseaudio from being started when the + blindness accessibility profile has been enabled from the Ubuntu live CD, + and for an accessibility install. Unfortunately Pulseaudio and speech do + not currently work very well with each other, and its too late in + the cycle to solve this problem any other way. + + -- Luke Yelavich Tue, 10 Mar 2009 09:00:40 +1100 + +pulseaudio (0.9.14-0ubuntu10) jaunty; urgency=low + + [ Daniel T Chen ] + * 0030_set_tsched0.patch: Disable this patch, which has the effect of + reenabling glitch-free. Depends on 0091_workaround_alsa_horkage. + * 0091_workaround_alsa_horkage.patch: Rework ALSA delay handling. + + [ Luke Yelavich ] + * debian/control: re-add the vcs bzr URL for Ubuntu's pulseaudio packaging + as it got lost somewhere along the way + + -- Luke Yelavich Mon, 02 Mar 2009 10:40:11 +1100 + +pulseaudio (0.9.14-0ubuntu9) jaunty; urgency=low + + * PulseAudio does not need to be started before gdm, especially since we use + user sessions by default. + + -- Scott James Remnant Fri, 27 Feb 2009 01:27:20 +0000 + +pulseaudio (0.9.14-0ubuntu8) jaunty; urgency=low + + [ Daniel T Chen ] + * Backport fixes from git HEAD: + - 0041_clarify_cmdline_opts.patch, + - 0042_fix_selem_init.patch + + [ Luke Yelavich ] + * 0001_more_translatable_strings.patch: Make the .desktop file and PolicyKit + files translatable, thanks to Gabor Kelemen Tue, 24 Feb 2009 13:46:25 +1100 + +pulseaudio (0.9.14-0ubuntu7) jaunty; urgency=low + + [ Luke Yelavich ] + * 0001-Fix-library-search-path-to-include-lib-and-usr-lib.patch: Dropped, + no longer applicable, as evident in Debian's pulseaudio git branch. + + [ Daniel T Chen ] + * 0004_enable_autospawn.patch: Renamed from .."disable".. for clarity, + and actually apply it. + * 0012_clarify_driver_error_redirect_to_alsa_devs.patch: Clarify + logging message for 'linux' source package and ALSA developers + instead of PulseAudio developers in alsa-util.c, too. + - This patch can be tweaked, since upstream has now applied it to + git HEAD + * Backport fixes from git HEAD: + - 0035_fix_module-detect_access.patch, + - 0036_increase_memblock_imports.patch, + - 0037_fill_silence_fail_import_memblock.patch, + - 0038_handle_errno_properly.patch, + - 0039_add_validity_checks.patch, + - 0040_legacy_fixes.patch + + -- Daniel T Chen Thu, 19 Feb 2009 19:34:03 -0500 + +pulseaudio (0.9.14-0ubuntu6) jaunty; urgency=low + + * 0004_disable_autospawn.patch: Disable this patch. Doing so + allows the daemon to spawn if not already running, which + works around LP: #191027, #204272 + * 0012_clarify_driver_error_redirect_to_alsa_devs.patch: + - Only log POLL* being set if tsched is used so that syslog + isn't filled with innocuous messages when we set tsched=0 + (see 0030 below) (LP: #323712), + - Hint 'linux' source package instead of 'alsa-driver' for + Launchpad bug reports, + - The debug-specific portion is only applicable to 0.9.14; + 0.9.15 enables a rate limiting module by default to work + around this (and other) issues + * 0029_fix_suspend_on_idle_null_race.patch: Handle sink case, + too + * 0030_set_tsched0.patch: Work around a shedload of (driver) + bugs by falling back to interrupt-based buffer semantics + (LP: #190754, #292880, #295519, #298494, #301755, #302964, + LP: #319118, #323976, #324103, #326205, #326864) + * Backport fixes from git HEAD: + - 0031_fix_6chan_map.patch, + - 0032_reinit_proplist.patch, + - 0033_fix_pa-gcc-packedmalloc.patch, + - 0034_bt_fixes.patch + * Make invoking the stop target in the initscript not fail an + upgrade (LP: #317921) + * Previous upload (0.9.14-0ubuntu3) fixed LP: #321357 + * 01PulseAudio: use sudo -H to ensure that $HOME is, in fact, + the user's when invoking pacmd for suspend/resume + + -- Daniel T Chen Sun, 15 Feb 2009 02:35:26 -0500 + +pulseaudio (0.9.14-0ubuntu5) jaunty; urgency=low + + * Add fixes from git HEAD: + - 0028_fix_uninit_rtp_resamp.patch, + - 0029_fix_suspend_on_idle_null_race.patch + + -- Daniel T Chen Thu, 12 Feb 2009 18:28:42 -0500 + +pulseaudio (0.9.14-0ubuntu4) jaunty; urgency=low + + * Add fixes from git HEAD: + - 0023_work_around_dlsym_retval_mistyping.patch, + - 0024_fix_sink_source_calls_in_suspended.patch, + - 0025_shortcut_pa-sink-process-rewind.patch, + - 0026_reset_rewind-requested_when_suspend.patch, + - 0027_fix_piped_pacmd.patch + + -- Daniel T Chen Wed, 04 Feb 2009 19:36:09 -0500 + +pulseaudio (0.9.14-0ubuntu3) jaunty; urgency=low + + [ Daniel T Chen ] + * Add fixes from git HEAD: + - 0014_fix_avail-min_calc.patch, + - 0015_no_pa-asyncq-push_fail.patch, + - 0016_dont_rely_pa-sink-running-idle_for_optim.patch, + - 0017_fix_hsp_rate_chan.patch, + - 0018_dont_restore_mute_vol_when_already_set.patch, + - 0019_fix_mem_leak_in_pa-alsa-open-by-device-string.patch, + - 0020_ask_for_same_frag_set_when_resuming_oss_dev.patch, + - 0021_add_missing_const.patch, + - 0022_dont_hit_assert_in_esound-sink_when_latency_queried.patch + + [ Luke Yelavich ] + * Re-instate /etc/X11/Xsession.d/70pulseaudio, to again load pulseaudio + earlier in the X session, to aleviate a pulse/login-sound race condition + (LP: #322374) + + -- Luke Yelavich Mon, 02 Feb 2009 15:27:55 +0100 + +pulseaudio (0.9.14-0ubuntu2) jaunty; urgency=low + + * Add fixes from trunk: + - 0012_clarify_driver_error_redirect_to_alsa_devs.patch + * Add 0013_add_padsp_wrapper_check.patch (LP: #269939) + * debian/pulseaudio.manpages: + debian/pulseaudio-esound-compat.manpages: + debian/pulseaudio-utils.links: + - Install upstream man pages (LP: #219669, #318660), + - Link to pacat for parec man page (LP: #294628) + + -- Daniel T Chen Thu, 22 Jan 2009 02:57:54 -0500 + +pulseaudio (0.9.14-0ubuntu1) jaunty; urgency=low + + * New upstream release. (LP: #317502, #317613) + * Dropped patches, all in upstream release. + - 0003-make-sure-to-use-64bit-rounding-even-on-32bit-machin.patch + - 0004-properly-remove-dbus-matches-an-filters-when-unloadi.patch + - 0005-Fix-two-typos-that-broke-tunnels.patch + - 0008_regen_autotools.patch + - 0009_shm-arch-indep.patch + - 0010_check_before_using_environment.patch + - 0011_load_restore_before_other_modules.patch + - 0013_dont_hit_assert_issuing_two_rewinds_in_single_iter.patch + - 0014_retry_without_snd-pcm-no-auto-format.patch + - 0015_use_fionread.patch + - 0016_add_pa-source-message-get-latency.patch + - 0017_allow_dev_dsp_w-ok.patch + - 0019_fix_macro_pa-unlikely.patch + - 0020_catch_driver_errors.patch + - 0022_fix_return_val_dump-resample-methods.patch + - 0023_use_gdbm-nolock.patch + - 0024_dont_mix_front-center_into_rear.patch + - 0025_drop_cap-nice_properly.patch + - 0027_handle_multicast_sdp_with_same_ip_ttl_as_rtp.patch + - 0029_add_minor_fixes.patch + - 0030_dont_drop_client_data.patch + - 0031_use_fragsize_for_record_stream_latency.patch + * Bumped shlibs for libpulse0. + * Package libpulsecore8 -> libpulsecore9. + * Add libdbus-glib-1-dev to build-depends. + * Regression fix: + - pulse.conf: Always honour ~/.asoundrc and /etc/asound.conf with highest + priority, thanks to Daniel T Chen. (LP: #295832) + + -- Luke Yelavich Mon, 19 Jan 2009 14:45:36 +1100 + +pulseaudio (0.9.13-2ubuntu7) UNRELEASED; urgency=low + + * Add fixes from 0.9.14: + - 0030_dont_drop_client_data.patch, + - 0031_use_fragsize_for_record_stream_latency.patch, + - 0032_fix_suspend_sinks_sources.patch (LP: #317613) + + -- Daniel T Chen Thu, 15 Jan 2009 17:26:14 -0500 + +pulseaudio (0.9.13-2ubuntu6) jaunty; urgency=low + + * debian/control: Package pulseaudio-module-x11, + Recommends: gnome-audio | ubuntu-sounds. + + -- Luke Yelavich Tue, 13 Jan 2009 16:15:48 +1100 + +pulseaudio (0.9.13-2ubuntu5) jaunty; urgency=low + + [ Daniel T Chen ] + * Add fixes from git: + - 0015_use_fionread.patch, + - 0016_add_pa-source-message-get-latency.patch, + - 0017_allow_dev_dsp_w-ok.patch, + - 0018_fix_return_val_pa-frame-aligned.patch, + - 0019_fix_macro_pa-unlikely.patch, + - 0020_catch_driver_errors.patch (LP: #312373), + - 0021_convert_to_pa-bool-t.patch, + - 0022_fix_return_val_dump-resample-methods.patch, + - 0023_use_gdbm-nolock.patch, + - 0024_dont_mix_front-center_into_rear.patch, + - 0025_drop_cap-nice_properly.patch, + - 0027_handle_multicast_sdp_with_same_ip_ttl_as_rtp.patch, + - 0028_prefer_mixer_controls_with_vols.patch (LP: #281605), + - 0029_add_minor_fixes.patch + * Forward-port workaround from hardy branch for source/sink and + suspend-on-idle race (LP: #203654): + - 0026_work_around_suspend-on-idle_source_sink_race.patch + * debian/control: Drop padevchooser(Recommends) and pavucontrol + (Suggests) completely - functionality has been subsumed by + jaunty's gnome-volume-control. + * debian/pulseaudio.init: + - Make initscript more informative in the default case of per-user + sessions (LP: #259522), + - Make initscript retry (until three-second timeout) if stopping + fails when restarting (LP: #244414), + - LSB {Required-*,Should-*} should specify hal instead of dbus, + since hal is required (and already requires dbus) (LP: #244679) + * Previous upload contains patches to close: + LP: #193491, #268891, #295164, #298301 + + [ Luke Yelavich ] + * 0008_regen_autotools.patch: Pull some libtool 2.2 updates from git, + and regenerate autotools glue. + * debian/rules: Add --enable-static to force creation of libpulse.a, + a side-effect of messing with the autotools files. This shouldn't + be needed for the 0.9.14 release. + + -- Luke Yelavich Fri, 09 Jan 2009 17:05:38 +1100 + +pulseaudio (0.9.13-2ubuntu4) jaunty; urgency=low + + * Demote paprefs to suggests (LP: #309422) + * Add fixes from git: + - 0010_check_before_using_environment.patch, + - 0011_load_restore_before_other_modules.patch, + - 0012_dont_hit_assert_checking_for_idleness.patch, + - 0013_dont_hit_assert_issuing_two_rewinds_in_single_iter.patch, + - 0014_retry_without_snd-pcm-no-auto-format.patch. + + -- Daniel T Chen Sun, 28 Dec 2008 23:43:01 -0500 + +pulseaudio (0.9.13-2ubuntu3) jaunty; urgency=low + + * Add pm-utils sleep hook to suspend (and resume) users' pulseaudio + daemons (LP: #202089). Based on a patch by + Chow Loong Jin . + + -- Daniel T Chen Mon, 08 Dec 2008 22:11:32 -0800 + +pulseaudio (0.9.13-2ubuntu2) jaunty; urgency=low + + * debian/patches/0009_shm-arch-indep.patch: + - Make shm marker architecture independant, taken from git. + + -- Luke Yelavich Mon, 01 Dec 2008 12:06:00 +1100 + +pulseaudio (0.9.13-2ubuntu1) jaunty; urgency=low + + * Merge from Debian experimental, remaining changes: + - Don't build against, and create jack package. Jack is not in main. + - Remove --disable-per-user-esound-socket from configure flags, as we still + want per user esound sockets. + - Remove stop links from rc0 and rc6. + - Change default resample algorithm and bubffer size. + - Add alsa configuration files to route alsa applications via pulseaudio. + - Move libasound2-plugins from Recommends to Depends. + - debian/pulseaudio.preinst: When upgrading from intrepid, remove + /etc/X11/Xsession.d/70pulseaudio, as this was used to minimize a race + condition when starting GNOME in intrepid. This race should not exist in + jaunty once libcanberra is built to use pulseaudio as a backend. + - Do not spawn a pulseaudio server if clients fail to find a running server. + - Regenerate autotools files for ubuntu. + + -- Luke Yelavich Wed, 19 Nov 2008 10:44:03 +1100 + +pulseaudio (0.9.13-2) experimental; urgency=low + + * Rename libpulsecore5 to libpulsecore8 to correctly reflect the soname + (Closes: #503612) + * 0003-make-sure-to-use-64bit-rounding-even-on-32bit-machin.patch + - Fix rounding errors on 32 bit machines. From upstream git + * 0004-properly-remove-dbus-matches-an-filters-when-unloadi.patch + - Properly remove dbus filters when unloading the bluetooth module + * 0005-Fix-two-typos-that-broke-tunnels.patch + - Fix tunnels. From upstream git + + -- Sjoerd Simons Sun, 16 Nov 2008 18:13:05 +0000 + +pulseaudio (0.9.13-1ubuntu3) jaunty; urgency=low + + * Build-depend on libltdl7-dev to make the armel buildd happy. + + -- Matthias Klose Wed, 19 Nov 2008 16:26:45 +0000 + +pulseaudio (0.9.13-1ubuntu2) jaunty; urgency=low + + * Drop libasyncns-dev again. Its in universe, and we will worry about + whether we really need it again later. + + -- Luke Yelavich Tue, 18 Nov 2008 15:47:20 +1100 + +pulseaudio (0.9.13-1ubuntu1) jaunty; urgency=low + + * Merge from Debian unstable, remaining changes: + - Don't build against, and create jack package. Jack is not in main. + - Remove --disable-per-user-esound-socket from configure flags, as we still + want per user esound sockets. + - Remove stop links from rc0 and rc6. + - Change default resample algorithm and bubffer size. + - Add alsa configuration files to route alsa applications via pulseaudio. + - Move libasound2-plugins from Recommends to Depends. + * debian/pulseaudio.preinst: When upgrading from intrepid, remove + /etc/X11/Xsession.d/70pulseaudio, as this was used to minimize a race + condition when starting GNOME in intrepid. This race should not exist in + jaunty once libcanberra is built to use pulseaudio as a backend. + * Do not spawn a pulseaudio server if clients fail to find a running server. + * Remove explicit version dependency for libspeex-dev to allow the package + to be built for now. + * Regenerate autotools files to work with Ubuntu's newer libtool/libltdl. + * debian/control: libpulsecore5 -> libpulsecore8 to match the library + soname. + + -- Luke Yelavich Tue, 04 Nov 2008 15:46:00 +1100 + +pulseaudio (0.9.13-1) experimental; urgency=low + + [ Bas Zoetekouw ] + * debian/control: Build-Depend on libasound2-dev (>= 1.0.17) + * debian/pulseaudio-module-x11.install: No longer install an xdg autostart + file + * debian/pulseaudio.install: Install system.pa config file and various new + pulseaudio modules + * debian/rules: Add --disable-per-user-esound-socket to configure flags + + [ Sjoerd Simons ] + * New Upstream Version + * Fixes FTBTS on GNU/kFreeBSD (Closes: #497624) + * Dropped patches for things that have been fixed upstream: + - 0003-Define-PULSE_INTERNAL.patch + - 0005-Reduce-RT-prio-logging-severity.patch + - 0006-fix-iteration-over-random-devices.patch + * rename 0003-load-module-gconf-earlier.patch to + 0002-load-module-gconf-earlier.patch + * rename 0002-Fix-library-search-path-to-include-lib-and-usr-lib.patch + to 0001-Fix-library-search-path-to-include-lib-and-usr-lib.patch + * rename 0004-load-module-gconf-earlier.patch to + 0003-load-module-gconf-earlier.patch + * 0001-Set-ESD-socket-to-tmp-.esd-socket-to-match-up-with.patch + - Dropped, not necessary anymore, the --disable-per-user-esound-socket + configure flag now has the same result + * debian/control: Add libspeexdsp-dev (>= 1.2~rc1) to Build-Depends + * debian/control: Add Build-Depends on libpolkit-dbus-dev and + libbluetooth-dev + * debian/pulseaudio.install: Install various new modules. Including bluetooth + and polkit, which will move into a separate package later. + * debian/pulseaudio.install: Install the new pulseaudio xdg autostart file + * debian/control: add a depend on consolekit. Might be downgrade to a + recommend later + * debian/control: Set the maintainer to the pkg-pulseaudio mailinglist + * debian/control: Add libgdbm-dev to build-depends + * debian/control: Add intltool to build-depends + + -- Sjoerd Simons Sun, 19 Oct 2008 21:05:13 +0100 + +pulseaudio (0.9.10-3) unstable; urgency=low + + * debian/patches/0006-fix-iteration-over-random-devices.patch + - Added. Iterate over the various random devices if opening fails + (Closes: #491270) + + -- Sjoerd Simons Sat, 30 Aug 2008 14:24:51 +0100 + +pulseaudio (0.9.10-2ubuntu9) intrepid; urgency=low + + * debian/70pulseaudio && debian/pulse-session: Use a wrapper script + to start pulseaudio at the Xsession.d phase of the login process. + The wrapper script is necessary to execute processes that need to + be loaded after pulseaudio, such as the X session manager. This + works around a race condition involving pulseaudio and canberra-gtk-play + and the GNOME login sound. (LP: #274124) + * debian/pulseaudio.preinst: Remove /etc/xdg/autostart/pulseaudio.desktop + if it exists. We don't want pulseaudio started more than once. + + -- Luke Yelavich Mon, 20 Oct 2008 13:26:28 +1100 + +pulseaudio (0.9.10-2ubuntu8) intrepid; urgency=low + + * debian/pulseaudio.desktop: Use a slightly modified version of the + pulseaudio desktop file from more recent versions, and place it in + /etc/xdg/autostart, to start pulseaudio earlier in the GNOME desktop + initialization. This should avoid a race condition between the login + sound being played, and pulseaudio being loaded. (LP: #274124) + + -- Luke Yelavich Fri, 10 Oct 2008 15:22:51 +1100 + +pulseaudio (0.9.10-2ubuntu7) intrepid; urgency=low + + * Fix some errors in the pid file handling patch, thanks to Mandriva. + * debian/pulse.conf: Do not use an absolute path when referring to the + pulse alsa plugin, as this breaks bi-arch configurations. libasound2 + and lib32/64asound2 now include ldconfig files to include the alsa-plugins + path for the architecture in use. + + -- Luke Yelavich Wed, 08 Oct 2008 11:20:17 +1100 + +pulseaudio (0.9.10-2ubuntu6) intrepid; urgency=low + + * debian/pulse-alsa.conf: extend configuration to include "pulse" + definitions for buggy ALSA applications (e.g., Skype). (LP: #258581) + + -- Conn O Griofa Tue, 23 Sep 2008 16:12:19 +0100 + +pulseaudio (0.9.10-2ubuntu5) intrepid; urgency=low + + * debian/control: Bump libasound2-plugins from recommends to depends to be + sure that nobody's audio set up for alsa applications is broken. + + -- Luke Yelavich Tue, 23 Sep 2008 23:07:23 +1000 + +pulseaudio (0.9.10-2ubuntu4) intrepid; urgency=low + + * debian/pulse.conf, debian/pulse-alsa.conf. Asoundrc configuration files + to allow the use of pulseaudio as the default output for applications + using alsa, when pulseaudio is running. + * debian/patches/0015-Change-resampler-and-buffering.patch: Change the + resample method used as well as the buffer size. + * Some patches taken from Mandriva's pulseaudio package. See comments in + patch headers for more details: + - 0007-Perfer-client.conf-over-X11-property-variables.patch + - 0008-Also-link-libpulsecore.la-to-some-libraries-needed.patch + - 0009-Rejig-r2495-slightly-and-directly-compile-the-necess.patch + - 0010-Do-not-invalidate-the-cookie-if-no-file-was-specifie.patch + - 0011-fix-error-path-spotted-by-Coling-Guthrie.patch + - 0012-Change-policykit-policy-to-allow-high-priority-and-d.patch + - 0013-More-robust-pid-file-handling.patch + - 0014-Disable-hotplug-sound-as-it-interferes-with-too-many.patch + + -- Luke Yelavich Tue, 23 Sep 2008 16:02:48 +1000 + +pulseaudio (0.9.10-2ubuntu3) intrepid; urgency=low + + * Remove stop links from rc0 and rc6 (LP: #254254): + - debian/rules: change DEB_UPDATE_RCD_PARAMS to + start 25 2 3 4 5 . stop 15 1 . + + -- Cesare Tirabassi Mon, 04 Aug 2008 19:22:43 +0200 + +pulseaudio (0.9.10-2ubuntu2) intrepid; urgency=low + + * debian/patches/0006-pcspkr-last.patch: Load the PC speaker as a sink + after all other sound card sinks have been loaded. (LP: #242966) + * debian/patches/0007-relibtoolize.patch: Regenerate relevant libtool + bits, because even though libltdl7 is supposed to be API-compatible + with libltdl3, the package FTBFs without regeneration. + + -- Luke Yelavich Tue, 29 Jul 2008 16:07:18 +1000 + +pulseaudio (0.9.10-2ubuntu1) intrepid; urgency=low + + * Merge from Debian unstable. + * Patches + + 0001-Set-ESD-socket-to-tmp-.esd-socket-to-match-up-with.patch: + continue to disable this patch, as we want user sockets to be + the default in the conffile; + - 0050-Reduce-RT-highprio-log-to-info: absorbed into Debian unstable; + - 0051-Reduce-pa_pid_file_create-Daemon-already-running-log-spam: + removed as per discussion with Sjoerd, as it can confuse human + debugging; + * Packaging + + MaintainerField and Vcs munging; + + Don't generate or install the jackd module; + + Use multiuser semantics. + + -- Daniel T Chen Wed, 14 May 2008 15:47:31 -0400 + +pulseaudio (0.9.10-2) unstable; urgency=low + + * debian/patches/0003-Define-PULSE_INTERNAL.patch + - Added. Let the daemon put PULSE_INTERNAL in its environment so things + can detect when called from within pulseaudio + * debian/patches/0004-load-module-gconf-earlier.patch + - Added. Load module-gconf before module-volume-restore and + module-device-restore. Otherwise setting virtual sinks/sources as default + won't be persistent + * debian/patches/0005-Reduce-RT-prio-logging-severity.patch + - Added. Reduce the priority of the RT warnings. Not running with RT + priorities is the default. + + -- Sjoerd Simons Sat, 10 May 2008 22:16:12 +0200 + +pulseaudio (0.9.10-1ubuntu1) hardy; urgency=low + + [ Daniel T Chen ] + * Merge from Debian unstable: + * Patches + + 0050-Reduce-RT-highprio-log-to-info: + + 0051-Reduce-pa_pid_file_create-Daemon-already-running-log-spam: + Retain to prevent innocuous messages from spamming user log; + - 0052-Add-extra-checks-to-padsp-debug-calls: + - 0053-Handle-channel-map-failure: + - 0054-Invoke-pa_ltdl_done-conditionally: + - 0055-fix_record_stream_moved: Merged in new upstream version. + * Packaging + + control: Adhere to DebianMaintainerField spec, and add a + Vcs-Bzr entry; + + control: + + pulseaudio-module-jack.install: Don't generate or install the + jackd module; + + pulseaudio.init: + + rules: Use multiuser semantics. + + [ Luke Yelavich ] + * FFe granted. (LP: #211592) + + -- Luke Yelavich Mon, 07 Apr 2008 10:40:01 +1000 + +pulseaudio (0.9.10-1) unstable; urgency=low + + [ CJ van den Berg ] + * New Upstream Version + * debian/patches: Drop patches merged upstream + - 0002-Double-esound-maximum-sample-size.patch + - 0003-fix-uploading-of-samples-into-PA.-Problem-discovered.patch + - 0004-make-sure-to-create-.pulse-before-using-any-config.patch + - 0005-Don-t-add-protocol-fields-introduced-in-version-12-w.patch + - 0006-Implement-opcodes-added-in-version-12-in-the-tunnel.patch + - 0007-Change-config-to-not-fail-if-loading-of-esd-gconf-o.patch + - 0008-Fix-compilation-on-non-linux-platforms.patch + * debian/patches: Add patch to fix RPATHs. + + 0002-Fix-library-search-path-to-include-lib-and-usr-lib.patch + * debian/control: + + Make libpulsecore5-dbg depend on libpulsecore5, instead of pulseaudio. + + Make libpulse-browse0-dbg depend on libpulse-browse0. + * Update Standards-Version to 3.7.3 (no changes required). + + [ Petter Reinholdtsen ] + * debian/pulseaudio.init: Fix problems with LSB header in init.d script. + (Closes: #470934) + + -- CJ van den Berg Sun, 30 Mar 2008 20:11:02 +0200 + +pulseaudio (0.9.9-1ubuntu4) hardy; urgency=low + + * Patch from Thorvald Natvig to fix protocol error when moving source outputs. + (LP: #194756) + + -- Luke Yelavich Fri, 28 Mar 2008 15:58:55 +1100 + +pulseaudio (0.9.9-1ubuntu3) hardy; urgency=low + + * Patches: + - Apply (new) patch to handle channel mapping failure. From + upstream SVN changeset 2105. (LP: #178442) + - Apply (new) patch to invoke pa_ltdl_done() conditionally. + From upstream SVN changeset 2111. + + -- Daniel T Chen Mon, 18 Feb 2008 18:40:28 -0500 + +pulseaudio (0.9.9-1ubuntu2) hardy; urgency=low + + * Packaging: + - Add versioned dependency on sysv-rc to pulseaudio for LTS->LTS. + Thanks, Steve Langasek (LP: #187469)! + * Patches: + - Apply (new) patch from Mandriva adding checks to debug calls, + preventing crashes, with padsp. + + -- Daniel T Chen Wed, 30 Jan 2008 20:43:29 -0500 + +pulseaudio (0.9.9-1ubuntu1) hardy; urgency=low + + * Merge from Debian unstable, remaining changes: + - Packaging: + + pulseaudio-module-x11 does not recommend an audio theme, + + no jack packages, + + pulseaudio-utils long description clarification, + + multiuser initscript semantics (Teardown spec), + + Vcs-Bzr entry and DebianMaintainerField mangling; + - Patches: + + omit 0001-Set-ESD-socket-to-tmp-.., + + omit socket parameter in 0007-Change-config-.. to apply + cleanly given above 0001-Set-ESD-socket omission, + + lower verboseness of some log messages, + + drop backported CVE-2008-008 fix (already in 0.9.9). + + -- Daniel T Chen Fri, 25 Jan 2008 16:04:34 -0500 + +pulseaudio (0.9.9-1) unstable; urgency=high + + * New Upstream Version. + * Fixes CVE-2008-008: Assert that dropping permissions succeeds. + * Priority high because it fixes a security issue. + + -- Sjoerd Simons Thu, 24 Jan 2008 12:44:55 +0100 + +pulseaudio (0.9.8-2ubuntu3) hardy; urgency=low + + * [SECURITY] Apply (new) patch fixing unchecked setuid() return + values. Patch backported from upstream 0.9.9. + * References: + CVE-2008-0008 + https://bugzilla.novell.com/show_bug.cgi?id=347822 + https://bugzilla.redhat.com/show_bug.cgi?id=425481 + + -- Daniel T Chen Wed, 23 Jan 2008 20:11:25 -0500 + +pulseaudio (0.9.8-2ubuntu2) hardy; urgency=low + + * Apply (new) 0051-Reduce-pa_pid_file_create.. patch that lowers the + "Daemon already running", "pa_pid_file_create() failed", and + "setrlimit(..Operation not permitted" levels to prevent spamming + /var/log/syslog. Normal users not in the pulse-rt group don't need + this level of verbosity, and the "errors" are innocuous given per- + user session invocation. (These changes really close LP #83137 and + duplicates.) + * Thanks to Sjoerd Simons for the insight. + + -- Daniel T Chen Tue, 08 Jan 2008 06:36:42 -0500 + +pulseaudio (0.9.8-2ubuntu1) hardy; urgency=low + + * Merge from Debian unstable, remaining changes: + - Packaging: + + pulseaudio-module-x11 does not recommend an audio theme, + + no jack packages, + + pulseaudio-utils long description clarification, + + multiuser initscript semantics (Teardown spec), + + Vcs-Bzr entry and DebianMaintainerField mangling; + - Patches: + + omit 0001-Set-ESD-socket-to-tmp-.., + + omit socket parameter in 0007-Change-config-.. to apply + cleanly given above 0001-Set-ESD-socket omission, + + apply (new) 0050-Reduce-RT-highprio-log-to-info.patch + (LP: #83137 and duplicates). + + -- Daniel T Chen Fri, 04 Jan 2008 21:46:57 +0000 + +pulseaudio (0.9.8-2) unstable; urgency=low + + * Bump shlibs of libpulse and libpulse-browse. Upstream has started + versioning symbols. + * debian/p.../0005-Don-t-add-protocol-fields-introduced-in-version-12-w.patch + - Added. Don't send fields/opcodes adding in protocol version 12 to + clients using version 11. (Closes: #458556) + * debian/p.../0006-Implement-opcodes-added-in-version-12-in-the-tunnel.patch + - Added. Add dummy implementations of the opcodes added in protocol + version 12. + * debian/patches/0004-Force-module-tunnel-to-use-protocol-version-11.patch + - Removed. Obsoleted by the two previous patches + * debian/p.../0005-make-sure-to-create-.pulse-before-using-any-config.patch + - Renamed to 0004-make-sure-to-create-.pulse-before-using-any-config.patch + * debian/p.../0007-Change-config-to-not-fail-if-loading-of-esd-gconf-o.patch + - Added. Don't fail to load if esd, gconf or x11-publish fail. + (Closes: 456590, #456505) + * debian/patches/0008-Fix-compilation-on-non-linux-platforms.patch + - Added. Fixes compliation on non-linux platforms such as GNU/kFreeBSD. + Thanks to Aurelien Jarno for the patch (Closes: #454197) + + -- Sjoerd Simons Fri, 04 Jan 2008 16:12:27 +0100 + +pulseaudio (0.9.8-1ubuntu3) hardy; urgency=low + + * debian/control: Drop Recommendation of ubuntu-sounds entirely; it's wrong + for derivatives, and theming should be done with seeds and derivative + specific meta packages. + + -- Martin Pitt Mon, 10 Dec 2007 14:37:37 +0100 + +pulseaudio (0.9.8-1ubuntu2) hardy; urgency=low + + * debian/control: Make pulseaudio-module-x11 recommend ubuntu-sounds, + not gnome-audio. + + -- Daniel T Chen Thu, 06 Dec 2007 07:12:07 -0500 + +pulseaudio (0.9.8-1ubuntu1) hardy; urgency=low + + "Hail our new PulseAudio overlords (part two)." + + * Merge from Debian unstable. + * Ubuntu-specific changes: + - debian/control: + + Don't build-depend on libjack0.100.0-dev or build jack module + packages, + + Update pulseaudio's Recommends and Suggests to accomodate + existing promoted main packages, + + Explicitly mention pasuspender in pulseaudio-utils's long + description, + + Add Vcs-Bzr URI, + + Adhere to DebianMaintainerField; + - debian/rules: Use multiuser for update-rc.d; + - debian/patches/series: Retain the exclusion of + 0001-Set-ESD-socket-to-tmp-.esd-socket-to-match-up-with.patch. + * Dropped Ubuntu-specific change (absorbed into Debian source): + debian/patches/0002-Double-esound-maximum-sample-size.patch. + + -- Daniel T Chen Tue, 04 Dec 2007 00:56:08 +0000 + +pulseaudio (0.9.8-1) unstable; urgency=low + + [ CJ van den Berg ] + * New upstream version. + * debian/overrides/pulseaudio: Remove override for setuid-binary. + * debian/control: + + Change the priority of all -dbg packages to extra. + + Stop recommending libao-pulse. libao2 has built-in pulseaudio support. + + Make pulseaudio conflict libltdl3 < 1.5.24-1 (Closes: #451638) + + Change XS-Vcs-* tags to Vcs-*. + + Add libpulsecore5-dbg package. + + Rename gstreamer plugin package in recommends. + + Add Homepage field. + + Bump libpulsecore so version number to 5. + + Conflict with all pre libpulsecore split packages. + * debian/patches/0002-Fix-pa_readlink-to-put-a-0-in-the-right-location.patch: + - Dropped, merged upstream. + * debian/p..s/0003-Define-__NR_eventfd-on-arm-if-it-wasn-t-defined-yet.patch: + - Dropped, merged upstream. + * debian/patches/0002-Double-esound-maximum-sample-size.patch: + + Added, from Ubuntu. + * debian/p..s/0003-fix-uploading-of-samples-into-PA.-Problem-discovered.patch: + + Added, svn commit r2074 from upstream. + * debian/patches/0004-Force-module-tunnel-to-use-protocol-version-11.patch: + + Added, fixes protocol errors in module-tunnel. + * debian/pa..es/0005-make-sure-to-create-.pulse-before-using-any-config.patch: + + Added, fixes module-volume-restore so that volumes are restored across + daemon restarts. + * debian/pulseaudio.manpages: Add manpages default.pa.5, pulse-client.conf.5 + and pulse-daemon.conf.5 + * debian/pulseaudio-utils.manpages: Add manpages pabrowse.1, pacat.1, + pacmd.1, pactl.1, padsp.1, paplay.1, pasuspender.1 and pax11publish.1 + * debian/pulseaudio.default: Add a description of the preferred method of + running the daemon. + + [Daniel T Chen] + * debian/control: Add lsb-base (>= 3) to pulseaudio's dependencies. + * debian/pulseaudio.init: LSB-ify. + + -- CJ van den Berg Thu, 22 Nov 2007 02:33:51 +0100 + +pulseaudio (0.9.7-3ubuntu2) hardy; urgency=low + + * Disable 0001-Set-ESD-socket-to-tmp-.esd-socket-to-match-up-with.patch. We + do want per-user esd sockets in Ubuntu. This unbreaks multiuser support + and matches the patch that we did to esound for the very same reason: + every user needs its own esd socket path to have them not conflict to each + other. + + -- Martin Pitt Tue, 20 Nov 2007 22:30:35 +0100 + +pulseaudio (0.9.7-3ubuntu1) hardy; urgency=low + + "Hail our new PulseAudio overlords (part one)." + + * Merge from Debian unstable. + * Apply Ubuntu-specific changes: + - debian/control: + + drop libasyncns-dev and libjack0.100.0-dev build-dependencies + since we don't build the jack plugin [yet]; + + add versioned lsb-base dependency to pulseaudio; + + keep pulseaudio installable by demoting some recommended + packages to suggested [retain libasound2-plugins, + libgstreamer-plugins-pulse0.10-0, and + pulseaudio-esound-compat. pulseaudio-module-hal, + pulseaudio-module-x11, libao-pulse, paprefs, and + padevchooser are currently in universe]; + + adhere to DebianMaintainerField spec; + - debian/rules: + + use multiuser instead of defaults in DEB_UPDATE_RCD_PARAMS. + * Drop obsolete Ubuntu-specific change: + - src/pulsecore/protocol-esound.c: applied upstream. + + -- Daniel T Chen Sat, 17 Nov 2007 00:10:48 +0000 + +pulseaudio (0.9.7-3) unstable; urgency=low + + [ CJ van den Berg ] + * debian/control: Add depends on -utils to -module-x11. (Closes: #450840) + + [ Sjoerd Simons ] + * Set pulseaudio setuid in postinst if the permissions aren't overriden by + dpkg-statoverride, instead of having the binary with suid perms in the deb + + -- Sjoerd Simons Fri, 16 Nov 2007 18:41:28 +0100 + +pulseaudio (0.9.7-2) unstable; urgency=low + + * Use pulseaudio (<< 0.9.7) instead of pulseaudio (< 0.9.7) in + -esound-compat + * debian/patches/0002-Fix-pa_readlink-to-put-a-0-in-the-right-location.patch: + + Added. Fix pa_readlink to put a \0 directly after the link string. Fixes + issues with clients using the alsa compatibility layer + * deb/patches/0003-Define-__NR_eventfd-on-arm-if-it-wasn-t-defined-yet.patch: + + Added. Define __NR_eventfd. Fixes FTBS on arm, because libc6-dev does + define SYS_eventfd but older versions of linux-libc-dev don't define + __NR_eventfd yet. + + -- Sjoerd Simons Sun, 04 Nov 2007 13:53:09 +0100 + +pulseaudio (0.9.7-1) unstable; urgency=low + + * New Upstream Version. (Closes: #446026, #436409) + * Drop all patches. All patches are merged upstream. + * debian/control: + + Replace ${Source-Version} with ${binary:Version}. + + Add XS-Vcs-* tags. + + Conflict pulseaudio < 0.9.7 in -esound-compat due to moved manpage. + * debian/rules: + + Add list-missing to catch new modules + + Remove all .la files. + * debian/overrides/pulseaudio: Update libpulsecore so version. + * debian/pulseaudio.install: + + Add new module-default-device-restore.so. + + Add new module-suspend-on-idle.so. + + Add new module-remap-sink.so. + + Add new module-ladspa-sink.so. + - Remove module-oss-mmap.so, removed upstream. + * debian/pulseaudio-module-x11.install: Add new module-x11-xsmp.so. + * debian/pulseaudio-module-zeroconf.install: Add new module-zeroconf- + discover.so. + * debian/pulseaudio-utils.install: Add pasuspender utility. + * debian/pulseaudio-esound-compat.links: Move esd link to pulseaudio- + esound-compat. + * debian/pulseaudio-esound-compat.manpages: Move esdcompat manpage to + pulseaudio-esound-compat. + * debian/libpulse0.shlibs: Add minimum version of 0.9.7 to libpulse0 shlibs. + * debian/patches: + + Added 0001-Set-ESD-socket-to-tmp-.esd-socket-to- match-up-with.patch + + -- CJ van den Berg Wed, 31 Oct 2007 15:31:44 +0100 + +pulseaudio (0.9.6-2) unstable; urgency=low + + * debian/control: + - Add -dbg packages. + - Make libcap-dev and libasound-dev arch specific build deps. + - Add recommends gnome-audio to pulseaudio-module-x11. (Closes: #437393) + - Make pulseaudio-module-zeroconf recommend avahi-daemon. + - Make pulseaudio-utils suggest avahi-daemon. (for pabrowse) + * debian/rules: + - Generate arch specific install files. (Closes: #430366) + - Install init script to start at 25 and stop at 15. (Closes: #428046) + * debian/overrides/pulseaudio: Update libpulsecore override to new + soversion. + * debian/copyright: Update e-mail address for Lennart Poettering. + * debian/patches: Reformat patch series. Add two new patches. + + 0003-Backported-padsp-improvements-from-upstream-trunk.patch + + 0004-New-realtime-safe-and-transport-free-JACK-module.patch + + -- CJ van den Berg Sun, 02 Sep 2007 20:22:19 +0200 + +pulseaudio (0.9.6-1ubuntu2) gutsy; urgency=low + + * fix esound max samplesize again to make sure teh login sound is playable + on networked connections. + + -- Oliver Grawert Thu, 28 Jun 2007 15:31:28 +0200 + +pulseaudio (0.9.6-1ubuntu1) gutsy; urgency=low + + * Merge from Debian unstable, remaining changes: + - debian/control: + + Add lsb-base (>= 3) to pulseaudio's dependencies, + + Adhere to DebianMaintainerField policy, + + Don't build-depend on libjack0.100.0-dev or libasyncns-dev, + - debian/patches/: Remove all Ubuntu-created patches (merged + upstream). + + -- Daniel T Chen Mon, 28 May 2007 22:30:44 +0100 + +pulseaudio (0.9.6-1) unstable; urgency=low + + * New Upstream Version. + + Fix remote DOS vulnerabilities. (CVE-2007-1804) + + Add support for suspended alsa sinks and sources. + + Correct parameter handling in esdcompat. (Closes: #414355) + + Handle ALSA frame size changes. (Closes: #423887) + + Don't unload module-hal-detect if HAL doesn't report any devices. + (Closes: #395893) + * debian/patches: Remove all patches merged upstream. + - 02_ifexists_else_endif.dpatch + - 03_r1352_firefox_workaround.dpatch + - 04_r1373_JavaSound_support.dpatch + - 05_t28_wrong-endian-convert.dpatch + - 06_pulseaudio-0.9.5-suspend.dpatch + * debian/rules: Port to CDBS. + * debian/patches: Rework patch series for quilt. + * debian/control: Add libatomic-ops-dev to Build-Depends. + + -- CJ van den Berg Mon, 28 May 2007 00:53:28 +0200 + +pulseaudio (0.9.5-7ubuntu1) gutsy; urgency=low + + * Merge from Debian unstable, remaining changes: + - debian/control: + + Add lsb-base (>= 3) to pulseaudio's dependencies, + + Adhere to DebianMaintainerField policy, + - debian/patches/: + + Add 10_fix_DoS_vulns.dpatch (pA ticket 67) and + 11_disallow_excessively_high_sampling_rates.dpatch, + + Drop 06_fix_suspend.dpatch in favour of + 06_pulseaudio-0.9.5-suspend.dpatch, + + Retain 07_fix_esdcompat_bashism.dpatch and + 09_fix_esd_max_samplesize.dpatch. + + -- Daniel T Chen Fri, 25 May 2007 01:32:39 -0400 + +pulseaudio (0.9.5-7) unstable; urgency=low + + * debian/control: Make pulseaudio-module-hal depend on hal, not just + libhal. (Closes: #411501) + + -- CJ van den Berg Mon, 19 Feb 2007 22:11:48 +0100 + +pulseaudio (0.9.5-6) unstable; urgency=low + + * debian/patches/06_pulseaudio-0.9.5-suspend.dpatch: + + Added. Handle -ESTRPIPE correctly. Allows pulseaudio to survive suspend + operations on ALSA devices (e.g. s2disk). Thanks to Tobias Diedrich. + (Closes: #406768) + + -- CJ van den Berg Mon, 12 Feb 2007 11:24:50 +0100 + +pulseaudio (0.9.5-5ubuntu4) feisty; urgency=low + + * add 09_fix_esd_max_samplesize.dpatch to make sure the login and logout + gnome sounds can be processed on remote connections. + + -- Oliver Grawert Tue, 6 Mar 2007 14:14:08 +0100 + +pulseaudio (0.9.5-5ubuntu3) feisty; urgency=low + + * debian/control: + - Add lsb-base (>= 3) to pulseaudio's dependencies, + - Adhere to DebianMaintainerField policy, + - Pull in fix from Debian's 0.9.5-7 adding hal to + pulseaudio-module-hal's dependencies, + * debian/pulseaudio.init: LSB-ify. + + -- Daniel T Chen Sun, 25 Feb 2007 02:30:31 -0500 + +pulseaudio (0.9.5-5ubuntu2) feisty; urgency=low + + * added 06_fix_suspend.dpatch from http://pulseaudio.org/ticket/26 + * added 07_fix_esdcompat_bashism.dpatch to avoid esdcompat trying to + shift an empty $1 on POSIX shells + + -- Oliver Grawert Tue, 30 Jan 2007 23:50:57 +0100 + +pulseaudio (0.9.5-5ubuntu1) feisty; urgency=low + + * Merge from Debian unstable, remaining change: + - debian/{control,rules}: Don't use jack or asyncns. + + -- Daniel T Chen Mon, 29 Jan 2007 10:36:35 -0500 + +pulseaudio (0.9.5-5) unstable; urgency=low + + * debian/control: Make Build-deps more specific. (Closes: #401111) + * debian/pulseaudio.init: Make sure files in /var/run/pulse exist before + calling chown and chmod. (Closes: #405869) + + -- CJ van den Berg Mon, 8 Jan 2007 23:02:53 +0100 + +pulseaudio (0.9.5-4ubuntu2) feisty; urgency=low + + * disable libasyncns to fix ftbfs + + -- Oliver Grawert Sat, 20 Jan 2007 11:10:59 +0100 + +pulseaudio (0.9.5-4ubuntu1) feisty; urgency=low + + * merge from debian unstable + * keep jack removal + + -- Oliver Grawert Tue, 28 Nov 2006 19:51:21 +0100 + +pulseaudio (0.9.5-4) unstable; urgency=low + + * Add comment about resampling methods and CPU consumption to + README.Debian (Closes: #391455) + * debian/patches/03_r1352_firefox_workaround.dpatch: + + Added. Fix padsp to work with firefox. Patch created from + SVN revision 1352. + * debian/patches/04_r1373_JavaSound_support.dpatch: + + Added. Fix padsp to work with JavaSound. Patch created from + SVN revision 1373. + * debian/patches/05_t28_wrong-endian-convert.dpatch: + + Added. Add additional sample conversions to sconv.c to support + BE <-> LE network audio. + Patch from http://www.pulseaudio.org/ticket/28 + + -- CJ van den Berg Wed, 18 Oct 2006 23:10:47 +0200 + +pulseaudio (0.9.5-3ubuntu1) feisty; urgency=low + + * indeed remove the jack plugin from debian/control as well + + -- Oliver Grawert Tue, 14 Nov 2006 21:05:29 +0100 + +pulseaudio (0.9.5-3ubuntu0) feisty; urgency=low + + * initial package + * disable jack + * disable asyncns + + -- Oliver Grawert Sun, 12 Nov 2006 20:00:18 +0100 + +pulseaudio (0.9.5-3) unstable; urgency=low + + * Add support for .ifexists configuration directive. + * Make default.pa use ifexists when loading optional modules. + * Recommend instead of Depend on pulseaudio-module-hal. (Closes: #391232) + * Recommend libasound2-plugins instead of -plugins-pulse. (Closes: #391254) + + -- CJ van den Berg Fri, 6 Oct 2006 01:12:05 +0200 + +pulseaudio (0.9.5-2) unstable; urgency=low + + * Add myself to uploaders + * Put libpulse-dev and libpulse0 in the right sections. + + -- Sjoerd Simons Tue, 3 Oct 2006 15:49:12 +0200 + +pulseaudio (0.9.5-1) unstable; urgency=low + + * Initial release (Closes: #378626) + + -- CJ van den Berg Mon, 28 Aug 2006 00:31:10 +0200 + --- pulseaudio-1.1.orig/debian/rules +++ pulseaudio-1.1/debian/rules @@ -0,0 +1,88 @@ +#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/autotools.mk +include /usr/share/cdbs/1/rules/utils.mk +include /usr/share/cdbs/1/rules/patchsys-quilt.mk +include /usr/share/cdbs/1/rules/autoreconf.mk + +common-build-arch:: + grep -v -e alsa -e evdev -e udev debian/pulseaudio.install > \ + debian/pulseaudio.install.kfreebsd-i386 + grep -v -e alsa -e evdev -e udev debian/pulseaudio.install > \ + debian/pulseaudio.install.kfreebsd-amd64 + grep -v -e alsa -e evdev -e udev debian/pulseaudio.install > \ + debian/pulseaudio.install.hurd-i386 + dh_translations + +common-install-arch:: + find $(DEB_DESTDIR) -name "*.la" -delete + mkdir -p $(CURDIR)/debian/tmp/usr/share/lintian + cp -a $(CURDIR)/debian/overrides $(CURDIR)/debian/tmp/usr/share/lintian + mkdir -p $(CURDIR)/debian/tmp/usr/share/alsa/alsa.conf.d + cp -a $(CURDIR)/debian/pulse.conf $(CURDIR)/debian/tmp/usr/share/alsa/alsa.conf.d + cp -a $(CURDIR)/debian/pulse-alsa.conf $(CURDIR)/debian/tmp/usr/share/alsa + install -D -m755 $(CURDIR)/debian/01PulseAudio $(CURDIR)/debian/tmp/usr/lib/pm-utils/sleep.d/01PulseAudio + install -d $(CURDIR)/debian/tmp/usr/share/apport/package-hooks + cp $(CURDIR)/debian/apport-hook.py $(CURDIR)/debian/tmp/usr/share/apport/package-hooks/source_pulseaudio.py + +pulseaudio-install-arch:: + dh_installman --language=C debian/tmp/usr/share/man/man5/default.pa.5 + +common-binary-post-install-arch:: list-missing + +clean:: + rm -f debian/pulseaudio.install.kfreebsd-i386 + rm -f debian/pulseaudio.install.kfreebsd-amd64 + rm -f debian/pulseaudio.install.hurd-i386 + rm -f debian/stamp-post-patches +# rm -f .version + if test -f $(CURDIR)/debian/daemon.conf.in; then \ + mv $(CURDIR)/debian/daemon.conf.in $(CURDIR)/src/daemon/daemon.conf.in; \ + fi + -rm -f $(CURDIR)/debian/*.log +# -find $(CURDIR)/ -name "*-symdef.h" | xargs rm + +update-patch-series: + mkdir -p $(CURDIR)/debian/patches + rm -f $(CURDIR)/debian/patches/*.patch + git format-patch -o $(CURDIR)/debian/patches patches ^upstream | \ + xargs -n 1 basename > $(CURDIR)/debian/patches/series + for patch in $$(ls $(CURDIR)/debian/patches/*.patch) ; \ + do \ + lines=$$(cat $$patch | wc -l) ; \ + head -n $$(($$lines - 3)) $$patch > $${patch}.chomped ; \ + mv $${patch}.chomped $$patch ; \ + done + +DEB_OPT_FLAG = -O3 +LDFLAGS += -Wl,--no-as-needed +DEB_CONFIGURE_EXTRA_FLAGS = --enable-x11 --disable-hal \ + --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \ + --with-module-dir=\$${prefix}/lib/pulse-1.1/modules +DEB_DH_MAKESHLIBS_ARGS_ALL = --exclude=usr/lib/pulse-1.1/modules +DEB_DH_INSTALL_ARGS = --sourcedir=$(CURDIR)/debian/tmp +DEB_UPDATE_RCD_PARAMS = start 50 2 3 4 5 . stop 15 1 . + +# Dynamically patch default configuration file +ifeq ($(DEB_HOST_ARCH),armel) +RESAMPLE_METHOD := speex-fixed-1 +DEFAULT_FRAGMENTS := 2 +DEFAULT_FRAGMENT_SIZE_MSEC := 10 +else +RESAMPLE_METHOD := speex-float-1 +DEFAULT_FRAGMENTS := 8 +DEFAULT_FRAGMENT_SIZE_MSEC := 10 +endif + +post-patches:: debian/stamp-post-patches + +debian/stamp-post-patches: + cp $(CURDIR)/src/daemon/daemon.conf.in $(CURDIR)/debian/daemon.conf.in + sed -i -e 's/; \(resample-method =\).*/\1 $(RESAMPLE_METHOD)/' \ + -e 's/; \(default-fragments =\).*/\1 $(DEFAULT_FRAGMENTS)/' \ + -e 's/; \(default-fragment-size-msec =\).*/\1 $(DEFAULT_FRAGMENT_SIZE_MSEC)/' \ + -e 's/; deferred-volume-safety-margin-usec = 8000/deferred-volume-safety-margin-usec = 1/' \ + -e 's/; flat-volumes = yes/flat-volumes = no/' \ + $(CURDIR)/src/daemon/daemon.conf.in + touch debian/stamp-post-patches --- pulseaudio-1.1.orig/debian/pulseaudio-dev.install +++ pulseaudio-1.1/debian/pulseaudio-dev.install @@ -0,0 +1,2 @@ +usr/lib/*/libpulsecore.so usr/lib +usr/include/pulsecore/* --- pulseaudio-1.1.orig/debian/libpulse-mainloop-glib0.symbols +++ pulseaudio-1.1/debian/libpulse-mainloop-glib0.symbols @@ -0,0 +1,5 @@ +libpulse-mainloop-glib.so.0 libpulse-mainloop-glib0 #MINVER# + PULSE_0@PULSE_0 1:0.99.1 + pa_glib_mainloop_free@PULSE_0 1:0.99.1 + pa_glib_mainloop_get_api@PULSE_0 1:0.99.1 + pa_glib_mainloop_new@PULSE_0 1:0.99.1 --- pulseaudio-1.1.orig/debian/pulseaudio.default +++ pulseaudio-1.1/debian/pulseaudio.default @@ -0,0 +1,22 @@ +# Start the PulseAudio sound server in system mode. +# (enables the pulseaudio init script - requires that users be in the +# pulse-access group) +# System mode is not the recommended way to run PulseAudio as it has some +# limitations (such as no shared memory access) and could potentially allow +# users to disconnect or redirect each others' audio streams. The +# recommended way to run PulseAudio is as a per-session daemon. For GNOME/KDE/ +# Xfce sessions in Ubuntu Lucid/10.04, /etc/xdg/autostart/pulseaudio.desktop +# handles this function of automatically starting PulseAudio on login, and for +# it to work correctly your user must *not* have "autospawn = no" set in +# ~/.pulse/client.conf (or in /etc/pulse/client.conf). By default, autospawn +# is enabled. For other sessions, you can simply start PulseAudio with +# "pulseaudio --daemonize". +# 0 = don't start in system mode, 1 = start in system mode +PULSEAUDIO_SYSTEM_START=0 + +# Prevent users from dynamically loading modules into the PulseAudio sound +# server. Dynamic module loading enhances the flexibility of the PulseAudio +# system, but may pose a security risk. +# 0 = no, 1 = yes +DISALLOW_MODULE_LOADING=1 + --- pulseaudio-1.1.orig/debian/pulseaudio-utils.links +++ pulseaudio-1.1/debian/pulseaudio-utils.links @@ -0,0 +1,3 @@ +usr/share/man/man1/pacat.1.gz usr/share/man/man1/pamon.1.gz +usr/share/man/man1/pacat.1.gz usr/share/man/man1/parec.1.gz +usr/share/man/man1/pacat.1.gz usr/share/man/man1/parecord.1.gz --- pulseaudio-1.1.orig/debian/manpages/esdcompat.1 +++ pulseaudio-1.1/debian/manpages/esdcompat.1 @@ -0,0 +1,55 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36. +.TH PULSEAUDIO "1" "August 2006" "pulseaudio esd wrapper 0.9.5" "User Commands" +.SH NAME +pulseaudio \- manual page for pulseaudio esd wrapper 0.9.5 +.SH SYNOPSIS +.B esdcompat +[\fIoptions\fR] +.SH DESCRIPTION +pulseaudio esd wrapper 0.9.5 +.TP +\fB\-v\fR \fB\-\-version\fR +print version information +.TP +\fB\-h\fR \fB\-\-help\fR +show this help +.PP +Ignored directives: +.TP +\fB\-tcp\fR +use tcp/ip sockets in addition to unix domain +.TP +\fB\-promiscuous\fR +don't require authentication +.TP +\fB\-d\fR DEVICE +force esd to use sound device DEVICE +.TP +\fB\-b\fR +run server in 8 bit sound mode +.TP +\fB\-r\fR RATE +run server at sample rate of RATE +.TP +\fB\-as\fR SECS +free audio device after SECS of inactivity +.TP +\fB\-unix\fR +use unix domain sockets instead of tcp/ip +.TP +\fB\-public\fR +make tcp/ip access public (other than localhost) +.TP +\fB\-terminate\fR +terminate esd daemone after last client exits +.TP +\fB\-nobeeps\fR +disable startup beeps +.TP +\fB\-trust\fR +start esd even if use of /tmp/.esd can be insecure +.TP +\fB\-port\fR PORT +listen for connections at PORT (only for tcp/ip) +.HP +\fB\-bind\fR ADDRESS binds to ADDRESS (only for tcp/ip) --- pulseaudio-1.1.orig/debian/overrides/pulseaudio-module-x11 +++ pulseaudio-1.1/debian/overrides/pulseaudio-module-x11 @@ -0,0 +1 @@ +pulseaudio-module-x11: desktop-entry-lacks-main-category /etc/xdg/autostart/pulseaudio-module-xsmp.desktop --- pulseaudio-1.1.orig/debian/overrides/pulseaudio +++ pulseaudio-1.1/debian/overrides/pulseaudio @@ -0,0 +1,2 @@ +pulseaudio: script-not-executable ./etc/pulse/default.pa +pulseaudio: description-starts-with-package-name --- pulseaudio-1.1.orig/debian/overrides/libpulsedsp +++ pulseaudio-1.1/debian/overrides/libpulsedsp @@ -0,0 +1,3 @@ +libpulsedsp: shlib-without-versioned-soname */libpulsedsp.so libpulsedsp.so +libpulsedsp: no-shlibs-control-file */libpulsedsp.so +libpulsedsp: postinst-must-call-ldconfig */libpulsedsp.so --- pulseaudio-1.1.orig/debian/patches/0619-module-switch-on-port-available-Do-not-switch-profil.patch +++ pulseaudio-1.1/debian/patches/0619-module-switch-on-port-available-Do-not-switch-profil.patch @@ -0,0 +1,72 @@ +From 1f97db720bd533a7b367a7d3123a493196125828 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Mon, 19 Mar 2012 16:42:10 +0100 +Subject: [PATCH 17/17] module-switch-on-port-available: Do not switch profile + if current port is available + +For switching profiles, we are a little more cautious, only switch +from an unavailable port to an available one. Profile switching is +mainly used for HDMI/DisplayPort, and this is to avoid switching from +analog to HDMI/DP when it becomes available. + +See http://lists.freedesktop.org/archives/pulseaudio-discuss/2012-March/012991.html +and replies for more information. + +Signed-off-by: David Henningsson +--- + src/modules/module-switch-on-port-available.c | 24 ++++++++++++++++++++++-- + 1 files changed, 22 insertions(+), 2 deletions(-) + +diff --git a/src/modules/module-switch-on-port-available.c b/src/modules/module-switch-on-port-available.c +index 0a115d3..f198e44 100644 +--- a/src/modules/module-switch-on-port-available.c ++++ b/src/modules/module-switch-on-port-available.c +@@ -60,8 +60,13 @@ static pa_bool_t try_to_switch_profile(pa_card *card, pa_device_port *port) { + if (best_profile && best_profile->priority >= profile->priority) + continue; + ++ if (!card->active_profile) { ++ best_profile = profile; ++ continue; ++ } ++ + /* We make a best effort to keep other direction unchanged */ +- if (card->active_profile && !port->is_input) { ++ if (!port->is_input) { + if (card->active_profile->n_sources != profile->n_sources) + continue; + +@@ -69,7 +74,7 @@ static pa_bool_t try_to_switch_profile(pa_card *card, pa_device_port *port) { + continue; + } + +- if (card->active_profile && !port->is_output) { ++ if (!port->is_output) { + if (card->active_profile->n_sinks != profile->n_sinks) + continue; + +@@ -77,6 +82,21 @@ static pa_bool_t try_to_switch_profile(pa_card *card, pa_device_port *port) { + continue; + } + ++ if (port->is_output) { ++ /* Try not to switch to HDMI sinks from analog when HDMI is becoming available */ ++ uint32_t state2; ++ pa_sink *sink; ++ pa_bool_t found_active_port = FALSE; ++ PA_IDXSET_FOREACH(sink, card->sinks, state2) { ++ if (!sink->active_port) ++ continue; ++ if (sink->active_port->available != PA_PORT_AVAILABLE_NO) ++ found_active_port = TRUE; ++ } ++ if (found_active_port) ++ continue; ++ } ++ + best_profile = profile; + } + +-- +1.7.9.1 + --- pulseaudio-1.1.orig/debian/patches/0603-Cards-now-has-ports-directly-and-device-port-has-lis.patch +++ pulseaudio-1.1/debian/patches/0603-Cards-now-has-ports-directly-and-device-port-has-lis.patch @@ -0,0 +1,129 @@ +From 4794a88361fb99b325a25c22a29cf2383b44e3d2 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 25 Nov 2011 15:17:13 +0100 +Subject: [PATCH 603/614] Cards now has ports directly, and device port has + list of profiles + +This forms the base for being able to expose all ports of all +profiles (even inactive ones) to clients. + +Signed-off-by: David Henningsson +--- + src/pulsecore/card.c | 10 +++++++++- + src/pulsecore/card.h | 4 ++++ + src/pulsecore/device-port.c | 5 +++++ + src/pulsecore/device-port.h | 4 ++++ + 4 files changed, 22 insertions(+), 1 deletions(-) + +diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c +index feaa444..1f12aef 100644 +--- a/src/pulsecore/card.c ++++ b/src/pulsecore/card.c +@@ -34,6 +34,7 @@ + #include + #include + #include ++#include + + #include "card.h" + +@@ -66,7 +67,7 @@ pa_card_new_data* pa_card_new_data_init(pa_card_new_data *data) { + + memset(data, 0, sizeof(*data)); + data->proplist = pa_proplist_new(); +- ++ data->ports = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); + return data; + } + +@@ -99,6 +100,9 @@ void pa_card_new_data_done(pa_card_new_data *data) { + pa_hashmap_free(data->profiles, NULL, NULL); + } + ++ if (data->ports) ++ pa_device_port_hashmap_free(data->ports); ++ + pa_xfree(data->name); + pa_xfree(data->active_profile); + } +@@ -139,6 +143,8 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) { + * copying it here */ + c->profiles = data->profiles; + data->profiles = NULL; ++ c->ports = data->ports; ++ data->ports = NULL; + + c->active_profile = NULL; + c->save_profile = FALSE; +@@ -195,6 +201,8 @@ void pa_card_free(pa_card *c) { + pa_assert(pa_idxset_isempty(c->sources)); + pa_idxset_free(c->sources, NULL, NULL); + ++ pa_device_port_hashmap_free(c->ports); ++ + if (c->profiles) { + pa_card_profile *p; + +diff --git a/src/pulsecore/card.h b/src/pulsecore/card.h +index 2d691b6..6f942e8 100644 +--- a/src/pulsecore/card.h ++++ b/src/pulsecore/card.h +@@ -63,6 +63,8 @@ struct pa_card { + pa_hashmap *profiles; + pa_card_profile *active_profile; + ++ pa_hashmap *ports; ++ + pa_bool_t save_profile:1; + + void *userdata; +@@ -80,6 +82,8 @@ typedef struct pa_card_new_data { + pa_hashmap *profiles; + char *active_profile; + ++ pa_hashmap *ports; ++ + pa_bool_t namereg_fail:1; + + pa_bool_t save_profile:1; +diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c +index 09646ee..8aeb173 100644 +--- a/src/pulsecore/device-port.c ++++ b/src/pulsecore/device-port.c +@@ -32,6 +32,8 @@ static void device_port_free(pa_object *o) { + pa_assert(p); + pa_assert(pa_device_port_refcnt(p) == 0); + ++ if (p->profiles) ++ pa_hashmap_free(p->profiles, NULL, NULL); + pa_xfree(p->name); + pa_xfree(p->description); + pa_xfree(p); +@@ -50,6 +52,9 @@ pa_device_port *pa_device_port_new(const char *name, const char *description, si + p->description = pa_xstrdup(description); + p->priority = 0; + p->available = PA_PORT_AVAILABLE_UNKNOWN; ++ p->profiles = NULL; ++ p->is_input = FALSE; ++ p->is_output = FALSE; + + return p; + } +diff --git a/src/pulsecore/device-port.h b/src/pulsecore/device-port.h +index dfe3fc1..f997c77 100644 +--- a/src/pulsecore/device-port.h ++++ b/src/pulsecore/device-port.h +@@ -46,6 +46,10 @@ struct pa_device_port { + unsigned priority; + pa_port_available_t available; /* PA_PORT_AVAILABLE_UNKNOWN, PA_PORT_AVAILABLE_NO or PA_PORT_AVAILABLE_YES */ + ++ pa_hashmap *profiles; /* Can be NULL. Does not own the profiles */ ++ pa_bool_t is_input:1; ++ pa_bool_t is_output:1; ++ + /* .. followed by some implementation specific data */ + }; + +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0007-handle-Master-Front.patch +++ pulseaudio-1.1/debian/patches/0007-handle-Master-Front.patch @@ -0,0 +1,83 @@ +Index: pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output-headphones-2.conf +=================================================================== +--- pulseaudio-0.9.20.orig/src/modules/alsa/mixer/paths/analog-output-headphones-2.conf 2009-11-12 19:26:22.000000000 -0500 ++++ pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output-headphones-2.conf 2009-11-12 19:26:38.000000000 -0500 +@@ -33,6 +33,12 @@ + override-map.1 = all + override-map.2 = all-left,all-right + ++[Element Master Front] ++switch = mute ++volume = merge ++override-map.1 = all ++override-map.2 = front-left,front-right ++ + [Element Master Mono] + switch = off + volume = off +Index: pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output-headphones.conf +=================================================================== +--- pulseaudio-0.9.20.orig/src/modules/alsa/mixer/paths/analog-output-headphones.conf 2009-11-12 19:26:22.000000000 -0500 ++++ pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output-headphones.conf 2009-11-12 19:26:38.000000000 -0500 +@@ -33,6 +33,12 @@ + override-map.1 = all + override-map.2 = all-left,all-right + ++[Element Master Front] ++switch = mute ++volume = merge ++override-map.1 = all ++override-map.2 = front-left,front-right ++ + [Element Master Mono] + switch = off + volume = off +Index: pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output-mono.conf +=================================================================== +--- pulseaudio-0.9.20.orig/src/modules/alsa/mixer/paths/analog-output-mono.conf 2009-11-12 19:26:22.000000000 -0500 ++++ pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output-mono.conf 2009-11-12 19:26:38.000000000 -0500 +@@ -31,6 +31,10 @@ + switch = off + volume = off + ++[Element Master Front] ++switch = off ++volume = off ++ + [Element Master Mono] + required = any + switch = mute +Index: pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output-speaker.conf +=================================================================== +--- pulseaudio-0.9.20.orig/src/modules/alsa/mixer/paths/analog-output-speaker.conf 2009-11-12 19:26:22.000000000 -0500 ++++ pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output-speaker.conf 2009-11-12 19:26:38.000000000 -0500 +@@ -33,6 +33,12 @@ + override-map.1 = all + override-map.2 = all-left,all-right + ++[Element Master Front] ++switch = mute ++volume = merge ++override-map.1 = all ++override-map.2 = front-left,front-right ++ + [Element Master Mono] + switch = off + volume = off +Index: pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output.conf +=================================================================== +--- pulseaudio-0.9.20.orig/src/modules/alsa/mixer/paths/analog-output.conf 2009-11-12 19:26:22.000000000 -0500 ++++ pulseaudio-0.9.20/src/modules/alsa/mixer/paths/analog-output.conf 2009-11-12 19:26:38.000000000 -0500 +@@ -34,6 +34,12 @@ + override-map.1 = all + override-map.2 = all-left,all-right + ++[Element Master Front] ++switch = mute ++volume = merge ++override-map.1 = all ++override-map.2 = front-left,front-right ++ + [Element Master Mono] + switch = off + volume = off --- pulseaudio-1.1.orig/debian/patches/0017-Hack-around-a-bug-in-the-core-causing-volumes-not-to.patch +++ pulseaudio-1.1/debian/patches/0017-Hack-around-a-bug-in-the-core-causing-volumes-not-to.patch @@ -0,0 +1,146 @@ +From 96170c8cbbb6826b086f2746609637571598e338 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Thu, 13 Oct 2011 12:52:15 +0200 +Subject: [PATCH] Hack around a bug in the core causing volumes not to be set + on port change. + +Two problems: + 1) Old volume is lingering in some variables after port change + 2) If there's nothing in m-d-r database, volume is not updated for the new port + +After some talk with Colin Guthrie this morning, I believe a better long-term +fix would be to have per port volumes stored in the core, and not retrieving +them from the database on port change, but such a change would be too heavy +for a stable release. +So this is more of a quick hack. + +Signed-off-by: David Henningsson +--- + src/modules/module-device-restore.c | 32 ++++++++++++++++++++++++++++++++ + src/pulsecore/sink.c | 4 +++- + 2 files changed, 35 insertions(+), 1 deletions(-) + +diff --git a/src/modules/module-device-restore.c b/src/modules/module-device-restore.c +index de98035..685a691 100644 +--- a/src/modules/module-device-restore.c ++++ b/src/modules/module-device-restore.c +@@ -812,6 +812,8 @@ static pa_hook_result_t sink_fixate_hook_callback(pa_core *c, pa_sink_new_data * + static pa_hook_result_t sink_port_hook_callback(pa_core *c, pa_sink *sink, struct userdata *u) { + char *name; + struct perportentry *e; ++ pa_cvolume old_volume; ++ pa_bool_t mute_was_set = FALSE, volume_was_set = FALSE, old_mute; + + pa_assert(c); + pa_assert(sink); +@@ -820,6 +822,12 @@ static pa_hook_result_t sink_port_hook_callback(pa_core *c, pa_sink *sink, struc + + name = pa_sprintf_malloc("sink:%s", sink->name); + ++ /* Hack 1: First pick up the old volumes, then make sure they are not lingering any more */ ++ old_volume = *pa_sink_get_volume(sink, FALSE); ++ old_mute = pa_sink_get_mute(sink, FALSE); ++ pa_sink_get_volume(sink, TRUE); ++ pa_sink_get_mute(sink, TRUE); ++ + if ((e = perportentry_read(u, name, (sink->active_port ? sink->active_port->name : NULL)))) { + + if (u->restore_volume && e->volume_valid) { +@@ -832,6 +840,7 @@ static pa_hook_result_t sink_port_hook_callback(pa_core *c, pa_sink *sink, struc + pa_cvolume_remap(&v, &e->channel_map, &sink->channel_map); + pa_sink_set_volume(sink, &v, TRUE, FALSE); + sink->save_volume = TRUE; ++ volume_was_set = TRUE; + } + + if (u->restore_muted && e->muted_valid) { +@@ -839,6 +848,7 @@ static pa_hook_result_t sink_port_hook_callback(pa_core *c, pa_sink *sink, struc + pa_log_info("Restoring mute state for sink %s.", sink->name); + pa_sink_set_mute(sink, e->muted, FALSE); + sink->save_muted = TRUE; ++ mute_was_set = TRUE; + } + + perportentry_free(e); +@@ -846,6 +856,12 @@ static pa_hook_result_t sink_port_hook_callback(pa_core *c, pa_sink *sink, struc + + pa_xfree(name); + ++ /* Hack 2: Work around volume not set correctly in core on port change */ ++ if (!volume_was_set) ++ pa_sink_set_volume(sink, &old_volume, TRUE, FALSE); ++ if (!mute_was_set) ++ pa_sink_set_mute(sink, old_mute, FALSE); ++ + return PA_HOOK_OK; + } + +@@ -953,6 +969,8 @@ static pa_hook_result_t source_fixate_hook_callback(pa_core *c, pa_source_new_da + static pa_hook_result_t source_port_hook_callback(pa_core *c, pa_source *source, struct userdata *u) { + char *name; + struct perportentry *e; ++ pa_cvolume old_volume; ++ pa_bool_t mute_was_set = FALSE, volume_was_set = FALSE, old_mute; + + pa_assert(c); + pa_assert(source); +@@ -961,6 +979,12 @@ static pa_hook_result_t source_port_hook_callback(pa_core *c, pa_source *source, + + name = pa_sprintf_malloc("source:%s", source->name); + ++ /* Hack 1: First pick up the old volumes, then make sure they are not lingering any more */ ++ old_volume = *pa_source_get_volume(source, FALSE); ++ old_mute = pa_source_get_mute(source, FALSE); ++ pa_source_get_volume(source, TRUE); ++ pa_source_get_mute(source, TRUE); ++ + if ((e = perportentry_read(u, name, (source->active_port ? source->active_port->name : NULL)))) { + + if (u->restore_volume && e->volume_valid) { +@@ -973,6 +997,7 @@ static pa_hook_result_t source_port_hook_callback(pa_core *c, pa_source *source, + pa_cvolume_remap(&v, &e->channel_map, &source->channel_map); + pa_source_set_volume(source, &v, TRUE, FALSE); + source->save_volume = TRUE; ++ volume_was_set = TRUE; + } + + if (u->restore_muted && e->muted_valid) { +@@ -980,6 +1005,7 @@ static pa_hook_result_t source_port_hook_callback(pa_core *c, pa_source *source, + pa_log_info("Restoring mute state for source %s.", source->name); + pa_source_set_mute(source, e->muted, FALSE); + source->save_muted = TRUE; ++ mute_was_set = TRUE; + } + + perportentry_free(e); +@@ -987,6 +1013,12 @@ static pa_hook_result_t source_port_hook_callback(pa_core *c, pa_source *source, + + pa_xfree(name); + ++ /* Hack 2: Work around volume not set correctly in core on port change */ ++ if (!volume_was_set) ++ pa_source_set_volume(source, &old_volume, TRUE, FALSE); ++ if (!mute_was_set) ++ pa_source_set_mute(source, old_mute, FALSE); ++ + return PA_HOOK_OK; + } + +diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c +index 53cab32..d59ea38 100644 +--- a/src/pulsecore/sink.c ++++ b/src/pulsecore/sink.c +@@ -2573,7 +2573,9 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, int64_t offse + + if ((s->flags & PA_SINK_DEFERRED_VOLUME) && s->get_volume) { + s->get_volume(s); +- pa_sink_volume_change_flush(s); ++ /* pa_sink_volume_change_flush(s); */ ++ if (s->thread_info.volume_changes) ++ pa_log_debug("NOT removing volume change on the get_volume call"); + pa_sw_cvolume_divide(&s->thread_info.current_hw_volume, &s->real_volume, &s->soft_volume); + } + +-- +1.7.5.4 + --- pulseaudio-1.1.orig/debian/patches/0107-tunnel-fixup-create_record_stream.patch +++ pulseaudio-1.1/debian/patches/0107-tunnel-fixup-create_record_stream.patch @@ -0,0 +1,117 @@ +From 811235d14c511cea1884fb967a81cfb395afbf08 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Mon, 30 Jan 2012 16:47:54 +0100 +Subject: [PATCH] tunnel: fixup create_record_stream + +The tunnel source has been broken since protocol v22 (PA 1.0), +and connecting fails with a protocol error. Fix. + +BugLink: https://bugs.launchpad.net/bugs/923661 +Signed-off-by: David Henningsson +--- + src/modules/module-tunnel.c | 60 ++++++++++++++++++++++++++++--------------- + 1 files changed, 39 insertions(+), 21 deletions(-) + +diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c +index a667e21..0916717 100644 +--- a/src/modules/module-tunnel.c ++++ b/src/modules/module-tunnel.c +@@ -1031,6 +1031,28 @@ static int read_ports(struct userdata *u, pa_tagstruct *t) + return 0; + } + ++ ++static int read_formats(struct userdata *u, pa_tagstruct *t) { ++ uint8_t n_formats; ++ pa_format_info *format; ++ ++ if (pa_tagstruct_getu8(t, &n_formats) < 0) { /* no. of formats */ ++ pa_log("Parse failure"); ++ return -PA_ERR_PROTOCOL; ++ } ++ ++ for (uint8_t j = 0; j < n_formats; j++) { ++ format = pa_format_info_new(); ++ if (pa_tagstruct_get_format_info(t, format)) { /* format info */ ++ pa_format_info_free(format); ++ pa_log("Parse failure"); ++ return -PA_ERR_PROTOCOL; ++ } ++ pa_format_info_free(format); ++ } ++ return 0; ++} ++ + #ifdef TUNNEL_SINK + + /* Called from main context */ +@@ -1104,25 +1126,8 @@ static void sink_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_t + if (read_ports(u, t) < 0) + goto fail; + +- if (u->version >= 21) { +- uint8_t n_formats; +- pa_format_info *format; +- +- if (pa_tagstruct_getu8(t, &n_formats) < 0) { /* no. of formats */ +- pa_log("Parse failure"); +- goto fail; +- } +- +- for (uint8_t j = 0; j < n_formats; j++) { +- format = pa_format_info_new(); +- if (pa_tagstruct_get_format_info(t, format)) { /* format info */ +- pa_format_info_free(format); +- pa_log("Parse failure"); +- goto fail; +- } +- pa_format_info_free(format); +- } +- } ++ if (u->version >= 21 && read_formats(u, t) < 0) ++ goto fail; + + if (!pa_tagstruct_eof(t)) { + pa_log("Packet too long"); +@@ -1332,6 +1337,9 @@ static void source_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa + if (read_ports(u, t) < 0) + goto fail; + ++ if (u->version >= 22 && read_formats(u, t) < 0) ++ goto fail; ++ + if (!pa_tagstruct_eof(t)) { + pa_log("Packet too long"); + goto fail; +@@ -1568,9 +1576,7 @@ static void setup_complete_callback(pa_pdispatch *pd, uint32_t command, uint32_t + struct userdata *u = userdata; + pa_tagstruct *reply; + char name[256], un[128], hn[128]; +-#ifdef TUNNEL_SINK + pa_cvolume volume; +-#endif + + pa_assert(pd); + pa_assert(u); +@@ -1743,6 +1749,18 @@ static void setup_complete_callback(pa_pdispatch *pd, uint32_t command, uint32_t + /* We're not using the extended API, so n_formats = 0 and that's that */ + pa_tagstruct_putu8(reply, 0); + } ++#else ++ if (u->version >= 22) { ++ /* We're not using the extended API, so n_formats = 0 and that's that */ ++ pa_tagstruct_putu8(reply, 0); ++ pa_cvolume_reset(&volume, u->source->sample_spec.channels); ++ pa_tagstruct_put_cvolume(reply, &volume); ++ pa_tagstruct_put_boolean(reply, FALSE); /* muted */ ++ pa_tagstruct_put_boolean(reply, FALSE); /* volume_set */ ++ pa_tagstruct_put_boolean(reply, FALSE); /* muted_set */ ++ pa_tagstruct_put_boolean(reply, FALSE); /* relative volume */ ++ pa_tagstruct_put_boolean(reply, FALSE); /* passthrough stream */ ++ } + #endif + + pa_pstream_send_tagstruct(u->pstream, reply); +-- +1.7.9 + --- pulseaudio-1.1.orig/debian/patches/0106-pulse-Fix-old-bug-in-stream_free.patch +++ pulseaudio-1.1/debian/patches/0106-pulse-Fix-old-bug-in-stream_free.patch @@ -0,0 +1,29 @@ +From e91e78bb54456eda7f815afdb25857fe0887de22 Mon Sep 17 00:00:00 2001 +From: Maarten Lankhorst +Date: Wed, 15 Feb 2012 02:09:02 +0100 +Subject: [PATCH] pulse: Fix old bug in stream_free + +Signed-off-by: Maarten Lankhorst +--- + src/pulse/stream.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/pulse/stream.c b/src/pulse/stream.c +index 0a96ced..6115cef 100644 +--- a/src/pulse/stream.c ++++ b/src/pulse/stream.c +@@ -284,8 +284,9 @@ static void stream_free(pa_stream *s) { + stream_unlink(s); + + if (s->write_memblock) { +- pa_memblock_release(s->write_memblock); +- pa_memblock_unref(s->write_data); ++ if (s->write_data) ++ pa_memblock_release(s->write_memblock); ++ pa_memblock_unref(s->write_memblock); + } + + if (s->peek_memchunk.memblock) { +-- +1.7.9 + --- pulseaudio-1.1.orig/debian/patches/0605-cli-Show-card-ports-and-jack-detection-status.patch +++ pulseaudio-1.1/debian/patches/0605-cli-Show-card-ports-and-jack-detection-status.patch @@ -0,0 +1,95 @@ +From 9699881db0bb8734b3deaf8b26be4600708572d9 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 25 Nov 2011 15:17:15 +0100 +Subject: [PATCH 605/614] cli: Show card ports and jack detection status + +Expose the new stuff through pacmd. + +Signed-off-by: David Henningsson +--- + src/pulsecore/cli-text.c | 48 +++++++++++++++++++++++++++++---------------- + 1 files changed, 31 insertions(+), 17 deletions(-) + +diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c +index 5498744..2253635 100644 +--- a/src/pulsecore/cli-text.c ++++ b/src/pulsecore/cli-text.c +@@ -102,6 +102,33 @@ char *pa_client_list_to_string(pa_core *c) { + return pa_strbuf_tostring_free(s); + } + ++static const char *port_available_to_string(pa_port_available_t a) { ++ switch (a) { ++ case PA_PORT_AVAILABLE_UNKNOWN: ++ return "unknown"; ++ case PA_PORT_AVAILABLE_NO: ++ return "no"; ++ case PA_PORT_AVAILABLE_YES: ++ return "yes"; ++ default: ++ return "invalid"; /* Should never happen! */ ++ } ++} ++ ++static void append_port_list(pa_strbuf *s, pa_hashmap *ports) ++{ ++ pa_device_port *p; ++ void *state; ++ ++ if (!ports) ++ return; ++ ++ pa_strbuf_puts(s, "\tports:\n"); ++ PA_HASHMAP_FOREACH(p, ports, state) ++ pa_strbuf_printf(s, "\t\t%s: %s (priority %u, available: %s)\n", ++ p->name, p->description, p->priority, port_available_to_string(p->available)); ++} ++ + char *pa_card_list_to_string(pa_core *c) { + pa_strbuf *s; + pa_card *card; +@@ -160,6 +187,8 @@ char *pa_card_list_to_string(pa_core *c) { + for (source = pa_idxset_first(card->sources, &sidx); source; source = pa_idxset_next(card->sources, &sidx)) + pa_strbuf_printf(s, "\t\t%s/#%u: %s\n", source->name, source->index, pa_strna(pa_proplist_gets(source->proplist, PA_PROP_DEVICE_DESCRIPTION))); + } ++ ++ append_port_list(s, card->ports); + } + + return pa_strbuf_tostring_free(s); +@@ -306,15 +335,7 @@ char *pa_sink_list_to_string(pa_core *c) { + pa_strbuf_printf(s, "\tproperties:\n\t\t%s\n", t); + pa_xfree(t); + +- if (sink->ports) { +- pa_device_port *p; +- void *state; +- +- pa_strbuf_puts(s, "\tports:\n"); +- PA_HASHMAP_FOREACH(p, sink->ports, state) +- pa_strbuf_printf(s, "\t\t%s: %s (priority %u)\n", p->name, p->description, p->priority); +- } +- ++ append_port_list(s, sink->ports); + + if (sink->active_port) + pa_strbuf_printf( +@@ -429,14 +450,7 @@ char *pa_source_list_to_string(pa_core *c) { + pa_strbuf_printf(s, "\tproperties:\n\t\t%s\n", t); + pa_xfree(t); + +- if (source->ports) { +- pa_device_port *p; +- void *state; +- +- pa_strbuf_puts(s, "\tports:\n"); +- PA_HASHMAP_FOREACH(p, source->ports, state) +- pa_strbuf_printf(s, "\t\t%s: %s (priority %u)\n", p->name, p->description, p->priority); +- } ++ append_port_list(s, source->ports); + + if (source->active_port) + pa_strbuf_printf( +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0003-esd-honour-system-pulseaudio.patch +++ pulseaudio-1.1/debian/patches/0003-esd-honour-system-pulseaudio.patch @@ -0,0 +1,17 @@ +diff -urN pulseaudio-0.9.14/src/daemon/esdcompat.in pulseaudio-0.9.14.new/src/daemon/esdcompat.in +--- pulseaudio-0.9.14/src/daemon/esdcompat.in 2009-03-27 10:24:57.000000000 +1100 ++++ pulseaudio-0.9.14.new/src/daemon/esdcompat.in 2009-03-27 10:30:36.000000000 +1100 +@@ -24,6 +24,13 @@ + exit 1 + } + ++PULSEAUDIO_SYSTEM_START=0 ++test -f /etc/default/pulseaudio && . /etc/default/pulseaudio ++ ++if [ ! $PULSEAUDIO_SYSTEM_START -eq 0 ]; then ++ exit 0 ++fi ++ + ARGS=" --log-target=syslog" + + while [ "$#" -gt "0" ]; do --- pulseaudio-1.1.orig/debian/patches/0613-Add-a-new-module-switch-on-port-available-that-acts-.patch +++ pulseaudio-1.1/debian/patches/0613-Add-a-new-module-switch-on-port-available-that-acts-.patch @@ -0,0 +1,291 @@ +From d1ce4c0aea23af9d3007cb91e3a5c76ff67bc7cc Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Thu, 23 Feb 2012 07:17:04 +0100 +Subject: [PATCH 01/17] Add a new module switch-on-port-available that acts on + port changes + +This module tries to switch to a port when availability changes to +"YES", and tries to switch away when availability changes to "NO". + +Once there is a priority list infrastructure in place and ready, +this functionality might be redundant, but this will do as an +interim solution. +--- + src/Makefile.am | 6 + + src/modules/module-switch-on-port-available.c | 233 +++++++++++++++++++++++++ + 2 files changed, 239 insertions(+), 0 deletions(-) + create mode 100644 src/modules/module-switch-on-port-available.c + +diff --git a/src/Makefile.am b/src/Makefile.am +index f232151..b07c60a 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -1013,6 +1013,7 @@ modlibexec_LTLIBRARIES += \ + module-virtual-source.la \ + module-virtual-surround-sink.la \ + module-switch-on-connect.la \ ++ module-switch-on-port-available.la \ + module-filter-apply.la \ + module-filter-heuristics.la + +@@ -1319,6 +1320,7 @@ SYMDEF_FILES = \ + module-virtual-source-symdef.h \ + module-virtual-surround-sink-symdef.h \ + module-switch-on-connect-symdef.h \ ++ module-switch-on-port-available-symdef.h \ + module-filter-apply-symdef.h \ + module-filter-heuristics-symdef.h + +@@ -1485,6 +1487,10 @@ module_switch_on_connect_la_SOURCES = modules/module-switch-on-connect.c + module_switch_on_connect_la_LDFLAGS = $(MODULE_LDFLAGS) + module_switch_on_connect_la_LIBADD = $(MODULE_LIBADD) + ++module_switch_on_port_available_la_SOURCES = modules/module-switch-on-port-available.c ++module_switch_on_port_available_la_LDFLAGS = $(MODULE_LDFLAGS) ++module_switch_on_port_available_la_LIBADD = $(MODULE_LIBADD) ++ + module_filter_apply_la_SOURCES = modules/module-filter-apply.c + module_filter_apply_la_LDFLAGS = $(MODULE_LDFLAGS) + module_filter_apply_la_LIBADD = $(MODULE_LIBADD) +diff --git a/src/modules/module-switch-on-port-available.c b/src/modules/module-switch-on-port-available.c +new file mode 100644 +index 0000000..9149b6d +--- /dev/null ++++ b/src/modules/module-switch-on-port-available.c +@@ -0,0 +1,233 @@ ++/*** ++ This file is part of PulseAudio. ++ ++ Copyright 2006 Lennart Poettering ++ Copyright 2011 Canonical Ltd ++ ++ PulseAudio is free software; you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as published ++ by the Free Software Foundation; either version 2.1 of the License, ++ or (at your option) any later version. ++ ++ PulseAudio is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with PulseAudio; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++ USA. ++***/ ++ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++ ++#include ++#include ++#include ++ ++#include "module-switch-on-port-available-symdef.h" ++ ++struct userdata { ++ pa_hook_slot *callback_slot; ++}; ++ ++static pa_device_port* find_best_port(pa_hashmap *ports) { ++ void *state; ++ pa_device_port* port, *result = NULL; ++ ++ PA_HASHMAP_FOREACH(port, ports, state) { ++ if (result == NULL || ++ result->available == PA_PORT_AVAILABLE_NO || ++ (port->available != PA_PORT_AVAILABLE_NO && port->priority > result->priority)) { ++ result = port; ++ } ++ } ++ ++ return result; ++} ++ ++static pa_bool_t try_to_switch_profile(pa_card *card, pa_device_port *port) { ++ pa_card_profile *best_profile = NULL, *profile; ++ void *state; ++ ++ pa_log_debug("Finding best profile"); ++ ++ if (port->profiles) ++ PA_HASHMAP_FOREACH(profile, port->profiles, state) { ++ if (best_profile && best_profile->priority >= profile->priority) ++ continue; ++ ++ /* We make a best effort to keep other direction unchanged */ ++ if (card->active_profile && !port->is_input) { ++ if (card->active_profile->n_sources != profile->n_sources) ++ continue; ++ ++ if (card->active_profile->max_source_channels != profile->max_source_channels) ++ continue; ++ } ++ ++ if (card->active_profile && !port->is_output) { ++ if (card->active_profile->n_sinks != profile->n_sinks) ++ continue; ++ ++ if (card->active_profile->max_sink_channels != profile->max_sink_channels) ++ continue; ++ } ++ ++ best_profile = profile; ++ } ++ ++ if (!best_profile) { ++ pa_log_debug("No suitable profile found"); ++ return FALSE; ++ } ++ ++ if (pa_card_set_profile(card, best_profile->name, FALSE) != 0) { ++ pa_log_debug("Could not set profile %s", best_profile->name); ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++static void find_sink_and_source(pa_card *card, pa_device_port *port, pa_sink **si, pa_source **so) ++{ ++ pa_sink *sink = NULL; ++ pa_source *source = NULL; ++ uint32_t state; ++ ++ if (port->is_output) ++ PA_IDXSET_FOREACH(sink, card->sinks, state) ++ if (sink->ports && port == pa_hashmap_get(sink->ports, port->name)) ++ break; ++ ++ if (port->is_input) ++ PA_IDXSET_FOREACH(source, card->sources, state) ++ if (source->ports && port == pa_hashmap_get(source->ports, port->name)) ++ break; ++ ++ *si = sink; ++ *so = source; ++} ++ ++static pa_hook_result_t port_available_hook_callback(pa_core *c, pa_device_port *port, void* userdata) { ++ uint32_t state; ++ pa_card* card; ++ pa_sink *sink; ++ pa_source *source; ++ pa_bool_t is_active_profile, is_active_port; ++ ++ pa_log_debug("finding port %s", port->name); ++ ++ PA_IDXSET_FOREACH(card, c->cards, state) ++ if (card->ports && port == pa_hashmap_get(card->ports, port->name)) ++ break; ++ ++ if (!card) { ++ pa_log_warn("Did not find port %s in array of cards", port->name); ++ return PA_HOOK_OK; ++ } ++ ++ find_sink_and_source(card, port, &sink, &source); ++ ++ is_active_profile = port->profiles && card->active_profile && ++ card->active_profile == pa_hashmap_get(port->profiles, card->active_profile->name); ++ is_active_port = (sink && sink->active_port == port) || (source && source->active_port == port); ++ ++ if (port->available == PA_PORT_AVAILABLE_NO && !is_active_port) ++ return PA_HOOK_OK; ++ ++ if (port->available == PA_PORT_AVAILABLE_YES) { ++ if (is_active_port) ++ return PA_HOOK_OK; ++ ++ if (!is_active_profile) { ++ if (!try_to_switch_profile(card, port)) ++ return PA_HOOK_OK; ++ ++ pa_assert(card->active_profile == pa_hashmap_get(port->profiles, card->active_profile->name)); ++ ++ /* Now that profile has changed, our sink and source pointers must be updated */ ++ find_sink_and_source(card, port, &sink, &source); ++ } ++ ++ if (source) ++ pa_source_set_port(source, port->name, FALSE); ++ if (sink) ++ pa_sink_set_port(sink, port->name, FALSE); ++ } ++ ++ if (port->available == PA_PORT_AVAILABLE_NO) { ++ if (sink) { ++ pa_device_port *p2 = find_best_port(sink->ports); ++ ++ if (p2 && p2->available != PA_PORT_AVAILABLE_NO) ++ pa_sink_set_port(sink, p2->name, FALSE); ++ else { ++ /* Maybe try to switch to another profile? */ ++ } ++ } ++ ++ if (source) { ++ pa_device_port *p2 = find_best_port(source->ports); ++ ++ if (p2 && p2->available != PA_PORT_AVAILABLE_NO) ++ pa_source_set_port(source, p2->name, FALSE); ++ else { ++ /* Maybe try to switch to another profile? */ ++ } ++ } ++ } ++ ++ return PA_HOOK_OK; ++} ++ ++static void handle_all_unavailable(pa_core *core) { ++ pa_card *card; ++ uint32_t state; ++ ++ PA_IDXSET_FOREACH(card, core->cards, state) { ++ pa_device_port *port; ++ void *state2; ++ ++ if (!card->ports) ++ continue; ++ ++ PA_HASHMAP_FOREACH(port, card->ports, state2) { ++ if (port->available == PA_PORT_AVAILABLE_NO) ++ port_available_hook_callback(core, port, NULL); ++ } ++ } ++} ++ ++int pa__init(pa_module*m) { ++ struct userdata *u; ++ ++ pa_assert(m); ++ ++ m->userdata = u = pa_xnew(struct userdata, 1); ++ ++ u->callback_slot = pa_hook_connect(&m->core->hooks[PA_CORE_HOOK_PORT_AVAILABLE_CHANGED], ++ PA_HOOK_LATE, (pa_hook_cb_t) port_available_hook_callback, u); ++ ++ handle_all_unavailable(m->core); ++ ++ return 0; ++} ++ ++void pa__done(pa_module*m) { ++ struct userdata *u; ++ ++ pa_assert(m); ++ ++ if (!(u = m->userdata)) ++ return; ++ ++ if (u->callback_slot) ++ pa_hook_slot_free(u->callback_slot); ++ ++ pa_xfree(u); ++} +-- +1.7.9.1 + --- pulseaudio-1.1.orig/debian/patches/0609-device-port-Add-a-property-list-to-ports.patch +++ pulseaudio-1.1/debian/patches/0609-device-port-Add-a-property-list-to-ports.patch @@ -0,0 +1,77 @@ +From a22c813f350dc027a96fed175ce21d5215c2662e Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 2 Dec 2011 13:34:54 +0100 +Subject: [PATCH 609/614] device-port: Add a property list to ports. + +They're not used for anything yet, but hopefully soon they'll be. + +Signed-off-by: David Henningsson +--- + src/pulsecore/cli-text.c | 6 +++++- + src/pulsecore/device-port.c | 3 +++ + src/pulsecore/device-port.h | 2 ++ + 3 files changed, 10 insertions(+), 1 deletions(-) + +diff --git a/src/pulsecore/cli-text.c b/src/pulsecore/cli-text.c +index 2253635..4823924 100644 +--- a/src/pulsecore/cli-text.c ++++ b/src/pulsecore/cli-text.c +@@ -124,9 +124,13 @@ static void append_port_list(pa_strbuf *s, pa_hashmap *ports) + return; + + pa_strbuf_puts(s, "\tports:\n"); +- PA_HASHMAP_FOREACH(p, ports, state) ++ PA_HASHMAP_FOREACH(p, ports, state) { ++ char *t = pa_proplist_to_string_sep(p->proplist, "\n\t\t\t\t"); + pa_strbuf_printf(s, "\t\t%s: %s (priority %u, available: %s)\n", + p->name, p->description, p->priority, port_available_to_string(p->available)); ++ pa_strbuf_printf(s, "\t\t\tproperties:\n\t\t\t\t%s\n", t); ++ pa_xfree(t); ++ } + } + + char *pa_card_list_to_string(pa_core *c) { +diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c +index 7988649..30fb025 100644 +--- a/src/pulsecore/device-port.c ++++ b/src/pulsecore/device-port.c +@@ -70,6 +70,8 @@ static void device_port_free(pa_object *o) { + pa_assert(p); + pa_assert(pa_device_port_refcnt(p) == 0); + ++ if (p->proplist) ++ pa_proplist_free(p->proplist); + if (p->profiles) + pa_hashmap_free(p->profiles, NULL, NULL); + pa_xfree(p->name); +@@ -94,6 +96,7 @@ pa_device_port *pa_device_port_new(pa_core *c, const char *name, const char *des + p->profiles = NULL; + p->is_input = FALSE; + p->is_output = FALSE; ++ p->proplist = pa_proplist_new(); + + return p; + } +diff --git a/src/pulsecore/device-port.h b/src/pulsecore/device-port.h +index f387021..5848b5a 100644 +--- a/src/pulsecore/device-port.h ++++ b/src/pulsecore/device-port.h +@@ -32,6 +32,7 @@ + #include + + #include ++#include + #include + #include + +@@ -51,6 +52,7 @@ struct pa_device_port { + unsigned priority; + pa_port_available_t available; /* PA_PORT_AVAILABLE_UNKNOWN, PA_PORT_AVAILABLE_NO or PA_PORT_AVAILABLE_YES */ + ++ pa_proplist *proplist; + pa_hashmap *profiles; /* Can be NULL. Does not own the profiles */ + pa_bool_t is_input:1; + pa_bool_t is_output:1; +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0016-nodisplay-autostart.patch +++ pulseaudio-1.1/debian/patches/0016-nodisplay-autostart.patch @@ -0,0 +1,14 @@ +Description: Clean up Startup Applications dialog by hiding default apps +Author: Michael Terry +Bug-Ubuntu: https://launchpad.net/bugs/803917 +Forwarded: not-needed + +Index: pulseaudio/src/daemon/pulseaudio.desktop.in +=================================================================== +--- pulseaudio.orig/src/daemon/pulseaudio.desktop.in 2011-07-01 12:54:23.961825964 +0100 ++++ pulseaudio/src/daemon/pulseaudio.desktop.in 2011-07-01 12:54:53.437826276 +0100 +@@ -10,3 +10,4 @@ + Categories= + GenericName= + X-GNOME-Autostart-Delay=8 ++NoDisplay=true --- pulseaudio-1.1.orig/debian/patches/0102-alsa-mixer-When-selecting-an-input-turn-off-boosts-o.patch +++ pulseaudio-1.1/debian/patches/0102-alsa-mixer-When-selecting-an-input-turn-off-boosts-o.patch @@ -0,0 +1,214 @@ +From 59050948896a763afd32118a03ad259094bfa54e Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Tue, 20 Dec 2011 09:16:02 +0100 +Subject: [PATCH] alsa-mixer: When selecting an input, turn off boosts of + other inputs + +Just like we turn off the "Front Mic" element when we select "Rear Mic", +we should also turn off the "Front Mic Boost" element. And the same for +the other inputs. + +Reported-by: Len Owens +Signed-off-by: David Henningsson +--- + .../alsa/mixer/paths/analog-input-dock-mic.conf | 16 +++++++ + .../alsa/mixer/paths/analog-input-front-mic.conf | 16 +++++++ + .../mixer/paths/analog-input-internal-mic.conf | 16 +++++++ + .../alsa/mixer/paths/analog-input-linein.conf | 47 ++++++++++++++++--- + src/modules/alsa/mixer/paths/analog-input-mic.conf | 16 +++++++ + .../alsa/mixer/paths/analog-input-rear-mic.conf | 16 +++++++ + 6 files changed, 119 insertions(+), 8 deletions(-) + +diff --git a/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf b/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf +index 489cf90..afac273 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf +@@ -78,4 +78,20 @@ volume = off + switch = off + volume = off + ++[Element Mic Boost] ++switch = off ++volume = off ++ ++[Element Internal Mic Boost] ++switch = off ++volume = off ++ ++[Element Front Mic Boost] ++switch = off ++volume = off ++ ++[Element Rear Mic Boost] ++switch = off ++volume = off ++ + .include analog-input-mic.conf.common +diff --git a/src/modules/alsa/mixer/paths/analog-input-front-mic.conf b/src/modules/alsa/mixer/paths/analog-input-front-mic.conf +index 5ae516c..852e7e9 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-front-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-front-mic.conf +@@ -78,4 +78,20 @@ volume = off + switch = off + volume = off + ++[Element Mic Boost] ++switch = off ++volume = off ++ ++[Element Dock Mic Boost] ++switch = off ++volume = off ++ ++[Element Internal Mic Boost] ++switch = off ++volume = off ++ ++[Element Rear Mic Boost] ++switch = off ++volume = off ++ + .include analog-input-mic.conf.common +diff --git a/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf b/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf +index 70a1cd1..dd40075 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf +@@ -108,4 +108,20 @@ volume = off + switch = off + volume = off + ++[Element Mic Boost] ++switch = off ++volume = off ++ ++[Element Dock Mic Boost] ++switch = off ++volume = off ++ ++[Element Front Mic Boost] ++switch = off ++volume = off ++ ++[Element Rear Mic Boost] ++switch = off ++volume = off ++ + .include analog-input-mic.conf.common +diff --git a/src/modules/alsa/mixer/paths/analog-input-linein.conf b/src/modules/alsa/mixer/paths/analog-input-linein.conf +index 038f649..a432d6e 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-linein.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-linein.conf +@@ -27,14 +27,6 @@ volume = merge + override-map.1 = all + override-map.2 = all-left,all-right + +-[Element Mic] +-switch = off +-volume = off +- +-[Element Internal Mic] +-switch = off +-volume = off +- + [Element Line Boost] + required-any = any + switch = mute +@@ -63,6 +55,45 @@ enumeration = select + name = analog-input-linein + required-any = any + ++[Element Mic] ++switch = off ++volume = off ++ ++[Element Dock Mic] ++switch = off ++volume = off ++ ++[Element Internal Mic] ++switch = off ++volume = off ++ ++[Element Front Mic] ++switch = off ++volume = off ++ ++[Element Rear Mic] ++switch = off ++volume = off ++ ++[Element Mic Boost] ++switch = off ++volume = off ++ ++[Element Dock Mic Boost] ++switch = off ++volume = off ++ ++[Element Internal Mic Boost] ++switch = off ++volume = off ++ ++[Element Front Mic Boost] ++switch = off ++volume = off ++ ++[Element Rear Mic Boost] ++switch = off ++volume = off + + [Element Aux] + switch = off +diff --git a/src/modules/alsa/mixer/paths/analog-input-mic.conf b/src/modules/alsa/mixer/paths/analog-input-mic.conf +index 50d4c45..4cebc4e 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-mic.conf +@@ -101,4 +101,20 @@ volume = off + switch = off + volume = off + ++[Element Dock Mic Boost] ++switch = off ++volume = off ++ ++[Element Internal Mic Boost] ++switch = off ++volume = off ++ ++[Element Front Mic Boost] ++switch = off ++volume = off ++ ++[Element Rear Mic Boost] ++switch = off ++volume = off ++ + .include analog-input-mic.conf.common +diff --git a/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf b/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf +index 4046106..e2b2671 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf +@@ -78,4 +78,20 @@ volume = off + switch = off + volume = off + ++[Element Mic Boost] ++switch = off ++volume = off ++ ++[Element Dock Mic Boost] ++switch = off ++volume = off ++ ++[Element Internal Mic Boost] ++switch = off ++volume = off ++ ++[Element Front Mic Boost] ++switch = off ++volume = off ++ + .include analog-input-mic.conf.common +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0602-Turn-device-ports-into-reference-counted-objects.patch +++ pulseaudio-1.1/debian/patches/0602-Turn-device-ports-into-reference-counted-objects.patch @@ -0,0 +1,340 @@ +From d59a8b55f64655362eadc4d2ca5d01479a49dc7f Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 25 Nov 2011 15:17:12 +0100 +Subject: [PATCH 602/614] Turn device ports into reference counted objects + +Since both cards and sinks can hold references to a port, it makes +sense to reference count them. Although no current implementation +actually has sinks with ports but without a card, it felt wrong +to make it harder to make such an implementation in the future. + +Signed-off-by: David Henningsson +--- + src/Makefile.am | 1 + + src/pulsecore/device-port.c | 66 +++++++++++++++++++++++++++++++++++++++++++ + src/pulsecore/device-port.h | 61 +++++++++++++++++++++++++++++++++++++++ + src/pulsecore/sink.c | 41 ++------------------------ + src/pulsecore/sink.h | 17 +---------- + src/pulsecore/source.c | 20 ++---------- + src/pulsecore/source.h | 1 + + 7 files changed, 138 insertions(+), 69 deletions(-) + create mode 100644 src/pulsecore/device-port.c + create mode 100644 src/pulsecore/device-port.h + +diff --git a/src/Makefile.am b/src/Makefile.am +index e3af12f..7e5506d 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -814,6 +814,7 @@ libpulsecore_@PA_MAJORMINOR@_la_SOURCES = \ + pulsecore/shm.c pulsecore/shm.h \ + pulsecore/sink-input.c pulsecore/sink-input.h \ + pulsecore/sink.c pulsecore/sink.h \ ++ pulsecore/device-port.c pulsecore/device-port.h \ + pulsecore/sioman.c pulsecore/sioman.h \ + pulsecore/sound-file-stream.c pulsecore/sound-file-stream.h \ + pulsecore/sound-file.c pulsecore/sound-file.h \ +diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c +new file mode 100644 +index 0000000..09646ee +--- /dev/null ++++ b/src/pulsecore/device-port.c +@@ -0,0 +1,66 @@ ++/*** ++ This file is part of PulseAudio. ++ ++ Copyright 2004-2006 Lennart Poettering ++ Copyright 2006 Pierre Ossman for Cendio AB ++ Copyright 2011 David Henningsson, Canonical Ltd. ++ ++ PulseAudio is free software; you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as published ++ by the Free Software Foundation; either version 2.1 of the License, ++ or (at your option) any later version. ++ ++ PulseAudio is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with PulseAudio; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++ USA. ++***/ ++ ++ ++#include "device-port.h" ++ ++PA_DEFINE_PUBLIC_CLASS(pa_device_port, pa_object); ++ ++static void device_port_free(pa_object *o) { ++ pa_device_port *p = PA_DEVICE_PORT(o); ++ ++ pa_assert(p); ++ pa_assert(pa_device_port_refcnt(p) == 0); ++ ++ pa_xfree(p->name); ++ pa_xfree(p->description); ++ pa_xfree(p); ++} ++ ++ ++pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra) { ++ pa_device_port *p; ++ ++ pa_assert(name); ++ ++ p = PA_DEVICE_PORT(pa_object_new_internal(PA_ALIGN(sizeof(pa_device_port)) + extra, pa_device_port_type_id, pa_device_port_check_type)); ++ p->parent.free = device_port_free; ++ ++ p->name = pa_xstrdup(name); ++ p->description = pa_xstrdup(description); ++ p->priority = 0; ++ p->available = PA_PORT_AVAILABLE_UNKNOWN; ++ ++ return p; ++} ++ ++void pa_device_port_hashmap_free(pa_hashmap *h) { ++ pa_device_port *p; ++ ++ pa_assert(h); ++ ++ while ((p = pa_hashmap_steal_first(h))) ++ pa_device_port_unref(p); ++ ++ pa_hashmap_free(h, NULL, NULL); ++} +diff --git a/src/pulsecore/device-port.h b/src/pulsecore/device-port.h +new file mode 100644 +index 0000000..dfe3fc1 +--- /dev/null ++++ b/src/pulsecore/device-port.h +@@ -0,0 +1,61 @@ ++#ifndef foopulsedeviceporthfoo ++#define foopulsedeviceporthfoo ++ ++/*** ++ This file is part of PulseAudio. ++ ++ Copyright 2004-2006 Lennart Poettering ++ Copyright 2006 Pierre Ossman for Cendio AB ++ Copyright 2011 David Henningsson, Canonical Ltd. ++ ++ PulseAudio is free software; you can redistribute it and/or modify ++ it under the terms of the GNU Lesser General Public License as published ++ by the Free Software Foundation; either version 2.1 of the License, ++ or (at your option) any later version. ++ ++ PulseAudio is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with PulseAudio; if not, write to the Free Software ++ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++ USA. ++***/ ++ ++ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++ ++#include ++ ++#include ++#include ++#include ++ ++typedef struct pa_device_port pa_device_port; ++ ++struct pa_device_port { ++ pa_object parent; /* Needed for reference counting */ ++ ++ char *name; ++ char *description; ++ ++ unsigned priority; ++ pa_port_available_t available; /* PA_PORT_AVAILABLE_UNKNOWN, PA_PORT_AVAILABLE_NO or PA_PORT_AVAILABLE_YES */ ++ ++ /* .. followed by some implementation specific data */ ++}; ++ ++PA_DECLARE_PUBLIC_CLASS(pa_device_port); ++#define PA_DEVICE_PORT(s) (pa_device_port_cast(s)) ++ ++#define PA_DEVICE_PORT_DATA(d) ((void*) ((uint8_t*) d + PA_ALIGN(sizeof(pa_device_port)))) ++ ++pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra); ++ ++void pa_device_port_hashmap_free(pa_hashmap *h); ++ ++#endif +diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c +index a2642b4..0fb5d51 100644 +--- a/src/pulsecore/sink.c ++++ b/src/pulsecore/sink.c +@@ -132,40 +132,13 @@ void pa_sink_new_data_done(pa_sink_new_data *data) { + + pa_proplist_free(data->proplist); + +- if (data->ports) { +- pa_device_port *p; +- +- while ((p = pa_hashmap_steal_first(data->ports))) +- pa_device_port_free(p); +- +- pa_hashmap_free(data->ports, NULL, NULL); +- } ++ if (data->ports) ++ pa_device_port_hashmap_free(data->ports); + + pa_xfree(data->name); + pa_xfree(data->active_port); + } + +-pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra) { +- pa_device_port *p; +- +- pa_assert(name); +- +- p = pa_xmalloc(PA_ALIGN(sizeof(pa_device_port)) + extra); +- p->name = pa_xstrdup(name); +- p->description = pa_xstrdup(description); +- +- p->priority = 0; +- +- return p; +-} +- +-void pa_device_port_free(pa_device_port *p) { +- pa_assert(p); +- +- pa_xfree(p->name); +- pa_xfree(p->description); +- pa_xfree(p); +-} + + /* Called from main context */ + static void reset_callbacks(pa_sink *s) { +@@ -742,14 +715,8 @@ static void sink_free(pa_object *o) { + if (s->proplist) + pa_proplist_free(s->proplist); + +- if (s->ports) { +- pa_device_port *p; +- +- while ((p = pa_hashmap_steal_first(s->ports))) +- pa_device_port_free(p); +- +- pa_hashmap_free(s->ports, NULL, NULL); +- } ++ if (s->ports) ++ pa_device_port_hashmap_free(s->ports); + + pa_xfree(s); + } +diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h +index 669a3f5..bb4a165 100644 +--- a/src/pulsecore/sink.h ++++ b/src/pulsecore/sink.h +@@ -24,7 +24,6 @@ + ***/ + + typedef struct pa_sink pa_sink; +-typedef struct pa_device_port pa_device_port; + typedef struct pa_sink_volume_change pa_sink_volume_change; + + #include +@@ -43,6 +42,7 @@ typedef struct pa_sink_volume_change pa_sink_volume_change; + #include + #include + #include ++#include + #include + #include + #include +@@ -55,18 +55,6 @@ static inline pa_bool_t PA_SINK_IS_LINKED(pa_sink_state_t x) { + return x == PA_SINK_RUNNING || x == PA_SINK_IDLE || x == PA_SINK_SUSPENDED; + } + +-struct pa_device_port { +- char *name; +- char *description; +- +- unsigned priority; +- pa_port_available_t available; /* PA_PORT_AVAILABLE_UNKNOWN, PA_PORT_AVAILABLE_NO or PA_PORT_AVAILABLE_YES */ +- +- /* .. followed by some implementation specific data */ +-}; +- +-#define PA_DEVICE_PORT_DATA(d) ((void*) ((uint8_t*) d + PA_ALIGN(sizeof(pa_device_port)))) +- + /* A generic definition for void callback functions */ + typedef void(*pa_sink_cb_t)(pa_sink *s); + +@@ -489,9 +477,6 @@ void pa_sink_invalidate_requested_latency(pa_sink *s, pa_bool_t dynamic); + + pa_usec_t pa_sink_get_latency_within_thread(pa_sink *s); + +-pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra); +-void pa_device_port_free(pa_device_port *p); +- + /* Verify that we called in IO context (aka 'thread context), or that + * the sink is not yet set up, i.e. the thread not set up yet. See + * pa_assert_io_context() in thread-mq.h for more information. */ +diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c +index d47280c..d5d0fc7 100644 +--- a/src/pulsecore/source.c ++++ b/src/pulsecore/source.c +@@ -124,14 +124,8 @@ void pa_source_new_data_done(pa_source_new_data *data) { + + pa_proplist_free(data->proplist); + +- if (data->ports) { +- pa_device_port *p; +- +- while ((p = pa_hashmap_steal_first(data->ports))) +- pa_device_port_free(p); +- +- pa_hashmap_free(data->ports, NULL, NULL); +- } ++ if (data->ports) ++ pa_device_port_hashmap_free(data->ports); + + pa_xfree(data->name); + pa_xfree(data->active_port); +@@ -652,14 +646,8 @@ static void source_free(pa_object *o) { + if (s->proplist) + pa_proplist_free(s->proplist); + +- if (s->ports) { +- pa_device_port *p; +- +- while ((p = pa_hashmap_steal_first(s->ports))) +- pa_device_port_free(p); +- +- pa_hashmap_free(s->ports, NULL, NULL); +- } ++ if (s->ports) ++ pa_device_port_hashmap_free(s->ports); + + pa_xfree(s); + } +diff --git a/src/pulsecore/source.h b/src/pulsecore/source.h +index 949ae48..5c2dd30 100644 +--- a/src/pulsecore/source.h ++++ b/src/pulsecore/source.h +@@ -43,6 +43,7 @@ typedef struct pa_source_volume_change pa_source_volume_change; + #include + #include + #include ++#include + #include + #include + #include +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0013-Load-RAOP-Zeroconf-by-default.patch +++ pulseaudio-1.1/debian/patches/0013-Load-RAOP-Zeroconf-by-default.patch @@ -0,0 +1,25 @@ +Index: pulseaudio-0.99.1/src/daemon/default.pa.in +=================================================================== +--- pulseaudio-0.99.1.orig/src/daemon/default.pa.in 2011-08-03 12:10:49.000000000 +0200 ++++ pulseaudio-0.99.1/src/daemon/default.pa.in 2011-08-03 12:14:37.471235263 +0200 +@@ -112,6 +112,20 @@ + #load-module module-zeroconf-publish + ])dnl + ++### If the zeroconf/RAOP package is installed, load the module automatically. ++### TODO: Upstream thinks this should be done using gconf/paprefs instead. ++.ifexists module-zeroconf-discover@PA_SOEXT@ ++.nofail ++load-module module-zeroconf-discover ++.fail ++.endif ++.ifexists module-raop-discover@PA_SOEXT@ ++.nofail ++load-module module-raop-discover ++.fail ++.endif ++ ++ + ifelse(@OS_IS_WIN32@, 0, [dnl + ### Load the RTP receiver module (also configured via paprefs, see above) + #load-module module-rtp-recv --- pulseaudio-1.1.orig/debian/patches/0104-alsa-Improve-well-known-descriptions-for-ports.patch +++ pulseaudio-1.1/debian/patches/0104-alsa-Improve-well-known-descriptions-for-ports.patch @@ -0,0 +1,92 @@ +From 13e1c4bdeeda50fa2cfa3c975eeae1afd2314516 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Wed, 11 Jan 2012 15:40:08 +0100 +Subject: [PATCH 3/8] alsa: Improve "well known descriptions" for ports + + * If we don't have "Digital Speakers", we should say "Speakers" + instead of "Analog Speakers", and similar for other ports. + * Change "IEC958" to "S/PDIF" (more well known name) + * Add new ports and mappings for HDMI + * Change "Internal" to "Built-in" for the card name + +Signed-off-by: David Henningsson +--- + src/modules/alsa/alsa-mixer.c | 29 ++++++++++++++++------------- + src/pulsecore/sink.c | 2 +- + 2 files changed, 17 insertions(+), 14 deletions(-) + +diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c +index 2802231..d18f3b3 100644 +--- a/src/modules/alsa/alsa-mixer.c ++++ b/src/modules/alsa/alsa-mixer.c +@@ -2219,8 +2219,8 @@ static int option_verify(pa_alsa_option *o) { + { "input", N_("Input") }, + { "input-docking", N_("Docking Station Input") }, + { "input-docking-microphone", N_("Docking Station Microphone") }, +- { "input-docking-linein", N_("Docking Station Line-In") }, +- { "input-linein", N_("Line-In") }, ++ { "input-docking-linein", N_("Docking Station Line In") }, ++ { "input-linein", N_("Line In") }, + { "input-microphone", N_("Microphone") }, + { "input-microphone-front", N_("Front Microphone") }, + { "input-microphone-rear", N_("Rear Microphone") }, +@@ -2299,21 +2299,23 @@ static int element_verify(pa_alsa_element *e) { + static int path_verify(pa_alsa_path *p) { + static const struct description_map well_known_descriptions[] = { + { "analog-input", N_("Analog Input") }, +- { "analog-input-microphone", N_("Analog Microphone") }, ++ { "analog-input-microphone", N_("Microphone") }, + { "analog-input-microphone-front", N_("Front Microphone") }, + { "analog-input-microphone-rear", N_("Rear Microphone") }, +- { "analog-input-microphone-dock", N_("Docking Station Microphone") }, ++ { "analog-input-microphone-dock", N_("Dock Microphone") }, + { "analog-input-microphone-internal", N_("Internal Microphone") }, +- { "analog-input-linein", N_("Analog Line-In") }, +- { "analog-input-radio", N_("Analog Radio") }, +- { "analog-input-video", N_("Analog Video") }, ++ { "analog-input-linein", N_("Line In") }, ++ { "analog-input-radio", N_("Radio") }, ++ { "analog-input-video", N_("Video") }, + { "analog-output", N_("Analog Output") }, +- { "analog-output-headphones", N_("Analog Headphones") }, +- { "analog-output-lfe-on-mono", N_("Analog Output (LFE)") }, ++ { "analog-output-headphones", N_("Headphones") }, ++ { "analog-output-lfe-on-mono", N_("LFE on Separate Mono Output") }, ++ { "analog-output-lineout", N_("Line Out") }, + { "analog-output-mono", N_("Analog Mono Output") }, +- { "analog-output-speaker", N_("Analog Speakers") }, +- { "iec958-stereo-output", N_("Digital Output (IEC958)") }, +- { "iec958-passthrough-output", N_("Digital Passthrough (IEC958)") } ++ { "analog-output-speaker", N_("Speakers") }, ++ { "hdmi-output", N_("HDMI / DisplayPort") }, ++ { "iec958-stereo-output", N_("Digital Output (S/PDIF)") }, ++ { "iec958-passthrough-output", N_("Digital Passthrough (S/PDIF)") } + }; + + pa_alsa_element *e; +@@ -3768,7 +3770,8 @@ static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) { + { "iec958-passthrough", N_("Digital Passthrough (IEC958)") }, + { "iec958-ac3-surround-40", N_("Digital Surround 4.0 (IEC958/AC3)") }, + { "iec958-ac3-surround-51", N_("Digital Surround 5.1 (IEC958/AC3)") }, +- { "hdmi-stereo", N_("Digital Stereo (HDMI)") } ++ { "hdmi-stereo", N_("Digital Stereo (HDMI)") }, ++ { "hdmi-surround-51", N_("Digital Surround 5.1 (HDMI)") } + }; + + pa_assert(m); +diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c +index 81c6e9d..094292f 100644 +--- a/src/pulsecore/sink.c ++++ b/src/pulsecore/sink.c +@@ -3346,7 +3346,7 @@ pa_bool_t pa_device_init_description(pa_proplist *p) { + + if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_FORM_FACTOR))) + if (pa_streq(s, "internal")) +- d = _("Internal Audio"); ++ d = _("Built-in Audio"); + + if (!d) + if ((s = pa_proplist_gets(p, PA_PROP_DEVICE_CLASS))) +-- +1.7.8.3 + --- pulseaudio-1.1.orig/debian/patches/0021-Fix-input-device-for-M-audio-fasttrack-pro.patch +++ pulseaudio-1.1/debian/patches/0021-Fix-input-device-for-M-audio-fasttrack-pro.patch @@ -0,0 +1,31 @@ +From 2c1b3ec9655be8c6556bfd8136459955596eff6d Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Mon, 19 Mar 2012 11:54:12 +0100 +Subject: [PATCH] Fix input device for M-audio fasttrack pro + +For an unknown reason, on some M-audio fasttrack pro devices, +the input device is at index 1 instead of index 0. +We don't know why, but trying both seems to be a reasonable workaround. + +BugLink: https://bugs.launchpad.net/bugs/569932 +Signed-off-by: David Henningsson +--- + .../mixer/profile-sets/maudio-fasttrack-pro.conf | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/modules/alsa/mixer/profile-sets/maudio-fasttrack-pro.conf b/src/modules/alsa/mixer/profile-sets/maudio-fasttrack-pro.conf +index 75f5112..a75faef 100644 +--- a/src/modules/alsa/mixer/profile-sets/maudio-fasttrack-pro.conf ++++ b/src/modules/alsa/mixer/profile-sets/maudio-fasttrack-pro.conf +@@ -35,7 +35,7 @@ direction = output + + [Mapping analog-stereo-a-input] + description = Analog Stereo Channel A +-device-strings = hw:%f,0,0 ++device-strings = hw:%f,0,0 hw:%f,1,0 + channel-map = left,right + direction = input + +-- +1.7.9.1 + --- pulseaudio-1.1.orig/debian/patches/0109-loopback-Fix-crash-when-moving-sink-input-fails.patch +++ pulseaudio-1.1/debian/patches/0109-loopback-Fix-crash-when-moving-sink-input-fails.patch @@ -0,0 +1,26 @@ +From d0f1a3a770806145a2ae15d0de34d279be6bb1a3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Dalleau?= + +Date: Mon, 6 Feb 2012 18:15:36 +0100 +Subject: [PATCH] loopback: Fix crash when moving sink-input fails + +--- + src/modules/module-loopback.c | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c +index 1f2ef91..74231a3 100644 +--- a/src/modules/module-loopback.c ++++ b/src/modules/module-loopback.c +@@ -601,6 +601,8 @@ static void sink_input_moving_cb(pa_sink_input *i, pa_sink *dest) { + struct userdata *u; + pa_proplist *p; + const char *n; ++ if (!dest) ++ return; + + pa_sink_input_assert_ref(i); + pa_assert_ctl_context(); +-- +1.7.9 + --- pulseaudio-1.1.orig/debian/patches/0006-load-module-x11-bell.patch +++ pulseaudio-1.1/debian/patches/0006-load-module-x11-bell.patch @@ -0,0 +1,33 @@ +Index: pulseaudio-0.9.22~0.9.21+stable-queue-32-g8478/src/daemon/start-pulseaudio-x11.in +=================================================================== +--- pulseaudio-0.9.22~0.9.21+stable-queue-32-g8478.orig/src/daemon/start-pulseaudio-x11.in 2010-01-17 18:54:19.000000000 -0500 ++++ pulseaudio-0.9.22~0.9.21+stable-queue-32-g8478/src/daemon/start-pulseaudio-x11.in 2010-06-07 23:56:08.123227001 -0400 +@@ -21,11 +21,10 @@ + + [ -z "$PULSE_SERVER" ] + +-@PA_BINARY@ --start "$@" +- + if [ x"$DISPLAY" != x ] ; then + + @PACTL_BINARY@ load-module module-x11-publish "display=$DISPLAY" > /dev/null ++ @PACTL_BINARY@ load-module module-x11-bell "display=$DISPLAY" "sample=bell.ogg" > /dev/null + @PACTL_BINARY@ load-module module-x11-cork-request "display=$DISPLAY" > /dev/null + + if [ x"$SESSION_MANAGER" != x ] ; then +Index: pulseaudio-0.9.22~0.9.21+stable-queue-32-g8478/src/daemon/start-pulseaudio-kde.in +=================================================================== +--- pulseaudio-0.9.22~0.9.21+stable-queue-32-g8478.orig/src/daemon/start-pulseaudio-kde.in 2010-06-07 23:56:56.123227001 -0400 ++++ pulseaudio-0.9.22~0.9.21+stable-queue-32-g8478/src/daemon/start-pulseaudio-kde.in 2010-06-07 23:57:21.503227002 -0400 +@@ -21,10 +21,9 @@ + + [ -z "$PULSE_SERVER" ] + +-@PA_BINARY@ --start "$@" +- + if [ x"$DISPLAY" != x ] ; then + + @PACTL_BINARY@ load-module module-device-manager "do_routing=1" > /dev/null ++ @PACTL_BINARY@ load-module module-x11-bell "display=$DISPLAY" "sample=bell.ogg" > /dev/null + + fi --- pulseaudio-1.1.orig/debian/patches/0611-Expose-port-info-per-card-to-clients.-Update-protoco.patch +++ pulseaudio-1.1/debian/patches/0611-Expose-port-info-per-card-to-clients.-Update-protoco.patch @@ -0,0 +1,364 @@ +From 3d136da418bdbd69a400a50a1e39f2e5a0d5bdd8 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Mon, 14 Nov 2011 13:29:51 +0100 +Subject: [PATCH 611/614] Expose port info per card to clients. Update + protocol to 26. + +For volume control UIs to be able to show ports in inactive profiles, +expose all ports together with the card info. This includes updating +the protocol and the client API to show the connection between ports +and for which profiles the ports are relevant. + +Signed-off-by: David Henningsson +--- + PROTOCOL | 23 +++++++++ + configure.ac | 2 +- + src/pulse/def.h | 14 +++++ + src/pulse/introspect.c | 105 ++++++++++++++++++++++++++++++++++----- + src/pulse/introspect.h | 16 ++++++ + src/pulsecore/protocol-native.c | 26 ++++++++++ + src/utils/pactl.c | 19 +++++++ + 7 files changed, 192 insertions(+), 13 deletions(-) + +diff --git a/PROTOCOL b/PROTOCOL +index 7468cd4..a26dafc 100644 +--- a/PROTOCOL ++++ b/PROTOCOL +@@ -293,6 +293,29 @@ The field is added once for every port. + When port availability changes, send a subscription event for the + owning card. + ++## v26, implemented by >= 2.0 ++ ++In reply from PA_COMMAND_GET_CARD_INFO (and thus ++PA_COMMAND_GET_CARD_INFO_LIST), the following is added: ++ ++ uint32_t n_ports ++ ++...followed by n_ports extended port entries, which look like this: ++ ++ string name ++ string description ++ uint32_t priority ++ uint32_t available ++ uint8_t direction ++ proplist ++ uint32_t n_profiles ++ string profile_name_1 ++ ... ++ string profile_name_n ++ ++Profile names must match earlier sent profile names for the same card. ++ ++ + #### If you just changed the protocol, read this + ## module-tunnel depends on the sink/source/sink-input/source-input protocol + ## internals, so if you changed these, you might have broken module-tunnel. +diff --git a/configure.ac b/configure.ac +index 637cce2..7b0888c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -36,7 +36,7 @@ AC_SUBST(PA_MINOR, pa_minor) + AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor) + + AC_SUBST(PA_API_VERSION, 12) +-AC_SUBST(PA_PROTOCOL_VERSION, 25) ++AC_SUBST(PA_PROTOCOL_VERSION, 26) + + # The stable ABI for client applications, for the version info x:y:z + # always will hold y=z +diff --git a/src/pulse/def.h b/src/pulse/def.h +index 8a74fad..869007e 100644 +--- a/src/pulse/def.h ++++ b/src/pulse/def.h +@@ -124,6 +124,20 @@ typedef enum pa_context_flags { + #define PA_CONTEXT_NOFAIL PA_CONTEXT_NOFAIL + /** \endcond */ + ++/** Direction bitfield - while we currently do not expose anything bidirectional, ++ one should test against the bit instead of the value (e g if (d & PA_DIRECTION_OUTPUT)), ++ because we might add bidirectional stuff in the future. \since 2.0 ++*/ ++typedef enum pa_direction { ++ PA_DIRECTION_OUTPUT = 0x0001U, /**< Output direction */ ++ PA_DIRECTION_INPUT = 0x0002U /**< Input direction */ ++} pa_direction_t; ++ ++/** \cond fulldocs */ ++#define PA_DIRECTION_OUTPUT PA_DIRECTION_OUTPUT ++#define PA_DIRECTION_INPUT PA_DIRECTION_INPUT ++/** \endcond */ ++ + /** The type of device we are dealing with */ + typedef enum pa_device_type { + PA_DEVICE_TYPE_SINK, /**< Playback device */ +diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c +index c8bf7ca..c6521c8 100644 +--- a/src/pulse/introspect.c ++++ b/src/pulse/introspect.c +@@ -763,9 +763,87 @@ pa_operation* pa_context_get_client_info_list(pa_context *c, pa_client_info_cb_t + + /*** Card info ***/ + ++static void card_info_free(pa_card_info* i) ++{ ++ if (i->proplist) ++ pa_proplist_free(i->proplist); ++ pa_xfree(i->profiles); ++ if (i->ports) { ++ uint32_t j; ++ for (j = 0; j < i->n_ports; j++) ++ if (i->ports[j]) { ++ if (i->ports[j]->profiles) ++ pa_xfree(i->ports[j]->profiles); ++ if (i->ports[j]->proplist) ++ pa_proplist_free(i->ports[j]->proplist); ++ } ++ pa_xfree(i->ports[0]); ++ pa_xfree(i->ports); ++ } ++} ++ ++static int fill_card_port_info(pa_tagstruct* t, pa_card_info* i) ++{ ++ uint32_t j, k, l; ++ if (pa_tagstruct_getu32(t, &i->n_ports) < 0) ++ return -PA_ERR_PROTOCOL; ++ ++ if (i->n_ports == 0) { ++ i->ports = NULL; ++ return 0; ++ } ++ ++ i->ports = pa_xnew0(pa_card_port_info*, i->n_ports+1); ++ i->ports[0] = pa_xnew0(pa_card_port_info, i->n_ports); ++ ++ for (j = 0; j < i->n_ports; j++) { ++ uint8_t direction; ++ uint32_t available; ++ pa_card_port_info* port = i->ports[j] = &i->ports[0][j]; ++ port->proplist = pa_proplist_new(); ++ ++ if (pa_tagstruct_gets(t, &port->name) < 0 || ++ pa_tagstruct_gets(t, &port->description) < 0 || ++ pa_tagstruct_getu32(t, &port->priority) < 0 || ++ pa_tagstruct_getu32(t, &available) < 0 || ++ pa_tagstruct_getu8(t, &direction) < 0 || ++ pa_tagstruct_get_proplist(t, port->proplist) < 0 || ++ pa_tagstruct_getu32(t, &port->n_profiles) < 0) { ++ ++ return -PA_ERR_PROTOCOL; ++ } ++ ++ if (available > PA_PORT_AVAILABLE_YES || ++ direction > PA_DIRECTION_OUTPUT + PA_DIRECTION_INPUT) { ++ ++ return -PA_ERR_PROTOCOL; ++ } ++ port->direction = direction; ++ port->available = available; ++ if (port->n_profiles > 0) { ++ port->profiles = pa_xnew0(pa_card_profile_info*, i->n_profiles+1); ++ for (k = 0; k < port->n_profiles; k++) { ++ const char* profilename; ++ if (pa_tagstruct_gets(t, &profilename) < 0) ++ return -PA_ERR_PROTOCOL; ++ for (l = 0; l < i->n_profiles; l++) ++ if (pa_streq(i->profiles[l].name, profilename)) { ++ port->profiles[k] = &i->profiles[l]; ++ break; ++ } ++ if (l >= i->n_profiles) ++ return -PA_ERR_PROTOCOL; ++ } ++ } ++ } ++ ++ return 0; ++} ++ + static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_tagstruct *t, void *userdata) { + pa_operation *o = userdata; + int eol = 1; ++ pa_card_info i; + + pa_assert(pd); + pa_assert(o); +@@ -782,7 +860,6 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u + } else { + + while (!pa_tagstruct_eof(t)) { +- pa_card_info i; + uint32_t j; + const char*ap; + +@@ -794,8 +871,7 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u + pa_tagstruct_gets(t, &i.driver) < 0 || + pa_tagstruct_getu32(t, &i.n_profiles) < 0) { + +- pa_context_fail(o->context, PA_ERR_PROTOCOL); +- goto finish; ++ goto fail; + } + + if (i.n_profiles > 0) { +@@ -809,9 +885,7 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u + pa_tagstruct_getu32(t, &i.profiles[j].n_sources) < 0 || + pa_tagstruct_getu32(t, &i.profiles[j].priority) < 0) { + +- pa_context_fail(o->context, PA_ERR_PROTOCOL); +- pa_xfree(i.profiles); +- goto finish; ++ goto fail; + } + } + +@@ -825,10 +899,7 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u + if (pa_tagstruct_gets(t, &ap) < 0 || + pa_tagstruct_get_proplist(t, i.proplist) < 0) { + +- pa_context_fail(o->context, PA_ERR_PROTOCOL); +- pa_xfree(i.profiles); +- pa_proplist_free(i.proplist); +- goto finish; ++ goto fail; + } + + if (ap) { +@@ -839,13 +910,17 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u + } + } + ++ if (o->context->version >= 26) { ++ if (fill_card_port_info(t, &i) < 0) ++ goto fail; ++ } ++ + if (o->callback) { + pa_card_info_cb_t cb = (pa_card_info_cb_t) o->callback; + cb(o->context, &i, 0, o->userdata); + } + +- pa_proplist_free(i.proplist); +- pa_xfree(i.profiles); ++ card_info_free(&i); + } + } + +@@ -857,6 +932,12 @@ static void context_get_card_info_callback(pa_pdispatch *pd, uint32_t command, u + finish: + pa_operation_done(o); + pa_operation_unref(o); ++ return; ++ ++fail: ++ card_info_free(&i); ++ pa_context_fail(o->context, PA_ERR_PROTOCOL); ++ goto finish; + } + + pa_operation* pa_context_get_card_info_by_index(pa_context *c, uint32_t idx, pa_card_info_cb_t cb, void *userdata) { +diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h +index afa4e8e..d703e97 100644 +--- a/src/pulse/introspect.h ++++ b/src/pulse/introspect.h +@@ -454,6 +454,20 @@ typedef struct pa_card_profile_info { + uint32_t priority; /**< The higher this value is the more useful this profile is as a default */ + } pa_card_profile_info; + ++/** Stores information about a specific port of a card. Please ++ * note that this structure can be extended as part of evolutionary ++ * API updates at any time in any new release. \since 2.0 */ ++typedef struct pa_card_port_info { ++ const char *name; /**< Name of this port */ ++ const char *description; /**< Description of this port */ ++ uint32_t priority; /**< The higher this value is the more useful this port is as a default */ ++ int available; /**< A \link pa_port_available_t, indicating availability status of this port. */ ++ int direction; /**< This is a \link pa_direction_t enum, indicating the direction of this port. */ ++ uint32_t n_profiles; /**< Number of entries in profile array */ ++ pa_card_profile_info** profiles; /**< Array of pointers available profile, or NULL. Array is terminated by an entry set to NULL. */ ++ pa_proplist *proplist; /**< Property list */ ++} pa_card_port_info; ++ + /** Stores information about cards. Please note that this structure + * can be extended as part of evolutionary API updates at any time in + * any new release. \since 0.9.15 */ +@@ -466,6 +480,8 @@ typedef struct pa_card_info { + pa_card_profile_info* profiles; /**< Array of available profile, or NULL. Array is terminated by an entry with name set to NULL. Number of entries is stored in n_profiles */ + pa_card_profile_info* active_profile; /**< Pointer to active profile in the array, or NULL */ + pa_proplist *proplist; /**< Property list */ ++ uint32_t n_ports; /**< Number of entries in port array */ ++ pa_card_port_info **ports; /**< Array of pointers to ports, or NULL. Array is terminated by an entry set to NULL. */ + } pa_card_info; + + /** Callback prototype for pa_context_get_card_info_...() \since 0.9.15 */ +diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c +index cf6616d..807c803 100644 +--- a/src/pulsecore/protocol-native.c ++++ b/src/pulsecore/protocol-native.c +@@ -3228,6 +3228,32 @@ static void card_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_car + + pa_tagstruct_puts(t, card->active_profile ? card->active_profile->name : NULL); + pa_tagstruct_put_proplist(t, card->proplist); ++ ++ if (c->version < 26) ++ return; ++ if (card->ports) { ++ pa_device_port* port; ++ pa_proplist* proplist = pa_proplist_new(); /* For now - push an empty proplist */ ++ pa_tagstruct_putu32(t, pa_hashmap_size(card->ports)); ++ PA_HASHMAP_FOREACH(port, card->ports, state) { ++ pa_tagstruct_puts(t, port->name); ++ pa_tagstruct_puts(t, port->description); ++ pa_tagstruct_putu32(t, port->priority); ++ pa_tagstruct_putu32(t, port->available); ++ pa_tagstruct_putu8(t, /* FIXME: port->direction */ (port->is_input ? PA_DIRECTION_INPUT : 0) | (port->is_output ? PA_DIRECTION_OUTPUT : 0)); ++ pa_tagstruct_put_proplist(t, proplist); ++ if (port->profiles) { ++ void* state2; ++ pa_tagstruct_putu32(t, pa_hashmap_size(port->profiles)); ++ PA_HASHMAP_FOREACH(p, port->profiles, state2) ++ pa_tagstruct_puts(t, p->name); ++ } else ++ pa_tagstruct_putu32(t, 0); ++ } ++ pa_proplist_free(proplist); ++ } else ++ pa_tagstruct_putu32(t, 0); ++ + } + + static void module_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_module *module) { +diff --git a/src/utils/pactl.c b/src/utils/pactl.c +index 53017d6..c959595 100644 +--- a/src/utils/pactl.c ++++ b/src/utils/pactl.c +@@ -582,6 +582,25 @@ static void get_card_info_callback(pa_context *c, const pa_card_info *i, int is_ + printf(_("\tActive Profile: %s\n"), + i->active_profile->name); + ++ if (i->ports) { ++ pa_card_port_info **p; ++ ++ printf(_("\tPorts:\n")); ++ for (p = i->ports; *p; p++) { ++ pa_card_profile_info **pr = (*p)->profiles; ++ printf(_("\t\t%s: %s (priority %u)\n"), (*p)->name, (*p)->description, (*p)->priority); ++ if (pr) { ++ printf(_("\t\t\tPart of profile(s): %s"), pa_strnull((*pr)->name)); ++ pr++; ++ while (*pr) { ++ printf(", %s", pa_strnull((*pr)->name)); ++ pr++; ++ } ++ printf("\n"); ++ } ++ } ++ } ++ + pa_xfree(pl); + } + +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0601-Introduce-available-concept-for-ports-and-communicat.patch +++ pulseaudio-1.1/debian/patches/0601-Introduce-available-concept-for-ports-and-communicat.patch @@ -0,0 +1,288 @@ +From fe6ff5ce3eea6db087030df397d9701ab9d2605c Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 25 Nov 2011 15:17:11 +0100 +Subject: [PATCH 601/614] Introduce "available" concept for ports, and + communicate that to clients. Bump protocol version + to 24. + +Note: There is still no notification when status availability changes. + +Signed-off-by: David Henningsson +--- + PROTOCOL | 10 ++++ + configure.ac | 2 +- + src/modules/module-tunnel.c | 91 +++++++++++++++++---------------------- + src/pulse/def.h | 15 ++++++ + src/pulse/introspect.c | 16 +++++++ + src/pulse/introspect.h | 2 + + src/pulsecore/protocol-native.c | 4 ++ + src/pulsecore/sink.h | 1 + + 8 files changed, 88 insertions(+), 53 deletions(-) + +diff --git a/PROTOCOL b/PROTOCOL +index 8c69190..8b2f81f 100644 +--- a/PROTOCOL ++++ b/PROTOCOL +@@ -278,6 +278,16 @@ New field in PA_COMMAND_UNDERFLOW: + + int64_t index + ++## v24, implemented by >= 2.0 ++ ++New field in all commands that send/receive port introspection data ++(PA_COMMAND_GET_(SOURCE|SINK)_OUTPUT_INFO, ++PA_COMMAND_GET_(SOURCE|SINK)_OUTPUT_INFO_LIST): ++ ++ uint32_t available ++ ++The field is added once for every port. ++ + #### If you just changed the protocol, read this + ## module-tunnel depends on the sink/source/sink-input/source-input protocol + ## internals, so if you changed these, you might have broken module-tunnel. +diff --git a/configure.ac b/configure.ac +index a91daf4..48ff8ff 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -36,7 +36,7 @@ AC_SUBST(PA_MINOR, pa_minor) + AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor) + + AC_SUBST(PA_API_VERSION, 12) +-AC_SUBST(PA_PROTOCOL_VERSION, 23) ++AC_SUBST(PA_PROTOCOL_VERSION, 24) + + # The stable ABI for client applications, for the version info x:y:z + # always will hold y=z +diff --git a/src/modules/module-tunnel.c b/src/modules/module-tunnel.c +index faee995..61ec35d 100644 +--- a/src/modules/module-tunnel.c ++++ b/src/modules/module-tunnel.c +@@ -996,6 +996,41 @@ fail: + pa_module_unload_request(u->module, TRUE); + } + ++static int read_ports(struct userdata *u, pa_tagstruct *t) ++{ ++ if (u->version >= 16) { ++ uint32_t n_ports; ++ const char *s; ++ ++ if (pa_tagstruct_getu32(t, &n_ports)) { ++ pa_log("Parse failure"); ++ return -PA_ERR_PROTOCOL; ++ } ++ ++ for (uint32_t j = 0; j < n_ports; j++) { ++ uint32_t priority; ++ ++ if (pa_tagstruct_gets(t, &s) < 0 || /* name */ ++ pa_tagstruct_gets(t, &s) < 0 || /* description */ ++ pa_tagstruct_getu32(t, &priority) < 0) { ++ ++ pa_log("Parse failure"); ++ return -PA_ERR_PROTOCOL; ++ } ++ if (u->version >= 24 && pa_tagstruct_getu32(t, &priority) < 0) { /* available */ ++ pa_log("Parse failure"); ++ return -PA_ERR_PROTOCOL; ++ } ++ } ++ ++ if (pa_tagstruct_gets(t, &s) < 0) { /* active port */ ++ pa_log("Parse failure"); ++ return -PA_ERR_PROTOCOL; ++ } ++ } ++ return 0; ++} ++ + #ifdef TUNNEL_SINK + + /* Called from main context */ +@@ -1066,32 +1101,8 @@ static void sink_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa_t + } + } + +- if (u->version >= 16) { +- uint32_t n_ports; +- const char *s; +- +- if (pa_tagstruct_getu32(t, &n_ports)) { +- pa_log("Parse failure"); +- goto fail; +- } +- +- for (uint32_t j = 0; j < n_ports; j++) { +- uint32_t priority; +- +- if (pa_tagstruct_gets(t, &s) < 0 || /* name */ +- pa_tagstruct_gets(t, &s) < 0 || /* description */ +- pa_tagstruct_getu32(t, &priority) < 0) { +- +- pa_log("Parse failure"); +- goto fail; +- } +- } +- +- if (pa_tagstruct_gets(t, &s) < 0) { /* active port */ +- pa_log("Parse failure"); +- goto fail; +- } +- } ++ if (read_ports(u, t) < 0) ++ goto fail; + + if (u->version >= 21) { + uint8_t n_formats; +@@ -1318,32 +1329,8 @@ static void source_info_cb(pa_pdispatch *pd, uint32_t command, uint32_t tag, pa + } + } + +- if (u->version >= 16) { +- uint32_t n_ports; +- const char *s; +- +- if (pa_tagstruct_getu32(t, &n_ports)) { +- pa_log("Parse failure"); +- goto fail; +- } +- +- for (uint32_t j = 0; j < n_ports; j++) { +- uint32_t priority; +- +- if (pa_tagstruct_gets(t, &s) < 0 || /* name */ +- pa_tagstruct_gets(t, &s) < 0 || /* description */ +- pa_tagstruct_getu32(t, &priority) < 0) { +- +- pa_log("Parse failure"); +- goto fail; +- } +- } +- +- if (pa_tagstruct_gets(t, &s) < 0) { /* active port */ +- pa_log("Parse failure"); +- goto fail; +- } +- } ++ if (read_ports(u, t) < 0) ++ goto fail; + + if (!pa_tagstruct_eof(t)) { + pa_log("Packet too long"); +diff --git a/src/pulse/def.h b/src/pulse/def.h +index f43e864..8a74fad 100644 +--- a/src/pulse/def.h ++++ b/src/pulse/def.h +@@ -967,6 +967,21 @@ typedef void (*pa_free_cb_t)(void *p); + * playback, \since 1.0 */ + #define PA_STREAM_EVENT_FORMAT_LOST "format-lost" + ++/** Port availability / jack detection status ++ * \since 2.0 */ ++typedef enum pa_port_available { ++ PA_PORT_AVAILABLE_UNKNOWN = 0, /**< This port does not support jack detection \since 2.0 */ ++ PA_PORT_AVAILABLE_NO = 1, /**< This port is not available, likely because the jack is not plugged in. \since 2.0 */ ++ PA_PORT_AVAILABLE_YES = 2, /**< This port is available, likely because the jack is plugged in. \since 2.0 */ ++} pa_port_available_t; ++ ++/** \cond fulldocs */ ++#define PA_PORT_AVAILABLE_UNKNOWN PA_PORT_AVAILABLE_UNKNOWN ++#define PA_PORT_AVAILABLE_NO PA_PORT_AVAILABLE_NO ++#define PA_PORT_AVAILABLE_YES PA_PORT_AVAILABLE_YES ++ ++/** \endcond */ ++ + PA_C_DECL_END + + #endif +diff --git a/src/pulse/introspect.c b/src/pulse/introspect.c +index 0d1d03f..c8bf7ca 100644 +--- a/src/pulse/introspect.c ++++ b/src/pulse/introspect.c +@@ -211,6 +211,14 @@ static void context_get_sink_info_callback(pa_pdispatch *pd, uint32_t command, u + goto fail; + } + ++ i.ports[0][j].available = PA_PORT_AVAILABLE_UNKNOWN; ++ if (o->context->version >= 24) { ++ uint32_t av; ++ if (pa_tagstruct_getu32(t, &av) < 0 || av > PA_PORT_AVAILABLE_YES) ++ goto fail; ++ i.ports[0][j].available = av; ++ } ++ + i.ports[j] = &i.ports[0][j]; + } + +@@ -476,6 +484,14 @@ static void context_get_source_info_callback(pa_pdispatch *pd, uint32_t command, + goto fail; + } + ++ i.ports[0][j].available = PA_PORT_AVAILABLE_UNKNOWN; ++ if (o->context->version >= 24) { ++ uint32_t av; ++ if (pa_tagstruct_getu32(t, &av) < 0 || av > PA_PORT_AVAILABLE_YES) ++ goto fail; ++ i.ports[0][j].available = av; ++ } ++ + i.ports[j] = &i.ports[0][j]; + } + +diff --git a/src/pulse/introspect.h b/src/pulse/introspect.h +index 1d77d45..afa4e8e 100644 +--- a/src/pulse/introspect.h ++++ b/src/pulse/introspect.h +@@ -202,6 +202,7 @@ typedef struct pa_sink_port_info { + const char *name; /**< Name of this port */ + const char *description; /**< Description of this port */ + uint32_t priority; /**< The higher this value is the more useful this port is as a default */ ++ int available; /**< A \link pa_port_available_t, indicating availability status of this port. \since 2.0 */ + } pa_sink_port_info; + + /** Stores information about sinks. Please note that this structure +@@ -281,6 +282,7 @@ typedef struct pa_source_port_info { + const char *name; /**< Name of this port */ + const char *description; /**< Description of this port */ + uint32_t priority; /**< The higher this value is the more useful this port is as a default */ ++ int available; /**< A \link pa_port_available_t, indicating availability status of this port. \since 2.0 */ + } pa_source_port_info; + + /** Stores information about sources. Please note that this structure +diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c +index e871478..cf6616d 100644 +--- a/src/pulsecore/protocol-native.c ++++ b/src/pulsecore/protocol-native.c +@@ -3094,6 +3094,8 @@ static void sink_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_sin + pa_tagstruct_puts(t, p->name); + pa_tagstruct_puts(t, p->description); + pa_tagstruct_putu32(t, p->priority); ++ if (c->version >= 24) ++ pa_tagstruct_putu32(t, p->available); + } + } + +@@ -3165,6 +3167,8 @@ static void source_fill_tagstruct(pa_native_connection *c, pa_tagstruct *t, pa_s + pa_tagstruct_puts(t, p->name); + pa_tagstruct_puts(t, p->description); + pa_tagstruct_putu32(t, p->priority); ++ if (c->version >= 24) ++ pa_tagstruct_putu32(t, p->available); + } + } + +diff --git a/src/pulsecore/sink.h b/src/pulsecore/sink.h +index 7f639e2..669a3f5 100644 +--- a/src/pulsecore/sink.h ++++ b/src/pulsecore/sink.h +@@ -60,6 +60,7 @@ struct pa_device_port { + char *description; + + unsigned priority; ++ pa_port_available_t available; /* PA_PORT_AVAILABLE_UNKNOWN, PA_PORT_AVAILABLE_NO or PA_PORT_AVAILABLE_YES */ + + /* .. followed by some implementation specific data */ + }; +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0005-dont-load-cork-music-on-phone.patch +++ pulseaudio-1.1/debian/patches/0005-dont-load-cork-music-on-phone.patch @@ -0,0 +1,13 @@ +Index: pulseaudio-0.99.2/src/daemon/default.pa.in +=================================================================== +--- pulseaudio-0.99.2.orig/src/daemon/default.pa.in 2011-08-16 20:01:34.000000000 +1000 ++++ pulseaudio-0.99.2/src/daemon/default.pa.in 2011-08-18 08:43:10.466148645 +1000 +@@ -150,7 +150,7 @@ + load-module module-position-event-sounds + + ### Cork music streams when a phone stream is active +-load-module module-cork-music-on-phone ++#load-module module-cork-music-on-phone + + ### Modules to allow autoloading of filters (such as echo cancellation) + ### on demand. module-filter-heuristics tries to determine what filters --- pulseaudio-1.1.orig/debian/patches/0615-alsa-mixer-Make-sure-unsupported-paths-are-removed-a.patch +++ pulseaudio-1.1/debian/patches/0615-alsa-mixer-Make-sure-unsupported-paths-are-removed-a.patch @@ -0,0 +1,52 @@ +From 43a705ae1894267258318404c497e5cbcea9fe78 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Thu, 19 Jan 2012 10:30:31 +0100 +Subject: [PATCH 8/8] alsa-mixer: Make sure unsupported paths are removed + after probing + +Signed-off-by: David Henningsson +--- + src/modules/alsa/alsa-mixer.c | 20 ++++++++++++++++++++ + 1 files changed, 20 insertions(+), 0 deletions(-) + +diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c +index 703aaf8..2aa708d 100644 +--- a/src/modules/alsa/alsa-mixer.c ++++ b/src/modules/alsa/alsa-mixer.c +@@ -4224,6 +4224,23 @@ static snd_pcm_t* mapping_open_pcm(pa_alsa_mapping *m, + &try_buffer_size, 0, NULL, NULL, TRUE); + } + ++static void paths_drop_unsupported(pa_hashmap* h) { ++ ++ void* state = NULL; ++ const void* key; ++ pa_alsa_path* p; ++ ++ pa_assert(h); ++ p = pa_hashmap_iterate(h, &state, &key); ++ while (p) { ++ if (p->supported <= 0) { ++ pa_hashmap_remove(h, key); ++ pa_alsa_path_free(p); ++ } ++ p = pa_hashmap_iterate(h, &state, &key); ++ } ++} ++ + void pa_alsa_profile_set_probe( + pa_alsa_profile_set *ps, + const char *dev_id, +@@ -4319,6 +4336,9 @@ void pa_alsa_profile_set_probe( + mapping_free(m); + } + ++ paths_drop_unsupported(ps->input_paths); ++ paths_drop_unsupported(ps->output_paths); ++ + ps->probed = TRUE; + } + +-- +1.7.8.3 + --- pulseaudio-1.1.orig/debian/patches/0002-In-KDE-only-start-pulseaudio-from-the-KDE-specific-d.patch +++ pulseaudio-1.1/debian/patches/0002-In-KDE-only-start-pulseaudio-from-the-KDE-specific-d.patch @@ -0,0 +1,20 @@ +From b4389a752385afd6e65e412a8488828ee3648fbd Mon Sep 17 00:00:00 2001 +From: Zsolt Rizsanyi +Date: Sun, 27 Jun 2010 15:16:13 +0100 +Subject: [PATCH 2/2] In KDE only start pulseaudio from the KDE specific desktop file + +--- + src/daemon/pulseaudio.desktop.in | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/src/daemon/pulseaudio.desktop.in b/src/daemon/pulseaudio.desktop.in +index 99bdbd0..47b2eb4 100644 +--- a/src/daemon/pulseaudio.desktop.in ++++ b/src/daemon/pulseaudio.desktop.in +@@ -6,5 +6,6 @@ _Comment=Start the PulseAudio Sound System + Exec=start-pulseaudio-x11 + Terminal=false + Type=Application ++NotShowIn=KDE; + Categories= + GenericName= --- pulseaudio-1.1.orig/debian/patches/0604-Notify-port-available-status-changes-and-update-prot.patch +++ pulseaudio-1.1/debian/patches/0604-Notify-port-available-status-changes-and-update-prot.patch @@ -0,0 +1,255 @@ +From accc8104257ce29413ce1e9b02e9e6ff90e1d7b0 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 25 Nov 2011 15:17:14 +0100 +Subject: [PATCH 604/614] Notify port available status changes, and update + protocol version + +The recommended way of setting available status is to call +pa_device_port_set_available, which will send a subscription event +to the relevant card. It will also fire a hook. + +Signed-off-by: David Henningsson +--- + PROTOCOL | 5 ++++ + configure.ac | 2 +- + src/modules/alsa/alsa-mixer.c | 9 ++++--- + src/modules/alsa/alsa-mixer.h | 2 +- + src/modules/alsa/alsa-sink.c | 2 +- + src/modules/alsa/alsa-source.c | 2 +- + src/pulsecore/core.h | 1 + + src/pulsecore/device-port.c | 43 ++++++++++++++++++++++++++++++++++++++- + src/pulsecore/device-port.h | 12 ++++++++++- + 9 files changed, 67 insertions(+), 11 deletions(-) + +diff --git a/PROTOCOL b/PROTOCOL +index 8b2f81f..7468cd4 100644 +--- a/PROTOCOL ++++ b/PROTOCOL +@@ -288,6 +288,11 @@ PA_COMMAND_GET_(SOURCE|SINK)_OUTPUT_INFO_LIST): + + The field is added once for every port. + ++## v25, implemented by >= 2.0 ++ ++When port availability changes, send a subscription event for the ++owning card. ++ + #### If you just changed the protocol, read this + ## module-tunnel depends on the sink/source/sink-input/source-input protocol + ## internals, so if you changed these, you might have broken module-tunnel. +diff --git a/configure.ac b/configure.ac +index 48ff8ff..637cce2 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -36,7 +36,7 @@ AC_SUBST(PA_MINOR, pa_minor) + AC_SUBST(PA_MAJORMINOR, pa_major.pa_minor) + + AC_SUBST(PA_API_VERSION, 12) +-AC_SUBST(PA_PROTOCOL_VERSION, 24) ++AC_SUBST(PA_PROTOCOL_VERSION, 25) + + # The stable ABI for client applications, for the version info x:y:z + # always will hold y=z +diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c +index b6cf085..c70edd3 100644 +--- a/src/modules/alsa/alsa-mixer.c ++++ b/src/modules/alsa/alsa-mixer.c +@@ -4278,9 +4278,10 @@ void pa_alsa_profile_set_dump(pa_alsa_profile_set *ps) { + pa_alsa_decibel_fix_dump(db_fix); + } + +-void pa_alsa_add_ports(pa_hashmap **p, pa_alsa_path_set *ps) { ++void pa_alsa_add_ports(pa_core *c, pa_hashmap **p, pa_alsa_path_set *ps) { + pa_alsa_path *path; + ++ pa_assert(c); + pa_assert(p); + pa_assert(!*p); + pa_assert(ps); +@@ -4305,7 +4306,7 @@ void pa_alsa_add_ports(pa_hashmap **p, pa_alsa_path_set *ps) { + pa_device_port *port; + pa_alsa_port_data *data; + +- port = pa_device_port_new(s->name, s->description, sizeof(pa_alsa_port_data)); ++ port = pa_device_port_new(c, s->name, s->description, sizeof(pa_alsa_port_data)); + port->priority = s->priority; + + data = PA_DEVICE_PORT_DATA(port); +@@ -4330,7 +4331,7 @@ void pa_alsa_add_ports(pa_hashmap **p, pa_alsa_path_set *ps) { + /* If there is no or just one setting we only need a + * single entry */ + +- port = pa_device_port_new(path->name, path->description, sizeof(pa_alsa_port_data)); ++ port = pa_device_port_new(c, path->name, path->description, sizeof(pa_alsa_port_data)); + port->priority = path->priority * 100; + + +@@ -4354,7 +4355,7 @@ void pa_alsa_add_ports(pa_hashmap **p, pa_alsa_path_set *ps) { + else + d = pa_xstrdup(path->description); + +- port = pa_device_port_new(n, d, sizeof(pa_alsa_port_data)); ++ port = pa_device_port_new(c, n, d, sizeof(pa_alsa_port_data)); + port->priority = path->priority * 100 + s->priority; + + pa_xfree(n); +diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h +index c9d968a..e871e6f 100644 +--- a/src/modules/alsa/alsa-mixer.h ++++ b/src/modules/alsa/alsa-mixer.h +@@ -323,6 +323,6 @@ struct pa_alsa_port_data { + pa_alsa_setting *setting; + }; + +-void pa_alsa_add_ports(pa_hashmap **p, pa_alsa_path_set *ps); ++void pa_alsa_add_ports(pa_core *c, pa_hashmap **p, pa_alsa_path_set *ps); + + #endif +diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c +index 066f2dd..ba0bf9a 100644 +--- a/src/modules/alsa/alsa-sink.c ++++ b/src/modules/alsa/alsa-sink.c +@@ -2159,7 +2159,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca + } + + if (u->mixer_path_set) +- pa_alsa_add_ports(&data.ports, u->mixer_path_set); ++ pa_alsa_add_ports(u->core, &data.ports, u->mixer_path_set); + + u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE | PA_SINK_LATENCY | (u->use_tsched ? PA_SINK_DYNAMIC_LATENCY : 0) | + (set_formats ? PA_SINK_SET_FORMATS : 0)); +diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c +index f03b76e..baf8156 100644 +--- a/src/modules/alsa/alsa-source.c ++++ b/src/modules/alsa/alsa-source.c +@@ -1848,7 +1848,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p + } + + if (u->mixer_path_set) +- pa_alsa_add_ports(&data.ports, u->mixer_path_set); ++ pa_alsa_add_ports(u->core, &data.ports, u->mixer_path_set); + + u->source = pa_source_new(m->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY|(u->use_tsched ? PA_SOURCE_DYNAMIC_LATENCY : 0)); + pa_source_new_data_done(&data); +diff --git a/src/pulsecore/core.h b/src/pulsecore/core.h +index ef51b8c..50c2025 100644 +--- a/src/pulsecore/core.h ++++ b/src/pulsecore/core.h +@@ -113,6 +113,7 @@ typedef enum pa_core_hook { + PA_CORE_HOOK_CARD_PUT, + PA_CORE_HOOK_CARD_UNLINK, + PA_CORE_HOOK_CARD_PROFILE_CHANGED, ++ PA_CORE_HOOK_PORT_AVAILABLE_CHANGED, + PA_CORE_HOOK_MAX + } pa_core_hook_t; + +diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c +index 8aeb173..7988649 100644 +--- a/src/pulsecore/device-port.c ++++ b/src/pulsecore/device-port.c +@@ -21,11 +21,49 @@ + USA. + ***/ + +- + #include "device-port.h" ++#include + + PA_DEFINE_PUBLIC_CLASS(pa_device_port, pa_object); + ++void pa_device_port_set_available(pa_device_port *p, pa_port_available_t status) ++{ ++ uint32_t state; ++ pa_card *card; ++/* pa_source *source; ++ pa_sink *sink; */ ++ pa_core *core; ++ ++ pa_assert(p); ++ ++ if (p->available == status) ++ return; ++ ++ pa_assert(status != PA_PORT_AVAILABLE_UNKNOWN); ++ ++ p->available = status; ++ pa_log_debug("Setting port %s to status %s", p->name, status == PA_PORT_AVAILABLE_YES ? "yes" : "no"); ++ ++ /* Post subscriptions to the card which owns us */ ++ pa_assert_se(core = p->core); ++ PA_IDXSET_FOREACH(card, core->cards, state) ++ if (p == pa_hashmap_get(card->ports, p->name)) ++ pa_subscription_post(core, PA_SUBSCRIPTION_EVENT_CARD|PA_SUBSCRIPTION_EVENT_CHANGE, card->index); ++#if 0 ++/* This stuff is temporarily commented out while figuring out whether to actually do this */ ++ if (p->is_output) ++ PA_IDXSET_FOREACH(sink, core->sinks, state) ++ if (p == pa_hashmap_get(sink->ports, p->name)) ++ pa_subscription_post(core, PA_SUBSCRIPTION_EVENT_SINK|PA_SUBSCRIPTION_EVENT_CHANGE, sink->index); ++ if (p->is_input) ++ PA_IDXSET_FOREACH(source, core->sources, state) ++ if (p == pa_hashmap_get(source->ports, p->name)) ++ pa_subscription_post(core, PA_SUBSCRIPTION_EVENT_SOURCE|PA_SUBSCRIPTION_EVENT_CHANGE, source->index); ++#endif ++ ++ pa_hook_fire(&core->hooks[PA_CORE_HOOK_PORT_AVAILABLE_CHANGED], p); ++} ++ + static void device_port_free(pa_object *o) { + pa_device_port *p = PA_DEVICE_PORT(o); + +@@ -40,7 +78,7 @@ static void device_port_free(pa_object *o) { + } + + +-pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra) { ++pa_device_port *pa_device_port_new(pa_core *c, const char *name, const char *description, size_t extra) { + pa_device_port *p; + + pa_assert(name); +@@ -50,6 +88,7 @@ pa_device_port *pa_device_port_new(const char *name, const char *description, si + + p->name = pa_xstrdup(name); + p->description = pa_xstrdup(description); ++ p->core = c; + p->priority = 0; + p->available = PA_PORT_AVAILABLE_UNKNOWN; + p->profiles = NULL; +diff --git a/src/pulsecore/device-port.h b/src/pulsecore/device-port.h +index f997c77..f387021 100644 +--- a/src/pulsecore/device-port.h ++++ b/src/pulsecore/device-port.h +@@ -35,10 +35,15 @@ + #include + #include + ++/* Note: Including core.h here leads to circular references ++ (device-port.h -> core.h -> sink.h -> device-port.h), hence the line below instead */ ++typedef struct pa_core pa_core; ++ + typedef struct pa_device_port pa_device_port; + + struct pa_device_port { + pa_object parent; /* Needed for reference counting */ ++ pa_core *core; + + char *name; + char *description; +@@ -58,8 +63,13 @@ PA_DECLARE_PUBLIC_CLASS(pa_device_port); + + #define PA_DEVICE_PORT_DATA(d) ((void*) ((uint8_t*) d + PA_ALIGN(sizeof(pa_device_port)))) + +-pa_device_port *pa_device_port_new(const char *name, const char *description, size_t extra); ++pa_device_port *pa_device_port_new(pa_core *c, const char *name, const char *description, size_t extra); + + void pa_device_port_hashmap_free(pa_hashmap *h); + ++#include ++ ++/* The port's available status has changed */ ++void pa_device_port_set_available(pa_device_port *p, pa_port_available_t available); ++ + #endif +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0111-protocol-native-Protect-against-clients-trying-to-se.patch +++ pulseaudio-1.1/debian/patches/0111-protocol-native-Protect-against-clients-trying-to-se.patch @@ -0,0 +1,60 @@ +From 54cddc6ddf075b6248b0b8521120b2bd86049978 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 16 Mar 2012 14:38:38 +0100 +Subject: [PATCH] protocol-native: Protect against clients trying to set a + NULL port + +For some reason, a badly behaving client was trying to set a NULL +port, which caused PulseAudio to crash. Add safeguards on two levels +just to be protected. (Also remove a redundant check.) + +BugLink: https://bugs.launchpad.net/bugs/951273 +Signed-off-by: David Henningsson +--- + src/pulsecore/protocol-native.c | 2 +- + src/pulsecore/sink.c | 2 +- + src/pulsecore/source.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c +index e4e1809..34fff6e 100644 +--- a/src/pulsecore/protocol-native.c ++++ b/src/pulsecore/protocol-native.c +@@ -4699,7 +4699,7 @@ static void command_set_sink_or_source_port(pa_pdispatch *pd, uint32_t command, + CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SET_SINK_PORT ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX || name, tag, PA_ERR_INVALID); + CHECK_VALIDITY(c->pstream, idx == PA_INVALID_INDEX || !name, tag, PA_ERR_INVALID); +- CHECK_VALIDITY(c->pstream, !name || idx == PA_INVALID_INDEX, tag, PA_ERR_INVALID); ++ CHECK_VALIDITY(c->pstream, port, tag, PA_ERR_INVALID); + + if (command == PA_COMMAND_SET_SINK_PORT) { + pa_sink *sink; +diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c +index aed1f38..2d214cf 100644 +--- a/src/pulsecore/sink.c ++++ b/src/pulsecore/sink.c +@@ -3236,7 +3236,7 @@ int pa_sink_set_port(pa_sink *s, const char *name, pa_bool_t save) { + return -PA_ERR_NOTIMPLEMENTED; + } + +- if (!s->ports) ++ if (!s->ports || !name) + return -PA_ERR_NOENTITY; + + if (!(port = pa_hashmap_get(s->ports, name))) +diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c +index ab75b21..a5d5af0 100644 +--- a/src/pulsecore/source.c ++++ b/src/pulsecore/source.c +@@ -2506,7 +2506,7 @@ int pa_source_set_port(pa_source *s, const char *name, pa_bool_t save) { + return -PA_ERR_NOTIMPLEMENTED; + } + +- if (!s->ports) ++ if (!s->ports || !name) + return -PA_ERR_NOENTITY; + + if (!(port = pa_hashmap_get(s->ports, name))) +-- +1.7.9.1 + --- pulseaudio-1.1.orig/debian/patches/series +++ pulseaudio-1.1/debian/patches/series @@ -0,0 +1,51 @@ +# Ubuntu/Debian specific config/fixes +0002-In-KDE-only-start-pulseaudio-from-the-KDE-specific-d.patch +0002-add-padsp-wrapper-check.patch +0003-esd-honour-system-pulseaudio.patch +0005-dont-load-cork-music-on-phone.patch +0006-load-module-x11-bell.patch +0007-handle-Master-Front.patch +0008-delay-gnome-autostart.patch +0010-lp453966-handle-digmic-pt2.patch +0016-nodisplay-autostart.patch +0017-Hack-around-a-bug-in-the-core-causing-volumes-not-to.patch +0019-disable-dbus-protocol.patch +0020-daemon-Initialize-dbus-to-use-thread-safe-mode-by-de.patch +0021-Fix-input-device-for-M-audio-fasttrack-pro.patch + +# Taken from upstream git +0101-alsa-Ignore-the-virtual-thinkpad-acpi-card.patch +0102-alsa-mixer-When-selecting-an-input-turn-off-boosts-o.patch +0103-alsa-mixer-Allow-speaker-port-to-control-Front-Speak.patch +0104-alsa-Improve-well-known-descriptions-for-ports.patch +0105-loopback-Fix-crashes.patch +0106-pulse-Fix-old-bug-in-stream_free.patch +0107-tunnel-fixup-create_record_stream.patch +0108-sample-util-Fix-Darth-Vader-panning-bug.patch +0109-loopback-Fix-crash-when-moving-sink-input-fails.patch +0110-flist-Avoid-the-ABA-problem.patch +0111-protocol-native-Protect-against-clients-trying-to-se.patch +0112-module-loopback-Never-call-adjust_rates-after-teardo.patch + +# Jack detection patches (upstreamed) +0600-ship-PROTOCOL-file.patch +0601-Introduce-available-concept-for-ports-and-communicat.patch +0602-Turn-device-ports-into-reference-counted-objects.patch +0603-Cards-now-has-ports-directly-and-device-port-has-lis.patch +0604-Notify-port-available-status-changes-and-update-prot.patch +0605-cli-Show-card-ports-and-jack-detection-status.patch +0606-alsa-add-card-ports-and-path-probe-cache.patch +0607-Fixup-a-few-things-in-the-new-path-probing.patch +0608-pactl-Show-port-availability.patch +0609-device-port-Add-a-property-list-to-ports.patch +0615-alsa-mixer-Make-sure-unsupported-paths-are-removed-a.patch +0618-alsa-mixer-Don-t-use-dangling-pointers-as-port-hashm.patch +0610-Jack-detection-kcontrol-implementation.patch +0611-Expose-port-info-per-card-to-clients.-Update-protoco.patch +0612-Add-port-information-to-HDMI-profiles.patch +0613-Add-a-new-module-switch-on-port-available-that-acts-.patch +0614-Load-switch-on-port-available-module-by-default.patch +0616-alsa-mixer-Make-speaker-get-available-no-when-headph.patch +0617-Handle-multiple-jacks-in-a-port.patch +0619-module-switch-on-port-available-Do-not-switch-profil.patch + --- pulseaudio-1.1.orig/debian/patches/0614-Load-switch-on-port-available-module-by-default.patch +++ pulseaudio-1.1/debian/patches/0614-Load-switch-on-port-available-module-by-default.patch @@ -0,0 +1,26 @@ +From dd17f0cb97e3bb1ee04015da3bba136920278187 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Mon, 5 Sep 2011 15:35:28 +0200 +Subject: [PATCH 614/614] Load switch-on-port-available module by default + +Signed-off-by: David Henningsson +--- + src/daemon/default.pa.in | 2 ++ + 1 files changed, 2 insertions(+), 0 deletions(-) + +diff --git a/src/daemon/default.pa.in b/src/daemon/default.pa.in +index c6ec29c..467eee3 100755 +--- a/src/daemon/default.pa.in ++++ b/src/daemon/default.pa.in +@@ -190,6 +190,8 @@ ifelse(@HAVE_X11@, 1, [dnl + #.endif + ])dnl + ++load-module module-switch-on-port-available ++ + ### Make some devices default + #set-default-sink output + #set-default-source input +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0020-daemon-Initialize-dbus-to-use-thread-safe-mode-by-de.patch +++ pulseaudio-1.1/debian/patches/0020-daemon-Initialize-dbus-to-use-thread-safe-mode-by-de.patch @@ -0,0 +1,38 @@ +From 694951c8b922bf859159a54bbd9e9b1c912673f2 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Mon, 12 Mar 2012 23:51:42 +0100 +Subject: [PATCH] daemon: Initialize dbus to use thread-safe mode by default + +In most cases, we use dbuus from more than one thread, as we +e g enable real-time scheduling from the ALSA threads. +Therefore set dbus to thread-safe mode by default, as recommended +in https://bugs.freedesktop.org/show_bug.cgi?id=47060#c5 + +This fixes a bug where PulseAudio could crash in two parallel +calls to pa_make_realtime. + +BugLink: https://bugs.launchpad.net/bugs/937933 +Signed-off-by: David Henningsson +--- + src/daemon/main.c | 5 +++++ + 1 files changed, 5 insertions(+), 0 deletions(-) + +diff --git a/src/daemon/main.c b/src/daemon/main.c +index 19933e3..3374196 100644 +--- a/src/daemon/main.c ++++ b/src/daemon/main.c +@@ -1066,6 +1066,11 @@ int main(int argc, char *argv[]) { + buf = pa_strbuf_new(); + + #ifdef HAVE_DBUS ++ if (!dbus_threads_init_default()) { ++ pa_log("dbus_threads_init_default() failed."); ++ goto finish; ++ } ++ + if (start_server) { + #endif + if (conf->load_default_script_file) { +-- +1.7.9.1 + --- pulseaudio-1.1.orig/debian/patches/0110-flist-Avoid-the-ABA-problem.patch +++ pulseaudio-1.1/debian/patches/0110-flist-Avoid-the-ABA-problem.patch @@ -0,0 +1,174 @@ +From 641103314a423328094624db0f518630d5d90dee Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Sun, 4 Mar 2012 06:07:37 +0100 +Subject: [PATCH 1/2] flist: Avoid the ABA problem + +Our flist implementation suffers from the ABA problem +(see http://en.wikipedia.org/wiki/ABA_problem), causing PulseAudio +to crash very rarely, usually inside memblock operations. +By turning stored pointers into stored table indices, we have some +extra bits that we can use to store tag bits, which is a known +workaround for the ABA problem. + +Buglink: https://bugs.launchpad.net/bugs/924416 +Signed-off-by: David Henningsson +--- + src/pulsecore/flist.c | 70 ++++++++++++++++++++++++++++++++++-------------- + 1 files changed, 49 insertions(+), 21 deletions(-) + +diff --git a/src/pulsecore/flist.c b/src/pulsecore/flist.c +index d279271..fa8974a 100644 +--- a/src/pulsecore/flist.c ++++ b/src/pulsecore/flist.c +@@ -3,6 +3,7 @@ + + Copyright 2006-2008 Lennart Poettering + Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ++ Copyright (C) 2012 Canonical Ltd. + + Contact: Jyri Sarha + +@@ -38,9 +39,15 @@ + + #define FLIST_SIZE 128 + ++/* Atomic table indices contain ++ sign bit = if set, indicates empty/NULL value ++ tag bits (to avoid the ABA problem) ++ actual index bits ++*/ ++ + /* Lock free single linked list element. */ + struct pa_flist_elem { +- pa_atomic_ptr_t next; ++ pa_atomic_t next; + pa_atomic_ptr_t ptr; + }; + +@@ -49,34 +56,49 @@ typedef struct pa_flist_elem pa_flist_elem; + struct pa_flist { + const char *name; + unsigned size; ++ ++ pa_atomic_t current_tag; ++ int index_mask; ++ int tag_shift; ++ int tag_mask; ++ + /* Stack that contains pointers stored into free list */ +- pa_atomic_ptr_t stored; ++ pa_atomic_t stored; + /* Stack that contains empty list elements */ +- pa_atomic_ptr_t empty; ++ pa_atomic_t empty; + pa_flist_elem table[]; + }; + + /* Lock free pop from linked list stack */ +-static pa_flist_elem *stack_pop(pa_atomic_ptr_t *list) { +- pa_flist_elem *poped; ++static pa_flist_elem *stack_pop(pa_flist *flist, pa_atomic_t *list) { ++ pa_flist_elem *popped; ++ int idx; + pa_assert(list); + + do { +- poped = (pa_flist_elem *) pa_atomic_ptr_load(list); +- } while (poped != NULL && !pa_atomic_ptr_cmpxchg(list, poped, pa_atomic_ptr_load(&poped->next))); ++ idx = pa_atomic_load(list); ++ if (idx < 0) ++ return NULL; ++ popped = &flist->table[idx & flist->index_mask]; ++ } while (!pa_atomic_cmpxchg(list, idx, pa_atomic_load(&popped->next))); + +- return poped; ++ return popped; + } + + /* Lock free push to linked list stack */ +-static void stack_push(pa_atomic_ptr_t *list, pa_flist_elem *new_elem) { +- pa_flist_elem *next; ++static void stack_push(pa_flist *flist, pa_atomic_t *list, pa_flist_elem *new_elem) { ++ int tag, newindex, next; + pa_assert(list); + ++ tag = pa_atomic_inc(&flist->current_tag); ++ newindex = new_elem - flist->table; ++ pa_assert(newindex >= 0 && newindex < (int) flist->size); ++ newindex |= (tag << flist->tag_shift) & flist->tag_mask; ++ + do { +- next = pa_atomic_ptr_load(list); +- pa_atomic_ptr_store(&new_elem->next, next); +- } while (!pa_atomic_ptr_cmpxchg(list, next, new_elem)); ++ next = pa_atomic_load(list); ++ pa_atomic_store(&new_elem->next, next); ++ } while (!pa_atomic_cmpxchg(list, next, newindex)); + } + + pa_flist *pa_flist_new_with_name(unsigned size, const char *name) { +@@ -91,10 +113,16 @@ pa_flist *pa_flist_new_with_name(unsigned size, const char *name) { + + l->name = pa_xstrdup(name); + l->size = size; +- pa_atomic_ptr_store(&l->stored, NULL); +- pa_atomic_ptr_store(&l->empty, NULL); ++ ++ while (1 << l->tag_shift < (int) size) ++ l->tag_shift++; ++ l->index_mask = (1 << l->tag_shift) - 1; ++ l->tag_mask = INT_MAX - l->index_mask; ++ ++ pa_atomic_store(&l->stored, -1); ++ pa_atomic_store(&l->empty, -1); + for (i=0; i < size; i++) { +- stack_push(&l->empty, &l->table[i]); ++ stack_push(l, &l->empty, &l->table[i]); + } + return l; + } +@@ -109,7 +137,7 @@ void pa_flist_free(pa_flist *l, pa_free_cb_t free_cb) { + + if (free_cb) { + pa_flist_elem *elem; +- while((elem = stack_pop(&l->stored))) ++ while((elem = stack_pop(l, &l->stored))) + free_cb(pa_atomic_ptr_load(&elem->ptr)); + } + +@@ -122,14 +150,14 @@ int pa_flist_push(pa_flist *l, void *p) { + pa_assert(l); + pa_assert(p); + +- elem = stack_pop(&l->empty); ++ elem = stack_pop(l, &l->empty); + if (elem == NULL) { + if (pa_log_ratelimit(PA_LOG_DEBUG)) + pa_log_debug("%s flist is full (don't worry)", l->name); + return -1; + } + pa_atomic_ptr_store(&elem->ptr, p); +- stack_push(&l->stored, elem); ++ stack_push(l, &l->stored, elem); + + return 0; + } +@@ -139,13 +167,13 @@ void* pa_flist_pop(pa_flist *l) { + void *ptr; + pa_assert(l); + +- elem = stack_pop(&l->stored); ++ elem = stack_pop(l, &l->stored); + if (elem == NULL) + return NULL; + + ptr = pa_atomic_ptr_load(&elem->ptr); + +- stack_push(&l->empty, elem); ++ stack_push(l, &l->empty, elem); + + return ptr; + } +-- +1.7.5.4 + --- pulseaudio-1.1.orig/debian/patches/0618-alsa-mixer-Don-t-use-dangling-pointers-as-port-hashm.patch +++ pulseaudio-1.1/debian/patches/0618-alsa-mixer-Don-t-use-dangling-pointers-as-port-hashm.patch @@ -0,0 +1,40 @@ +From 13a84d0747c9fe114850477460f2ac68cba0c4b6 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Wed, 15 Feb 2012 16:51:31 +0100 +Subject: [PATCH] alsa-mixer: Don't use dangling pointers as port hashmap keys + +If alsa settings/options were used, the string to construct the +name was freed, leading to dangling pointers to strings inside +the hashmap. + +BugLink: https://bugs.launchpad.net/bugs/932804 +Signed-off-by: David Henningsson +--- + src/modules/alsa/alsa-mixer.c | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c +index 9bf8069..7e6ef54 100644 +--- a/src/modules/alsa/alsa-mixer.c ++++ b/src/modules/alsa/alsa-mixer.c +@@ -4397,7 +4397,7 @@ static pa_device_port* device_port_alsa_init(pa_hashmap *ports, + + p = pa_device_port_new(core, name, description, sizeof(pa_alsa_port_data)); + pa_assert(p); +- pa_hashmap_put(ports, name, p); ++ pa_hashmap_put(ports, p->name, p); + p->profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); + + data = PA_DEVICE_PORT_DATA(p); +@@ -4412,7 +4412,7 @@ static pa_device_port* device_port_alsa_init(pa_hashmap *ports, + pa_hashmap_put(p->profiles, cp->name, cp); + + if (extra) { +- pa_hashmap_put(extra, name, p); ++ pa_hashmap_put(extra, p->name, p); + pa_device_port_ref(p); + } + +-- +1.7.9 + --- pulseaudio-1.1.orig/debian/patches/0608-pactl-Show-port-availability.patch +++ pulseaudio-1.1/debian/patches/0608-pactl-Show-port-availability.patch @@ -0,0 +1,53 @@ +From 537020d0aff70b8c84cfdcbec43243d02b61d0d7 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 2 Dec 2011 14:15:28 +0100 +Subject: [PATCH 608/614] pactl: Show port availability + +Signed-off-by: David Henningsson +--- + src/utils/pactl.c | 15 +++++++++++++-- + 1 files changed, 13 insertions(+), 2 deletions(-) + +diff --git a/src/utils/pactl.c b/src/utils/pactl.c +index b1a0064..53017d6 100644 +--- a/src/utils/pactl.c ++++ b/src/utils/pactl.c +@@ -212,6 +212,15 @@ static void get_server_info_callback(pa_context *c, const pa_server_info *i, voi + complete_action(); + } + ++static const char* get_available_str_ynonly(int available) ++{ ++ switch (available) { ++ case PA_PORT_AVAILABLE_YES: return ", available"; ++ case PA_PORT_AVAILABLE_NO: return ", not available"; ++ } ++ return ""; ++} ++ + static void get_sink_info_callback(pa_context *c, const pa_sink_info *i, int is_last, void *userdata) { + + static const char *state_table[] = { +@@ -308,7 +317,8 @@ static void get_sink_info_callback(pa_context *c, const pa_sink_info *i, int is_ + + printf(_("\tPorts:\n")); + for (p = i->ports; *p; p++) +- printf("\t\t%s: %s (priority. %u)\n", (*p)->name, (*p)->description, (*p)->priority); ++ printf("\t\t%s: %s (priority: %u%s)\n", (*p)->name, (*p)->description, (*p)->priority, ++ get_available_str_ynonly((*p)->available)); + } + + if (i->active_port) +@@ -419,7 +429,8 @@ static void get_source_info_callback(pa_context *c, const pa_source_info *i, int + + printf(_("\tPorts:\n")); + for (p = i->ports; *p; p++) +- printf("\t\t%s: %s (priority. %u)\n", (*p)->name, (*p)->description, (*p)->priority); ++ printf("\t\t%s: %s (priority: %u%s)\n", (*p)->name, (*p)->description, (*p)->priority, ++ get_available_str_ynonly((*p)->available)); + } + + if (i->active_port) +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0008-delay-gnome-autostart.patch +++ pulseaudio-1.1/debian/patches/0008-delay-gnome-autostart.patch @@ -0,0 +1,10 @@ +Description: Delay applet startup by some seconds, so that pulseaudio has started up enough to avoid starting it a second time through autospawn. +Index: pulseaudio/src/daemon/pulseaudio.desktop.in +=================================================================== +--- pulseaudio.orig/src/daemon/pulseaudio.desktop.in 2010-02-01 18:10:40.000000000 -0800 ++++ pulseaudio/src/daemon/pulseaudio.desktop.in 2010-02-01 18:10:48.000000000 -0800 +@@ -8,3 +8,4 @@ + Type=Application + Categories= + GenericName= ++X-GNOME-Autostart-Delay=8 --- pulseaudio-1.1.orig/debian/patches/0002-add-padsp-wrapper-check.patch +++ pulseaudio-1.1/debian/patches/0002-add-padsp-wrapper-check.patch @@ -0,0 +1,21 @@ +Index: pulseaudio-0.9.14/src/utils/padsp +=================================================================== +--- pulseaudio-0.9.14.orig/src/utils/padsp 2009-01-21 18:14:59.000000000 -0500 ++++ pulseaudio-0.9.14/src/utils/padsp 2009-01-21 18:24:06.000000000 -0500 +@@ -75,10 +75,12 @@ + + shift $(( $OPTIND - 1 )) + +-if [ x"$LD_PRELOAD" = x ] ; then +- LD_PRELOAD="libpulsedsp.so" +-else +- LD_PRELOAD="$LD_PRELOAD libpulsedsp.so" ++if `pgrep -f /usr/bin/pulseaudio 1>/dev/null` ; then ++ if [ x"$LD_PRELOAD" = x ] ; then ++ LD_PRELOAD="libpulsedsp.so" ++ else ++ LD_PRELOAD="$LD_PRELOAD libpulsedsp.so" ++ fi + fi + + export LD_PRELOAD --- pulseaudio-1.1.orig/debian/patches/0612-Add-port-information-to-HDMI-profiles.patch +++ pulseaudio-1.1/debian/patches/0612-Add-port-information-to-HDMI-profiles.patch @@ -0,0 +1,304 @@ +From 34de70fd21296d455ccb77daceca039afc2a20bd Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Tue, 10 Jan 2012 10:50:34 +0100 +Subject: [PATCH 2/7] Add port information to HDMI profiles + +For Nvidia and Intel, support probing of up to four HDMI devices. +Also add port information to all HDMI profiles. + +Signed-off-by: David Henningsson +--- + src/Makefile.am | 7 +- + src/modules/alsa/mixer/paths/hdmi-output-0.conf | 6 + + src/modules/alsa/mixer/paths/hdmi-output-1.conf | 6 + + src/modules/alsa/mixer/paths/hdmi-output-2.conf | 6 + + src/modules/alsa/mixer/paths/hdmi-output-3.conf | 6 + + .../alsa/mixer/profile-sets/90-pulseaudio.rules | 22 ++- + src/modules/alsa/mixer/profile-sets/default.conf | 1 + + .../alsa/mixer/profile-sets/extra-hdmi.conf | 158 ++++++++++++++++++++ + 8 files changed, 203 insertions(+), 9 deletions(-) + create mode 100644 src/modules/alsa/mixer/paths/hdmi-output-0.conf + create mode 100644 src/modules/alsa/mixer/paths/hdmi-output-1.conf + create mode 100644 src/modules/alsa/mixer/paths/hdmi-output-2.conf + create mode 100644 src/modules/alsa/mixer/paths/hdmi-output-3.conf + create mode 100644 src/modules/alsa/mixer/profile-sets/extra-hdmi.conf + +Index: pulseaudio-1.1/src/Makefile.am +=================================================================== +--- pulseaudio-1.1.orig/src/Makefile.am 2012-02-07 09:12:03.000000000 +0100 ++++ pulseaudio-1.1/src/Makefile.am 2012-02-07 09:13:48.732136646 +0100 +@@ -1069,6 +1069,7 @@ + + dist_alsaprofilesets_DATA = \ + modules/alsa/mixer/profile-sets/default.conf \ ++ modules/alsa/mixer/profile-sets/extra-hdmi.conf \ + modules/alsa/mixer/profile-sets/maudio-fasttrack-pro.conf \ + modules/alsa/mixer/profile-sets/native-instruments-audio4dj.conf \ + modules/alsa/mixer/profile-sets/native-instruments-audio8dj.conf \ +@@ -1106,7 +1107,11 @@ + modules/alsa/mixer/paths/analog-output-headphones-2.conf \ + modules/alsa/mixer/paths/analog-output-lfe-on-mono.conf \ + modules/alsa/mixer/paths/analog-output-mono.conf \ +- modules/alsa/mixer/paths/iec958-stereo-output.conf ++ modules/alsa/mixer/paths/iec958-stereo-output.conf \ ++ modules/alsa/mixer/paths/hdmi-output-0.conf \ ++ modules/alsa/mixer/paths/hdmi-output-1.conf \ ++ modules/alsa/mixer/paths/hdmi-output-2.conf \ ++ modules/alsa/mixer/paths/hdmi-output-3.conf + + endif + +Index: pulseaudio-1.1/src/modules/alsa/mixer/paths/hdmi-output-0.conf +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ pulseaudio-1.1/src/modules/alsa/mixer/paths/hdmi-output-0.conf 2012-02-07 09:13:48.732136646 +0100 +@@ -0,0 +1,6 @@ ++[General] ++description = HDMI / DisplayPort ++priority = 59 ++ ++[Jack HDMI/DP,pcm=3] ++required-any = any +Index: pulseaudio-1.1/src/modules/alsa/mixer/paths/hdmi-output-1.conf +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ pulseaudio-1.1/src/modules/alsa/mixer/paths/hdmi-output-1.conf 2012-02-07 09:13:48.732136646 +0100 +@@ -0,0 +1,6 @@ ++[General] ++description = HDMI / DisplayPort 2 ++priority = 58 ++ ++[Jack HDMI/DP,pcm=7] ++required-any = any +Index: pulseaudio-1.1/src/modules/alsa/mixer/paths/hdmi-output-2.conf +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ pulseaudio-1.1/src/modules/alsa/mixer/paths/hdmi-output-2.conf 2012-02-07 09:13:48.732136646 +0100 +@@ -0,0 +1,6 @@ ++[General] ++description = HDMI / DisplayPort 3 ++priority = 57 ++ ++[Jack HDMI/DP,pcm=8] ++required-any = any +Index: pulseaudio-1.1/src/modules/alsa/mixer/paths/hdmi-output-3.conf +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ pulseaudio-1.1/src/modules/alsa/mixer/paths/hdmi-output-3.conf 2012-02-07 09:13:48.732136646 +0100 +@@ -0,0 +1,6 @@ ++[General] ++description = HDMI / DisplayPort 4 ++priority = 56 ++ ++[Jack HDMI/DP,pcm=9] ++required-any = any +Index: pulseaudio-1.1/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules +=================================================================== +--- pulseaudio-1.1.orig/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules 2012-02-07 09:12:03.000000000 +0100 ++++ pulseaudio-1.1/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules 2012-02-07 09:16:16.676128830 +0100 +@@ -19,15 +19,22 @@ + SUBSYSTEM!="sound", GOTO="pulseaudio_end" + ACTION!="change", GOTO="pulseaudio_end" + KERNEL!="card*", GOTO="pulseaudio_end" ++SUBSYSTEMS=="usb", GOTO="pulseaudio_check_usb" ++ ++# NVidia and Intel HDAs often have more than one HDMI codec/port on the same card ++ATTRS{vendor}=="0x10de", ENV{PULSE_PROFILE_SET}="extra-hdmi.conf" ++ATTRS{vendor}=="0x8086", ENV{PULSE_PROFILE_SET}="extra-hdmi.conf" + + SUBSYSTEMS=="platform", DRIVERS=="thinkpad_acpi", ENV{PULSE_IGNORE}="1" +-SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="1978", ENV{PULSE_PROFILE_SET}="native-instruments-audio8dj.conf" +-SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="0839", ENV{PULSE_PROFILE_SET}="native-instruments-audio4dj.conf" +-SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="baff", ENV{PULSE_PROFILE_SET}="native-instruments-traktorkontrol-s4.conf" +-SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="4711", ENV{PULSE_PROFILE_SET}="native-instruments-korecontroller.conf" +-SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="1011", ENV{PULSE_PROFILE_SET}="native-instruments-traktor-audio6.conf" +-SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="1021", ENV{PULSE_PROFILE_SET}="native-instruments-traktor-audio10.conf" +-SUBSYSTEMS=="usb", ATTRS{idVendor}=="0763", ATTRS{idProduct}=="2012", ENV{PULSE_PROFILE_SET}="maudio-fasttrack-pro.conf" +-SUBSYSTEMS=="usb", ATTRS{idVendor}=="045e", ATTRS{idProduct}=="02bb", ENV{PULSE_PROFILE_SET}="kinect-audio.conf" ++ ++LABEL="pulseaudio_check_usb" ++ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="1978", ENV{PULSE_PROFILE_SET}="native-instruments-audio8dj.conf" ++ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="0839", ENV{PULSE_PROFILE_SET}="native-instruments-audio4dj.conf" ++ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="baff", ENV{PULSE_PROFILE_SET}="native-instruments-traktorkontrol-s4.conf" ++ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="4711", ENV{PULSE_PROFILE_SET}="native-instruments-korecontroller.conf" ++ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="1011", ENV{PULSE_PROFILE_SET}="native-instruments-traktor-audio6.conf" ++ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="1021", ENV{PULSE_PROFILE_SET}="native-instruments-traktor-audio10.conf" ++ATTRS{idVendor}=="0763", ATTRS{idProduct}=="2012", ENV{PULSE_PROFILE_SET}="maudio-fasttrack-pro.conf" ++ATTRS{idVendor}=="045e", ATTRS{idProduct}=="02bb", ENV{PULSE_PROFILE_SET}="kinect-audio.conf" + + LABEL="pulseaudio_end" +Index: pulseaudio-1.1/src/modules/alsa/mixer/profile-sets/default.conf +=================================================================== +--- pulseaudio-1.1.orig/src/modules/alsa/mixer/profile-sets/default.conf 2011-10-20 14:54:16.000000000 +0200 ++++ pulseaudio-1.1/src/modules/alsa/mixer/profile-sets/default.conf 2012-02-07 09:13:48.732136646 +0100 +@@ -172,6 +172,7 @@ + channel-map = left,right + priority = 4 + direction = output ++paths-output = hdmi-output-0 + + ; An example for defining multiple-sink profiles + #[Profile output:analog-stereo+output:iec958-stereo+input:analog-stereo] +Index: pulseaudio-1.1/src/modules/alsa/mixer/profile-sets/extra-hdmi.conf +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ pulseaudio-1.1/src/modules/alsa/mixer/profile-sets/extra-hdmi.conf 2012-02-07 09:13:48.736136647 +0100 +@@ -0,0 +1,158 @@ ++# This file is part of PulseAudio. ++# ++# PulseAudio is free software; you can redistribute it and/or modify ++# it under the terms of the GNU Lesser General Public License as ++# published by the Free Software Foundation; either version 2.1 of the ++# License, or (at your option) any later version. ++# ++# PulseAudio is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public License ++# along with PulseAudio; if not, write to the Free Software Foundation, ++# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. ++ ++; This is a profile for Nvidia and Intel cards - some cards have four HDMI codecs, ++; and which ones are working seems to vary a lot between GPU boards. In addition, ++; Nvidia and Intel make southbridges as well, so we need to keep the existing ++; analog profiles. ++; (And by not adding all these extra profiles to default.conf, we make sure ++; there is no performance hit for non-Nvidia/Intel cards.) ++ ++[General] ++auto-profiles = yes ++ ++[Mapping analog-mono] ++device-strings = hw:%f ++channel-map = mono ++paths-output = analog-output analog-output-speaker analog-output-desktop-speaker analog-output-headphones analog-output-headphones-2 analog-output-mono analog-output-lfe-on-mono ++paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line ++priority = 1 ++ ++[Mapping analog-stereo] ++device-strings = front:%f hw:%f ++channel-map = left,right ++paths-output = analog-output analog-output-speaker analog-output-desktop-speaker analog-output-headphones analog-output-headphones-2 analog-output-mono analog-output-lfe-on-mono ++paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line ++priority = 10 ++ ++[Mapping analog-surround-40] ++device-strings = surround40:%f ++channel-map = front-left,front-right,rear-left,rear-right ++paths-output = analog-output analog-output-speaker analog-output-desktop-speaker analog-output-lfe-on-mono ++priority = 7 ++direction = output ++ ++[Mapping analog-surround-41] ++device-strings = surround41:%f ++channel-map = front-left,front-right,rear-left,rear-right,lfe ++paths-output = analog-output analog-output-speaker analog-output-desktop-speaker analog-output-lfe-on-mono ++priority = 8 ++direction = output ++ ++[Mapping analog-surround-50] ++device-strings = surround50:%f ++channel-map = front-left,front-right,rear-left,rear-right,front-center ++paths-output = analog-output analog-output-speaker analog-output-desktop-speaker analog-output-lfe-on-mono ++priority = 7 ++direction = output ++ ++[Mapping analog-surround-51] ++device-strings = surround51:%f ++channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe ++paths-output = analog-output analog-output-speaker analog-output-desktop-speaker analog-output-lfe-on-mono ++priority = 8 ++direction = output ++ ++[Mapping analog-surround-71] ++device-strings = surround71:%f ++channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right ++description = Analog Surround 7.1 ++paths-output = analog-output analog-output-speaker analog-output-desktop-speaker analog-output-lfe-on-mono ++priority = 7 ++direction = output ++ ++[Mapping iec958-stereo] ++device-strings = iec958:%f ++channel-map = left,right ++paths-input = iec958-stereo-input ++paths-output = iec958-stereo-output ++priority = 5 ++ ++[Mapping iec958-ac3-surround-40] ++device-strings = a52:%f ++channel-map = front-left,front-right,rear-left,rear-right ++priority = 2 ++direction = output ++ ++[Mapping iec958-ac3-surround-51] ++device-strings = a52:%f ++channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe ++priority = 3 ++direction = output ++ ++[Mapping hdmi-stereo] ++device-strings = hdmi:%f ++description = Digital Stereo (HDMI) ++paths-output = hdmi-output-0 ++channel-map = left,right ++priority = 4 ++direction = output ++ ++[Mapping hdmi-surround] ++description = Digital Surround 5.1 (HDMI) ++device-strings = hdmi:%f ++paths-output = hdmi-output-0 ++channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe ++priority = 3 ++direction = output ++ ++[Mapping hdmi-stereo-extra1] ++description = Digital Stereo (HDMI) ++device-strings = hdmi:%f,1 ++paths-output = hdmi-output-1 ++channel-map = left,right ++priority = 2 ++direction = output ++ ++[Mapping hdmi-surround-extra1] ++description = Digital Surround 5.1 (HDMI) ++device-strings = hdmi:%f,1 ++paths-output = hdmi-output-1 ++channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe ++priority = 1 ++direction = output ++ ++[Mapping hdmi-stereo-extra2] ++description = Digital Stereo (HDMI) ++device-strings = hdmi:%f,2 ++paths-output = hdmi-output-2 ++channel-map = left,right ++priority = 2 ++direction = output ++ ++[Mapping hdmi-surround-extra2] ++description = Digital Surround 5.1 (HDMI) ++device-strings = hdmi:%f,2 ++paths-output = hdmi-output-2 ++channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe ++priority = 1 ++direction = output ++ ++[Mapping hdmi-stereo-extra3] ++description = Digital Stereo (HDMI) ++device-strings = hdmi:%f,3 ++paths-output = hdmi-output-3 ++channel-map = left,right ++priority = 2 ++direction = output ++ ++[Mapping hdmi-surround-extra3] ++description = Digital Surround 5.1 (HDMI) ++device-strings = hdmi:%f,3 ++paths-output = hdmi-output-3 ++channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe ++priority = 1 ++direction = output --- pulseaudio-1.1.orig/debian/patches/0101-alsa-Ignore-the-virtual-thinkpad-acpi-card.patch +++ pulseaudio-1.1/debian/patches/0101-alsa-Ignore-the-virtual-thinkpad-acpi-card.patch @@ -0,0 +1,29 @@ +From 078a39af886ea3bb590595b973343af77c2837fe Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Wed, 30 Nov 2011 12:51:06 +0100 +Subject: [PATCH] alsa: Ignore the virtual "thinkpad-acpi" card + +The thinkpad ACPI driver sometimes creates a virtual sound card, +which at best exposes a volume control. Save some startup time, and +unnecessary error messages in the log, by ignoring it. + +Signed-off-by: David Henningsson +--- + .../alsa/mixer/profile-sets/90-pulseaudio.rules | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +diff --git a/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules b/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules +index 65864f7..e6cfef5 100644 +--- a/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules ++++ b/src/modules/alsa/mixer/profile-sets/90-pulseaudio.rules +@@ -20,6 +20,7 @@ SUBSYSTEM!="sound", GOTO="pulseaudio_end" + ACTION!="change", GOTO="pulseaudio_end" + KERNEL!="card*", GOTO="pulseaudio_end" + ++SUBSYSTEMS=="platform", DRIVERS=="thinkpad_acpi", ENV{PULSE_IGNORE}="1" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="1978", ENV{PULSE_PROFILE_SET}="native-instruments-audio8dj.conf" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="0839", ENV{PULSE_PROFILE_SET}="native-instruments-audio4dj.conf" + SUBSYSTEMS=="usb", ATTRS{idVendor}=="17cc", ATTRS{idProduct}=="baff", ENV{PULSE_PROFILE_SET}="native-instruments-traktorkontrol-s4.conf" +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0616-alsa-mixer-Make-speaker-get-available-no-when-headph.patch +++ pulseaudio-1.1/debian/patches/0616-alsa-mixer-Make-speaker-get-available-no-when-headph.patch @@ -0,0 +1,196 @@ +From b6d4a2295ec898ecf5460a4489fb8f606123c28a Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Wed, 1 Feb 2012 13:59:42 +0100 +Subject: [PATCH 1/3] alsa-mixer: Make speaker get available=no when + headphones are plugged in + +The least ugly workaround I could think of to make "speakers" disappear +from the new UI. "Speaker" will now toggle between +PA_PORT_AVAILABLE_NO (when Headphones are plugged in) and +PA_PORT_AVAILABLE_UNKNOWN (when they are not). + +The same applies for "Mic" and "Internal Mic". + +Signed-off-by: David Henningsson +--- + src/modules/alsa/alsa-mixer.c | 48 +++++++++++++++++++- + src/modules/alsa/alsa-mixer.h | 1 + + .../mixer/paths/analog-input-internal-mic.conf | 5 ++ + .../alsa/mixer/paths/analog-output-speaker.conf | 5 ++ + src/modules/alsa/module-alsa-card.c | 2 +- + src/modules/module-switch-on-port-available.c | 3 + + src/pulsecore/device-port.c | 5 +- + 7 files changed, 65 insertions(+), 4 deletions(-) + +diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c +index fe0e42a..c828dad 100644 +--- a/src/modules/alsa/alsa-mixer.c ++++ b/src/modules/alsa/alsa-mixer.c +@@ -1738,6 +1738,8 @@ static pa_alsa_jack* jack_get(pa_alsa_path *p, const char *section) { + goto finish; + + j = pa_xnew0(pa_alsa_jack, 1); ++ j->state_unplugged = PA_PORT_AVAILABLE_NO; ++ j->state_plugged = PA_PORT_AVAILABLE_YES; + j->path = p; + j->name = pa_xstrdup(section); + j->alsa_name = pa_sprintf_malloc("%s Jack", section); +@@ -2201,6 +2203,45 @@ static int element_parse_override_map( + return 0; + } + ++static int jack_parse_state( ++ const char *filename, ++ unsigned line, ++ const char *section, ++ const char *lvalue, ++ const char *rvalue, ++ void *data, ++ void *userdata) { ++ ++ pa_alsa_path *p = userdata; ++ pa_alsa_jack *j; ++ pa_port_available_t pa; ++ ++ if (!(j = jack_get(p, section))) { ++ pa_log("[%s:%u] state makes no sense in '%s'", filename, line, section); ++ return -1; ++ } ++ ++ if (!strcmp(rvalue,"yes")) ++ pa = PA_PORT_AVAILABLE_YES; ++ else if (!strcmp(rvalue,"no")) ++ pa = PA_PORT_AVAILABLE_NO; ++ else if (!strcmp(rvalue,"unknown")) ++ pa = PA_PORT_AVAILABLE_UNKNOWN; ++ else { ++ pa_log("[%s:%u] state must be 'yes','no' or 'unknown' in '%s'", filename, line, section); ++ return -1; ++ } ++ ++ if (!strcmp(lvalue, "state.unplugged")) ++ j->state_unplugged = pa; ++ else { ++ j->state_plugged = pa; ++ pa_assert(!strcmp(lvalue, "state.plugged")); ++ } ++ ++ return 0; ++} ++ + static int element_set_option(pa_alsa_element *e, snd_mixer_t *m, int alsa_idx) { + snd_mixer_selem_id_t *sid; + snd_mixer_elem_t *me; +@@ -2385,6 +2426,10 @@ pa_alsa_path* pa_alsa_path_new(const char *fname, pa_alsa_direction_t direction) + { "priority", option_parse_priority, NULL, NULL }, + { "name", option_parse_name, NULL, NULL }, + ++ /* [Jack ...] */ ++ { "state.plugged", jack_parse_state, NULL, NULL }, ++ { "state.unplugged", jack_parse_state, NULL, NULL }, ++ + /* [Element ...] */ + { "switch", element_parse_switch, NULL, NULL }, + { "volume", element_parse_volume, NULL, NULL }, +@@ -3127,7 +3172,8 @@ static void path_set_condense(pa_alsa_path_set *ps, snd_mixer_t *m) { + if (!ja->has_control) + continue; + PA_LLIST_FOREACH(jb, p2->jacks) +- if (jb->has_control && !strcmp(jb->alsa_name, ja->alsa_name)) { ++ if (jb->has_control && !strcmp(jb->alsa_name, ja->alsa_name) && ++ (ja->state_plugged == jb->state_plugged) && (ja->state_unplugged == jb->state_unplugged)) { + exists = TRUE; + break; + } +diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h +index f55c5c3..d7e4d2f 100644 +--- a/src/modules/alsa/alsa-mixer.h ++++ b/src/modules/alsa/alsa-mixer.h +@@ -164,6 +164,7 @@ struct pa_alsa_jack { + pa_bool_t has_control; /* is the jack itself present? */ + pa_bool_t plugged_in; /* is this jack currently plugged in? */ + snd_hctl_elem_t *hctl_elem; /* Jack detection handle */ ++ pa_port_available_t state_unplugged, state_plugged; + + pa_alsa_required_t required; + pa_alsa_required_t required_any; +diff --git a/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf b/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf +index 70a1cd1..7b7d002 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf +@@ -23,6 +23,11 @@ + priority = 89 + name = analog-input-microphone-internal + ++; This is a workaround ++[Jack Mic] ++state.plugged = no ++state.unplugged = unknown ++ + [Element Internal Mic Boost] + required-any = any + switch = select +diff --git a/src/modules/alsa/mixer/paths/analog-output-speaker.conf b/src/modules/alsa/mixer/paths/analog-output-speaker.conf +index c6916d6..f1a71a7 100644 +--- a/src/modules/alsa/mixer/paths/analog-output-speaker.conf ++++ b/src/modules/alsa/mixer/paths/analog-output-speaker.conf +@@ -22,6 +22,11 @@ + priority = 100 + name = analog-output-speaker + ++; This is a workaround (would be better to be able to disable automute everywhere) ++[Jack Headphone] ++state.plugged = no ++state.unplugged = unknown ++ + [Element Hardware Master] + switch = mute + volume = merge +diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c +index ff50e93..08b27f8 100644 +--- a/src/modules/alsa/module-alsa-card.c ++++ b/src/modules/alsa/module-alsa-card.c +@@ -297,7 +297,7 @@ static int report_jack_state(snd_hctl_elem_t *elem, unsigned int mask) + jack->plugged_in = plugged_in; + /* TODO: Handle more than one jack per port */ + pa_assert(jack->path && jack->path->port); +- pa_device_port_set_available(jack->path->port, plugged_in ? PA_PORT_AVAILABLE_YES : PA_PORT_AVAILABLE_NO); ++ pa_device_port_set_available(jack->path->port, plugged_in ? jack->state_plugged : jack->state_unplugged); + } + return 0; + } +diff --git a/src/modules/module-switch-on-port-available.c b/src/modules/module-switch-on-port-available.c +index 8ee3192..cee4543 100644 +--- a/src/modules/module-switch-on-port-available.c ++++ b/src/modules/module-switch-on-port-available.c +@@ -111,6 +111,9 @@ static pa_hook_result_t port_available_hook_callback(pa_core *c, pa_device_port + pa_source *source; + pa_bool_t is_active_profile, is_active_port; + ++ if (port->available == PA_PORT_AVAILABLE_UNKNOWN) ++ return PA_HOOK_OK; ++ + pa_log_debug("finding port %s", port->name); + PA_IDXSET_FOREACH(card, c->cards, state) + if (card->ports && port == pa_hashmap_get(card->ports, port->name)) +diff --git a/src/pulsecore/device-port.c b/src/pulsecore/device-port.c +index 30fb025..50c99b8 100644 +--- a/src/pulsecore/device-port.c ++++ b/src/pulsecore/device-port.c +@@ -39,10 +39,11 @@ void pa_device_port_set_available(pa_device_port *p, pa_port_available_t status) + if (p->available == status) + return; + +- pa_assert(status != PA_PORT_AVAILABLE_UNKNOWN); ++/* pa_assert(status != PA_PORT_AVAILABLE_UNKNOWN); */ + + p->available = status; +- pa_log_debug("Setting port %s to status %s", p->name, status == PA_PORT_AVAILABLE_YES ? "yes" : "no"); ++ pa_log_debug("Setting port %s to status %s", p->name, status == PA_PORT_AVAILABLE_YES ? "yes" : ++ status == PA_PORT_AVAILABLE_NO ? "no" : "unknown"); + + /* Post subscriptions to the card which owns us */ + pa_assert_se(core = p->core); +-- +1.7.9 + --- pulseaudio-1.1.orig/debian/patches/0010-lp453966-handle-digmic-pt2.patch +++ pulseaudio-1.1/debian/patches/0010-lp453966-handle-digmic-pt2.patch @@ -0,0 +1,20 @@ +Index: pulseaudio-0.9.22~0.9.21+stable-queue-32-g8478/src/modules/alsa/mixer/paths/analog-input.conf.common +=================================================================== +--- pulseaudio-0.9.22~0.9.21+stable-queue-32-g8478.orig/src/modules/alsa/mixer/paths/analog-input.conf.common 2010-03-18 19:31:29.000000000 -0400 ++++ pulseaudio-0.9.22~0.9.21+stable-queue-32-g8478/src/modules/alsa/mixer/paths/analog-input.conf.common 2010-03-18 19:33:32.000000000 -0400 +@@ -272,12 +272,12 @@ + [Element Digital Input Source] + enumeration = select + +-[Option Digital Input Source:Analog Inputs] +-name = input +- + [Option Digital Input Source:Digital Mic 1] + name = input-microphone + ++[Option Digital Input Source:Analog Inputs] ++name = input ++ + [Option Digital Input Source:Digital Mic 2] + name = input-microphone + --- pulseaudio-1.1.orig/debian/patches/0112-module-loopback-Never-call-adjust_rates-after-teardo.patch +++ pulseaudio-1.1/debian/patches/0112-module-loopback-Never-call-adjust_rates-after-teardo.patch @@ -0,0 +1,47 @@ +From 00c3a4958e543a98ae05988b104129d02b596194 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Tue, 20 Mar 2012 11:44:15 +0100 +Subject: [PATCH] module-loopback: Never call adjust_rates after teardown + +Calling adjust_rates after teardown results in segfault, and +judging from the Ubuntu bug report, this can happen. +Actively prevent this by destroying the time event, and by +setting adjust_time to 0, we also prevent this routine being +called on max request update. + +BugLink: https://bugs.launchpad.net/bugs/946400 +Signed-off-by: David Henningsson +--- + src/modules/module-loopback.c | 10 +++++++--- + 1 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c +index 5c87c6c..ba62453 100644 +--- a/src/modules/module-loopback.c ++++ b/src/modules/module-loopback.c +@@ -137,6 +137,13 @@ static void teardown(struct userdata *u) { + pa_assert_ctl_context(); + + pa_asyncmsgq_flush(u->asyncmsgq, 0); ++ ++ u->adjust_time = 0; ++ if (u->time_event) { ++ u->core->mainloop->time_free(u->time_event); ++ u->time_event = NULL; ++ } ++ + if (u->sink_input) + pa_sink_input_unlink(u->sink_input); + +@@ -860,8 +867,5 @@ void pa__done(pa_module*m) { + if (u->asyncmsgq) + pa_asyncmsgq_unref(u->asyncmsgq); + +- if (u->time_event) +- u->core->mainloop->time_free(u->time_event); +- + pa_xfree(u); + } +-- +1.7.9.1 + --- pulseaudio-1.1.orig/debian/patches/0610-Jack-detection-kcontrol-implementation.patch +++ pulseaudio-1.1/debian/patches/0610-Jack-detection-kcontrol-implementation.patch @@ -0,0 +1,1018 @@ +From 905a8f405cd86e2ddd39e1ec827373048e4fa3ed Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Tue, 15 Nov 2011 15:04:46 +0100 +Subject: [PATCH 1/9] Jack detection kcontrol implementation + +Allows to bind a path to one or more jacks as exposed as kernel +controls. The name of the section should match the alsa jack name, +so e g 'Rear Mic Jack' should be in section [Jack Rear Mic]. + +Signed-off-by: David Henningsson +--- + src/modules/alsa/alsa-mixer.c | 245 +++++++++++++------- + src/modules/alsa/alsa-mixer.h | 25 ++- + src/modules/alsa/alsa-sink.c | 5 +- + src/modules/alsa/alsa-source.c | 5 +- + src/modules/alsa/alsa-util.c | 129 ++++++++++ + src/modules/alsa/alsa-util.h | 4 + + .../alsa/mixer/paths/analog-input-dock-mic.conf | 3 + + .../alsa/mixer/paths/analog-input-front-mic.conf | 3 + + .../alsa/mixer/paths/analog-input-linein.conf | 3 + + src/modules/alsa/mixer/paths/analog-input-mic.conf | 3 + + .../alsa/mixer/paths/analog-input-rear-mic.conf | 3 + + .../alsa/mixer/paths/analog-output-headphones.conf | 5 +- + src/modules/alsa/module-alsa-card.c | 101 ++++++++- + 13 files changed, 436 insertions(+), 98 deletions(-) + +diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c +index eccf103..681a601 100644 +--- a/src/modules/alsa/alsa-mixer.c ++++ b/src/modules/alsa/alsa-mixer.c +@@ -72,6 +72,7 @@ struct pa_alsa_fdlist { + struct pollfd *work_fds; + + snd_mixer_t *mixer; ++ snd_hctl_t *hctl; + + pa_mainloop_api *m; + pa_defer_event *defer; +@@ -92,7 +93,7 @@ static void io_cb(pa_mainloop_api *a, pa_io_event *e, int fd, pa_io_event_flags_ + + pa_assert(a); + pa_assert(fdl); +- pa_assert(fdl->mixer); ++ pa_assert(fdl->mixer || fdl->hctl); + pa_assert(fdl->fds); + pa_assert(fdl->work_fds); + +@@ -119,15 +120,24 @@ static void io_cb(pa_mainloop_api *a, pa_io_event *e, int fd, pa_io_event_flags_ + + pa_assert(i != fdl->num_fds); + +- if ((err = snd_mixer_poll_descriptors_revents(fdl->mixer, fdl->work_fds, fdl->num_fds, &revents)) < 0) { ++ if (fdl->hctl) ++ err = snd_hctl_poll_descriptors_revents(fdl->hctl, fdl->work_fds, fdl->num_fds, &revents); ++ else ++ err = snd_mixer_poll_descriptors_revents(fdl->mixer, fdl->work_fds, fdl->num_fds, &revents); ++ ++ if (err < 0) { + pa_log_error("Unable to get poll revent: %s", pa_alsa_strerror(err)); + return; + } + + a->defer_enable(fdl->defer, 1); + +- if (revents) +- snd_mixer_handle_events(fdl->mixer); ++ if (revents) { ++ if (fdl->hctl) ++ snd_hctl_handle_events(fdl->hctl); ++ else ++ snd_mixer_handle_events(fdl->mixer); ++ } + } + + static void defer_cb(pa_mainloop_api *a, pa_defer_event *e, void *userdata) { +@@ -138,11 +148,16 @@ static void defer_cb(pa_mainloop_api *a, pa_defer_event *e, void *userdata) { + + pa_assert(a); + pa_assert(fdl); +- pa_assert(fdl->mixer); ++ pa_assert(fdl->mixer || fdl->hctl); + + a->defer_enable(fdl->defer, 0); + +- if ((n = snd_mixer_poll_descriptors_count(fdl->mixer)) < 0) { ++ if (fdl->hctl) ++ n = snd_hctl_poll_descriptors_count(fdl->hctl); ++ else ++ n = snd_mixer_poll_descriptors_count(fdl->mixer); ++ ++ if (n < 0) { + pa_log("snd_mixer_poll_descriptors_count() failed: %s", pa_alsa_strerror(n)); + return; + } +@@ -159,7 +174,12 @@ static void defer_cb(pa_mainloop_api *a, pa_defer_event *e, void *userdata) { + + memset(fdl->work_fds, 0, sizeof(struct pollfd) * num_fds); + +- if ((err = snd_mixer_poll_descriptors(fdl->mixer, fdl->work_fds, num_fds)) < 0) { ++ if (fdl->hctl) ++ err = snd_hctl_poll_descriptors(fdl->hctl, fdl->work_fds, num_fds); ++ else ++ err = snd_mixer_poll_descriptors(fdl->mixer, fdl->work_fds, num_fds); ++ ++ if (err < 0) { + pa_log_error("Unable to get poll descriptors: %s", pa_alsa_strerror(err)); + return; + } +@@ -228,6 +248,19 @@ void pa_alsa_fdlist_free(struct pa_alsa_fdlist *fdl) { + pa_xfree(fdl); + } + ++int pa_alsa_fdlist_set_hctl(struct pa_alsa_fdlist *fdl, snd_hctl_t *hctl_handle, pa_mainloop_api *m) { ++ pa_assert(fdl); ++ pa_assert(hctl_handle); ++ pa_assert(m); ++ pa_assert(!fdl->m); ++ ++ fdl->hctl = hctl_handle; ++ fdl->m = m; ++ fdl->defer = m->defer_new(m, defer_cb, fdl); ++ ++ return 0; ++} ++ + int pa_alsa_fdlist_set_mixer(struct pa_alsa_fdlist *fdl, snd_mixer_t *mixer_handle, pa_mainloop_api *m) { + pa_assert(fdl); + pa_assert(mixer_handle); +@@ -355,81 +388,7 @@ int pa_alsa_set_mixer_rtpoll(struct pa_alsa_mixer_pdata *pd, snd_mixer_t *mixer, + return 0; + } + +-static int prepare_mixer(snd_mixer_t *mixer, const char *dev) { +- int err; +- +- pa_assert(mixer); +- pa_assert(dev); +- +- if ((err = snd_mixer_attach(mixer, dev)) < 0) { +- pa_log_info("Unable to attach to mixer %s: %s", dev, pa_alsa_strerror(err)); +- return -1; +- } +- +- if ((err = snd_mixer_selem_register(mixer, NULL, NULL)) < 0) { +- pa_log_warn("Unable to register mixer: %s", pa_alsa_strerror(err)); +- return -1; +- } +- +- if ((err = snd_mixer_load(mixer)) < 0) { +- pa_log_warn("Unable to load mixer: %s", pa_alsa_strerror(err)); +- return -1; +- } +- +- pa_log_info("Successfully attached to mixer '%s'", dev); +- return 0; +-} +- +-snd_mixer_t *pa_alsa_open_mixer_for_pcm(snd_pcm_t *pcm, char **ctl_device) { +- int err; +- snd_mixer_t *m; +- const char *dev; +- snd_pcm_info_t* info; +- snd_pcm_info_alloca(&info); +- +- pa_assert(pcm); +- +- if ((err = snd_mixer_open(&m, 0)) < 0) { +- pa_log("Error opening mixer: %s", pa_alsa_strerror(err)); +- return NULL; +- } +- +- /* First, try by name */ +- if ((dev = snd_pcm_name(pcm))) +- if (prepare_mixer(m, dev) >= 0) { +- if (ctl_device) +- *ctl_device = pa_xstrdup(dev); +- +- return m; +- } +- +- /* Then, try by card index */ +- if (snd_pcm_info(pcm, info) >= 0) { +- char *md; +- int card_idx; +- +- if ((card_idx = snd_pcm_info_get_card(info)) >= 0) { +- +- md = pa_sprintf_malloc("hw:%i", card_idx); +- +- if (!dev || !pa_streq(dev, md)) +- if (prepare_mixer(m, md) >= 0) { +- +- if (ctl_device) +- *ctl_device = md; +- else +- pa_xfree(md); +- +- return m; +- } +- +- pa_xfree(md); +- } +- } + +- snd_mixer_close(m); +- return NULL; +-} + + static const snd_mixer_selem_channel_id_t alsa_channel_ids[PA_CHANNEL_POSITION_MAX] = { + [PA_CHANNEL_POSITION_MONO] = SND_MIXER_SCHN_MONO, /* The ALSA name is just an alias! */ +@@ -523,6 +482,14 @@ static void decibel_fix_free(pa_alsa_decibel_fix *db_fix) { + pa_xfree(db_fix); + } + ++static void jack_free(pa_alsa_jack *j) { ++ pa_assert(j); ++ ++ pa_xfree(j->alsa_name); ++ pa_xfree(j->name); ++ pa_xfree(j); ++} ++ + static void element_free(pa_alsa_element *e) { + pa_alsa_option *o; + pa_assert(e); +@@ -540,11 +507,17 @@ static void element_free(pa_alsa_element *e) { + } + + void pa_alsa_path_free(pa_alsa_path *p) { ++ pa_alsa_jack *j; + pa_alsa_element *e; + pa_alsa_setting *s; + + pa_assert(p); + ++ while ((j = p->jacks)) { ++ PA_LLIST_REMOVE(pa_alsa_jack, p->jacks, j); ++ jack_free(j); ++ } ++ + while ((e = p->elements)) { + PA_LLIST_REMOVE(pa_alsa_element, p->elements, e); + element_free(e); +@@ -1689,6 +1662,26 @@ static int element_probe(pa_alsa_element *e, snd_mixer_t *m) { + return 0; + } + ++static int jack_probe(pa_alsa_jack *j, snd_hctl_t *h) { ++ pa_assert(h); ++ pa_assert(j); ++ pa_assert(j->path); ++ ++ j->has_control = pa_alsa_find_jack(h, j->alsa_name) != NULL; ++ ++ if (j->has_control) { ++ if (j->required_absent != PA_ALSA_REQUIRED_IGNORE) ++ return -1; ++ if (j->required_any != PA_ALSA_REQUIRED_IGNORE) ++ j->path->req_any_present = TRUE; ++ } else { ++ if (j->required != PA_ALSA_REQUIRED_IGNORE) ++ return -1; ++ } ++ ++ return 0; ++} ++ + static pa_alsa_element* element_get(pa_alsa_path *p, const char *section, pa_bool_t prefixed) { + pa_alsa_element *e; + +@@ -1726,6 +1719,36 @@ finish: + return e; + } + ++static pa_alsa_jack* jack_get(pa_alsa_path *p, const char *section) { ++ pa_alsa_jack *j; ++ ++ if (!pa_startswith(section, "Jack ")) ++ return NULL; ++ section += 5; ++ ++ /* This is not an element section, but an enum section? */ ++ if (strchr(section, ':')) ++ return NULL; ++ ++ if (p->last_jack && pa_streq(p->last_jack->name, section)) ++ return p->last_jack; ++ ++ PA_LLIST_FOREACH(j, p->jacks) ++ if (pa_streq(j->name, section)) ++ goto finish; ++ ++ j = pa_xnew0(pa_alsa_jack, 1); ++ j->path = p; ++ j->name = pa_xstrdup(section); ++ j->alsa_name = pa_sprintf_malloc("%s Jack", section); ++ PA_LLIST_INSERT_AFTER(pa_alsa_jack, p->jacks, p->last_jack, j); ++ ++finish: ++ p->last_jack = j; ++ return j; ++} ++ ++ + static pa_alsa_option* option_get(pa_alsa_path *p, const char *section) { + char *en; + const char *on; +@@ -1949,13 +1972,15 @@ static int element_parse_required( + pa_alsa_path *p = userdata; + pa_alsa_element *e; + pa_alsa_option *o; ++ pa_alsa_jack *j; + pa_alsa_required_t req; + + pa_assert(p); + + e = element_get(p, section, TRUE); + o = option_get(p, section); +- if (!e && !o) { ++ j = jack_get(p, section); ++ if (!e && !o && !j) { + pa_log("[%s:%u] Required makes no sense in '%s'", filename, line, section); + return -1; + } +@@ -1980,6 +2005,8 @@ static int element_parse_required( + e->required_absent = req; + if (o) + o->required_absent = req; ++ if (j) ++ j->required_absent = req; + } + else if (pa_streq(lvalue, "required-any")) { + if (e) { +@@ -1990,12 +2017,19 @@ static int element_parse_required( + o->required_any = req; + o->element->path->has_req_any = TRUE; + } ++ if (j) { ++ j->required_any = req; ++ j->path->has_req_any = TRUE; ++ } ++ + } + else { + if (e) + e->required = req; + if (o) + o->required = req; ++ if (j) ++ j->required = req; + } + + return 0; +@@ -2554,8 +2588,9 @@ static void path_create_settings(pa_alsa_path *p) { + element_create_settings(p->elements, NULL); + } + +-int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, pa_bool_t ignore_dB) { ++int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, snd_hctl_t *hctl, pa_bool_t ignore_dB) { + pa_alsa_element *e; ++ pa_alsa_jack *j; + double min_dB[PA_CHANNEL_POSITION_MAX], max_dB[PA_CHANNEL_POSITION_MAX]; + pa_channel_position_t t; + pa_channel_position_mask_t path_volume_channels = 0; +@@ -2572,6 +2607,15 @@ int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, pa_bool_t ignore_dB) { + + pa_log_debug("Probing path '%s'", p->name); + ++ PA_LLIST_FOREACH(j, p->jacks) { ++ if (jack_probe(j, hctl) < 0) { ++ p->supported = FALSE; ++ pa_log_debug("Probe of jack '%s' failed.", j->alsa_name); ++ return -1; ++ } ++ pa_log_debug("Probe of jack '%s' succeeded (%s)", j->alsa_name, j->has_control ? "found!" : "not found"); ++ } ++ + PA_LLIST_FOREACH(e, p->elements) { + if (element_probe(e, m) < 0) { + p->supported = FALSE; +@@ -2666,6 +2710,12 @@ void pa_alsa_setting_dump(pa_alsa_setting *s) { + s->priority); + } + ++void pa_alsa_jack_dump(pa_alsa_jack *j) { ++ pa_assert(j); ++ ++ pa_log_debug("Jack %s, alsa_name='%s', detection %s", j->name, j->alsa_name, j->has_control ? "possible" : "unavailable"); ++} ++ + void pa_alsa_option_dump(pa_alsa_option *o) { + pa_assert(o); + +@@ -2701,6 +2751,7 @@ void pa_alsa_element_dump(pa_alsa_element *e) { + + void pa_alsa_path_dump(pa_alsa_path *p) { + pa_alsa_element *e; ++ pa_alsa_jack *j; + pa_alsa_setting *s; + pa_assert(p); + +@@ -2721,6 +2772,9 @@ void pa_alsa_path_dump(pa_alsa_path *p) { + PA_LLIST_FOREACH(e, p->elements) + pa_alsa_element_dump(e); + ++ PA_LLIST_FOREACH(j, p->jacks) ++ pa_alsa_jack_dump(j); ++ + PA_LLIST_FOREACH(s, p->settings) + pa_alsa_setting_dump(s); + } +@@ -3061,11 +3115,28 @@ static void path_set_condense(pa_alsa_path_set *ps, snd_mixer_t *m) { + + PA_HASHMAP_FOREACH(p2, ps->paths, state2) { + pa_alsa_element *ea, *eb; ++ pa_alsa_jack *ja, *jb; + pa_bool_t is_subset = TRUE; + + if (p == p2) + continue; + ++ /* If a has a jack that b does not have, a is not a subset */ ++ PA_LLIST_FOREACH(ja, p->jacks) { ++ pa_bool_t exists = FALSE; ++ if (!ja->has_control) ++ continue; ++ PA_LLIST_FOREACH(jb, p2->jacks) ++ if (jb->has_control && !strcmp(jb->alsa_name, ja->alsa_name)) { ++ exists = TRUE; ++ break; ++ } ++ if (!exists) { ++ is_subset = FALSE; ++ break; ++ } ++ } ++ + /* Compare the elements of each set... */ + pa_assert_se(ea = p->elements); + pa_assert_se(eb = p2->elements); +@@ -3698,6 +3769,7 @@ static void mapping_paths_probe(pa_alsa_mapping *m, pa_alsa_profile *profile, + snd_pcm_t *pcm_handle; + pa_alsa_path_set *ps; + snd_mixer_t *mixer_handle; ++ snd_hctl_t *hctl_handle; + + if (direction == PA_ALSA_DIRECTION_OUTPUT) { + if (m->output_path_set) +@@ -3716,8 +3788,8 @@ static void mapping_paths_probe(pa_alsa_mapping *m, pa_alsa_profile *profile, + + pa_assert(pcm_handle); + +- mixer_handle = pa_alsa_open_mixer_for_pcm(pcm_handle, NULL); +- if (!mixer_handle) { ++ mixer_handle = pa_alsa_open_mixer_for_pcm(pcm_handle, NULL, &hctl_handle); ++ if (!mixer_handle || !hctl_handle) { + /* Cannot open mixer, remove all entries */ + while (pa_hashmap_steal_first(ps->paths)); + return; +@@ -3725,7 +3797,7 @@ static void mapping_paths_probe(pa_alsa_mapping *m, pa_alsa_profile *profile, + + + PA_HASHMAP_FOREACH(p, ps->paths, state) { +- if (pa_alsa_path_probe(p, mixer_handle, m->profile_set->ignore_dB) < 0) { ++ if (pa_alsa_path_probe(p, mixer_handle, hctl_handle, m->profile_set->ignore_dB) < 0) { + pa_hashmap_remove(ps->paths, p); + } + } +@@ -4375,6 +4447,7 @@ static pa_device_port* device_port_alsa_init(pa_hashmap *ports, + data = PA_DEVICE_PORT_DATA(p); + data->path = path; + data->setting = setting; ++ path->port = p; + } + + p->is_input |= path->direction == PA_ALSA_DIRECTION_ANY || path->direction == PA_ALSA_DIRECTION_INPUT; +diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h +index 703d45b..f55c5c3 100644 +--- a/src/modules/alsa/alsa-mixer.h ++++ b/src/modules/alsa/alsa-mixer.h +@@ -38,6 +38,7 @@ typedef struct pa_alsa_mixer_pdata pa_alsa_mixer_pdata; + typedef struct pa_alsa_setting pa_alsa_setting; + typedef struct pa_alsa_option pa_alsa_option; + typedef struct pa_alsa_element pa_alsa_element; ++typedef struct pa_alsa_jack pa_alsa_jack; + typedef struct pa_alsa_path pa_alsa_path; + typedef struct pa_alsa_path_set pa_alsa_path_set; + typedef struct pa_alsa_mapping pa_alsa_mapping; +@@ -154,11 +155,27 @@ struct pa_alsa_element { + pa_alsa_decibel_fix *db_fix; + }; + ++struct pa_alsa_jack { ++ pa_alsa_path *path; ++ PA_LLIST_FIELDS(pa_alsa_jack); ++ ++ char *name; /* E g "Headphone" */ ++ char *alsa_name; /* E g "Headphone Jack" */ ++ pa_bool_t has_control; /* is the jack itself present? */ ++ pa_bool_t plugged_in; /* is this jack currently plugged in? */ ++ snd_hctl_elem_t *hctl_elem; /* Jack detection handle */ ++ ++ pa_alsa_required_t required; ++ pa_alsa_required_t required_any; ++ pa_alsa_required_t required_absent; ++}; ++ + /* A path wraps a series of elements into a single entity which can be + * used to control it as if it had a single volume slider, a single + * mute switch and a single list of selectable options. */ + struct pa_alsa_path { + pa_alsa_direction_t direction; ++ pa_device_port* port; + + char *name; + char *description; +@@ -181,9 +198,11 @@ struct pa_alsa_path { + pa_alsa_element *last_element; + pa_alsa_option *last_option; + pa_alsa_setting *last_setting; ++ pa_alsa_jack *last_jack; + + PA_LLIST_HEAD(pa_alsa_element, elements); + PA_LLIST_HEAD(pa_alsa_setting, settings); ++ PA_LLIST_HEAD(pa_alsa_jack, jacks); + }; + + /* A path set is simply a set of paths that are applicable to a +@@ -197,12 +216,13 @@ int pa_alsa_setting_select(pa_alsa_setting *s, snd_mixer_t *m); + void pa_alsa_setting_dump(pa_alsa_setting *s); + + void pa_alsa_option_dump(pa_alsa_option *o); ++void pa_alsa_jack_dump(pa_alsa_jack *j); + + void pa_alsa_element_dump(pa_alsa_element *e); + + pa_alsa_path *pa_alsa_path_new(const char *fname, pa_alsa_direction_t direction); + pa_alsa_path *pa_alsa_path_synthesize(const char *element, pa_alsa_direction_t direction); +-int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, pa_bool_t ignore_dB); ++int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, snd_hctl_t *hctl, pa_bool_t ignore_dB); + void pa_alsa_path_dump(pa_alsa_path *p); + int pa_alsa_path_get_volume(pa_alsa_path *p, snd_mixer_t *m, const pa_channel_map *cm, pa_cvolume *v); + int pa_alsa_path_get_mute(pa_alsa_path *path, snd_mixer_t *m, pa_bool_t *muted); +@@ -300,11 +320,12 @@ void pa_alsa_profile_set_probe(pa_alsa_profile_set *ps, const char *dev_id, cons + void pa_alsa_profile_set_free(pa_alsa_profile_set *s); + void pa_alsa_profile_set_dump(pa_alsa_profile_set *s); + +-snd_mixer_t *pa_alsa_open_mixer_for_pcm(snd_pcm_t *pcm, char **ctl_device); ++snd_mixer_t *pa_alsa_open_mixer_for_pcm(snd_pcm_t *pcm, char **ctl_device, snd_hctl_t **hctl); + + pa_alsa_fdlist *pa_alsa_fdlist_new(void); + void pa_alsa_fdlist_free(pa_alsa_fdlist *fdl); + int pa_alsa_fdlist_set_mixer(pa_alsa_fdlist *fdl, snd_mixer_t *mixer_handle, pa_mainloop_api* m); ++int pa_alsa_fdlist_set_hctl(pa_alsa_fdlist *fdl, snd_hctl_t *mixer_handle, pa_mainloop_api* m); + + /* Alternative for handling alsa mixer events in io-thread. */ + +diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c +index 1254dc3..afa751c 100644 +--- a/src/modules/alsa/alsa-sink.c ++++ b/src/modules/alsa/alsa-sink.c +@@ -1801,11 +1801,12 @@ static void set_sink_name(pa_sink_new_data *data, pa_modargs *ma, const char *de + } + + static void find_mixer(struct userdata *u, pa_alsa_mapping *mapping, const char *element, pa_bool_t ignore_dB) { ++ snd_hctl_t *hctl; + + if (!mapping && !element) + return; + +- if (!(u->mixer_handle = pa_alsa_open_mixer_for_pcm(u->pcm_handle, &u->control_device))) { ++ if (!(u->mixer_handle = pa_alsa_open_mixer_for_pcm(u->pcm_handle, &u->control_device, &hctl))) { + pa_log_info("Failed to find a working mixer device."); + return; + } +@@ -1815,7 +1816,7 @@ static void find_mixer(struct userdata *u, pa_alsa_mapping *mapping, const char + if (!(u->mixer_path = pa_alsa_path_synthesize(element, PA_ALSA_DIRECTION_OUTPUT))) + goto fail; + +- if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, ignore_dB) < 0) ++ if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, hctl, ignore_dB) < 0) + goto fail; + + pa_log_debug("Probed mixer path %s:", u->mixer_path->name); +diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c +index 4e69dd7..c21d0ce 100644 +--- a/src/modules/alsa/alsa-source.c ++++ b/src/modules/alsa/alsa-source.c +@@ -1501,11 +1501,12 @@ static void set_source_name(pa_source_new_data *data, pa_modargs *ma, const char + } + + static void find_mixer(struct userdata *u, pa_alsa_mapping *mapping, const char *element, pa_bool_t ignore_dB) { ++ snd_hctl_t *hctl; + + if (!mapping && !element) + return; + +- if (!(u->mixer_handle = pa_alsa_open_mixer_for_pcm(u->pcm_handle, &u->control_device))) { ++ if (!(u->mixer_handle = pa_alsa_open_mixer_for_pcm(u->pcm_handle, &u->control_device, &hctl))) { + pa_log_info("Failed to find a working mixer device."); + return; + } +@@ -1515,7 +1516,7 @@ static void find_mixer(struct userdata *u, pa_alsa_mapping *mapping, const char + if (!(u->mixer_path = pa_alsa_path_synthesize(element, PA_ALSA_DIRECTION_INPUT))) + goto fail; + +- if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, ignore_dB) < 0) ++ if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, hctl, ignore_dB) < 0) + goto fail; + + pa_log_debug("Probed mixer path %s:", u->mixer_path->name); +diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c +index 602e9a3..02ebb96 100644 +--- a/src/modules/alsa/alsa-util.c ++++ b/src/modules/alsa/alsa-util.c +@@ -1399,3 +1399,132 @@ pa_bool_t pa_alsa_may_tsched(pa_bool_t want) { + + return TRUE; + } ++ ++snd_hctl_elem_t* pa_alsa_find_jack(snd_hctl_t *hctl, const char* jack_name) ++{ ++ snd_ctl_elem_id_t *id; ++ ++ snd_ctl_elem_id_alloca(&id); ++ snd_ctl_elem_id_clear(id); ++ snd_ctl_elem_id_set_interface(id, SND_CTL_ELEM_IFACE_CARD); ++ snd_ctl_elem_id_set_name(id, jack_name); ++ ++ return snd_hctl_find_elem(hctl, id); ++} ++ ++static int prepare_mixer(snd_mixer_t *mixer, const char *dev, snd_hctl_t **hctl) { ++ int err; ++ snd_hctl_t* h; ++ ++ pa_assert(mixer); ++ pa_assert(dev); ++ ++ if (!hctl) ++ hctl = &h; ++ ++ if ((err = snd_mixer_attach(mixer, dev)) < 0) { ++ pa_log_info("Unable to attach to mixer %s: %s", dev, pa_alsa_strerror(err)); ++ return -1; ++ } ++ ++ if ((err = snd_mixer_get_hctl(mixer, dev, hctl)) < 0) { ++ pa_log_info("Unable to get hctl of mixer %s: %s", dev, pa_alsa_strerror(err)); ++ return -1; ++ } ++ ++ if ((err = snd_mixer_selem_register(mixer, NULL, NULL)) < 0) { ++ pa_log_warn("Unable to register mixer: %s", pa_alsa_strerror(err)); ++ return -1; ++ } ++ ++ if ((err = snd_mixer_load(mixer)) < 0) { ++ pa_log_warn("Unable to load mixer: %s", pa_alsa_strerror(err)); ++ return -1; ++ } ++ ++ pa_log_info("Successfully attached to mixer '%s'", dev); ++ return 0; ++} ++ ++ ++/* TODO: Don't just copy-paste similar functions */ ++snd_mixer_t *pa_alsa_open_mixer(int alsa_card_index, char **ctl_device, snd_hctl_t **hctl) { ++ int err; ++ snd_mixer_t *m; ++ char *md; ++ snd_pcm_info_t* info; ++ snd_pcm_info_alloca(&info); ++ ++ if ((err = snd_mixer_open(&m, 0)) < 0) { ++ pa_log("Error opening mixer: %s", pa_alsa_strerror(err)); ++ return NULL; ++ } ++ ++ /* Then, try by card index */ ++ md = pa_sprintf_malloc("hw:%i", alsa_card_index); ++ if (prepare_mixer(m, md, hctl) >= 0) { ++ ++ if (ctl_device) ++ *ctl_device = md; ++ else ++ pa_xfree(md); ++ ++ return m; ++ } ++ ++ pa_xfree(md); ++ ++ snd_mixer_close(m); ++ return NULL; ++} ++ ++snd_mixer_t *pa_alsa_open_mixer_for_pcm(snd_pcm_t *pcm, char **ctl_device, snd_hctl_t **hctl) { ++ int err; ++ snd_mixer_t *m; ++ const char *dev; ++ snd_pcm_info_t* info; ++ snd_pcm_info_alloca(&info); ++ ++ pa_assert(pcm); ++ ++ if ((err = snd_mixer_open(&m, 0)) < 0) { ++ pa_log("Error opening mixer: %s", pa_alsa_strerror(err)); ++ return NULL; ++ } ++ ++ /* First, try by name */ ++ if ((dev = snd_pcm_name(pcm))) ++ if (prepare_mixer(m, dev, hctl) >= 0) { ++ if (ctl_device) ++ *ctl_device = pa_xstrdup(dev); ++ ++ return m; ++ } ++ ++ /* Then, try by card index */ ++ if (snd_pcm_info(pcm, info) >= 0) { ++ char *md; ++ int card_idx; ++ ++ if ((card_idx = snd_pcm_info_get_card(info)) >= 0) { ++ ++ md = pa_sprintf_malloc("hw:%i", card_idx); ++ ++ if (!dev || !pa_streq(dev, md)) ++ if (prepare_mixer(m, md, hctl) >= 0) { ++ ++ if (ctl_device) ++ *ctl_device = md; ++ else ++ pa_xfree(md); ++ ++ return m; ++ } ++ ++ pa_xfree(md); ++ } ++ } ++ ++ snd_mixer_close(m); ++ return NULL; ++} +diff --git a/src/modules/alsa/alsa-util.h b/src/modules/alsa/alsa-util.h +index ee5e781..9192db0 100644 +--- a/src/modules/alsa/alsa-util.h ++++ b/src/modules/alsa/alsa-util.h +@@ -140,4 +140,8 @@ const char* pa_alsa_strerror(int errnum); + + pa_bool_t pa_alsa_may_tsched(pa_bool_t want); + ++snd_hctl_elem_t* pa_alsa_find_jack(snd_hctl_t *hctl, const char* jack_name); ++ ++snd_mixer_t *pa_alsa_open_mixer(int alsa_card_index, char **ctl_device, snd_hctl_t **hctl); ++ + #endif +diff --git a/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf b/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf +index 489cf90..7d87408 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-dock-mic.conf +@@ -22,6 +22,9 @@ + priority = 78 + name = analog-input-microphone-dock + ++[Jack Dock Mic] ++required-any = any ++ + [Element Dock Mic Boost] + required-any = any + switch = select +diff --git a/src/modules/alsa/mixer/paths/analog-input-front-mic.conf b/src/modules/alsa/mixer/paths/analog-input-front-mic.conf +index 5ae516c..3246f18 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-front-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-front-mic.conf +@@ -22,6 +22,9 @@ + priority = 85 + name = analog-input-microphone-front + ++[Jack Front Mic] ++required-any = any ++ + [Element Front Mic Boost] + required-any = any + switch = select +diff --git a/src/modules/alsa/mixer/paths/analog-input-linein.conf b/src/modules/alsa/mixer/paths/analog-input-linein.conf +index 038f649..8929eb7 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-linein.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-linein.conf +@@ -21,6 +21,9 @@ + [General] + priority = 81 + ++[Jack Line] ++required-any = any ++ + [Element Capture] + switch = mute + volume = merge +diff --git a/src/modules/alsa/mixer/paths/analog-input-mic.conf b/src/modules/alsa/mixer/paths/analog-input-mic.conf +index 50d4c45..6bdd3bd 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-mic.conf +@@ -22,6 +22,9 @@ + priority = 87 + name = analog-input-microphone + ++[Jack Mic] ++required-any = any ++ + [Element Mic Boost] + required-any = any + switch = select +diff --git a/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf b/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf +index 4046106..1d9c473 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-rear-mic.conf +@@ -22,6 +22,9 @@ + priority = 82 + name = analog-input-microphone-rear + ++[Jack Rear Mic] ++required-any = any ++ + [Element Rear Mic Boost] + required-any = any + switch = select +diff --git a/src/modules/alsa/mixer/paths/analog-output-headphones.conf b/src/modules/alsa/mixer/paths/analog-output-headphones.conf +index 7f95f0a..2860f28 100644 +--- a/src/modules/alsa/mixer/paths/analog-output-headphones.conf ++++ b/src/modules/alsa/mixer/paths/analog-output-headphones.conf +@@ -22,6 +22,9 @@ + priority = 90 + name = analog-output-headphones + ++[Jack Headphone] ++required-any = any ++ + [Element Hardware Master] + switch = mute + volume = merge +@@ -39,7 +42,7 @@ switch = off + volume = off + + [Element Headphone] +-required = any ++required-any = any + switch = mute + volume = merge + override-map.1 = all +diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c +index 6e3aeda..ff50e93 100644 +--- a/src/modules/alsa/module-alsa-card.c ++++ b/src/modules/alsa/module-alsa-card.c +@@ -100,6 +100,12 @@ struct userdata { + pa_module *module; + + char *device_id; ++ int alsa_card_index; ++ ++ snd_mixer_t *mixer_handle; ++ snd_hctl_t *hctl_handle; ++ pa_hashmap *jacks; ++ pa_alsa_fdlist *mixer_fdl; + + pa_card *card; + +@@ -262,6 +268,83 @@ static void init_profile(struct userdata *u) { + am->source = pa_alsa_source_new(u->module, u->modargs, __FILE__, u->card, am); + } + ++ ++static int report_jack_state(snd_hctl_elem_t *elem, unsigned int mask) ++{ ++ struct userdata *u = snd_hctl_elem_get_callback_private(elem); ++ snd_ctl_elem_value_t *elem_value; ++ pa_bool_t plugged_in; ++ void *state; ++ pa_alsa_jack *jack; ++ ++ pa_assert(u); ++ ++ if (mask == SND_CTL_EVENT_MASK_REMOVE) ++ return 0; ++ ++ snd_ctl_elem_value_alloca(&elem_value); ++ if (snd_hctl_elem_read(elem, elem_value) < 0) { ++ pa_log_warn("Failed to read jack detection from '%s'", pa_strnull(snd_hctl_elem_get_name(elem))); ++ return 0; ++ } ++ ++ plugged_in = !!snd_ctl_elem_value_get_boolean(elem_value, 0); ++ ++ pa_log_debug("Jack '%s' is now %s", pa_strnull(snd_hctl_elem_get_name(elem)), plugged_in ? "plugged in" : "unplugged"); ++ ++ PA_HASHMAP_FOREACH(jack, u->jacks, state) ++ if (jack->hctl_elem == elem) { ++ jack->plugged_in = plugged_in; ++ /* TODO: Handle more than one jack per port */ ++ pa_assert(jack->path && jack->path->port); ++ pa_device_port_set_available(jack->path->port, plugged_in ? PA_PORT_AVAILABLE_YES : PA_PORT_AVAILABLE_NO); ++ } ++ return 0; ++} ++ ++static void init_jacks(struct userdata *u) { ++ void *state; ++ pa_alsa_path* path; ++ pa_alsa_jack* jack; ++ u->jacks = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func); ++ /* See if we have any jacks */ ++ if (u->profile_set->output_paths) ++ PA_HASHMAP_FOREACH(path, u->profile_set->output_paths, state) ++ PA_LLIST_FOREACH(jack, path->jacks) ++ if (jack->has_control) ++ pa_hashmap_put(u->jacks, jack, jack); ++ if (u->profile_set->input_paths) ++ PA_HASHMAP_FOREACH(path, u->profile_set->input_paths, state) ++ PA_LLIST_FOREACH(jack, path->jacks) ++ if (jack->has_control) ++ pa_hashmap_put(u->jacks, jack, jack); ++ ++ /* pa_log("pa_hashmap_size(u->jacks) == %d", pa_hashmap_size(u->jacks)); */ ++ ++ if (pa_hashmap_size(u->jacks) == 0) ++ return; ++ ++ u->mixer_fdl = pa_alsa_fdlist_new(); ++ ++ u->mixer_handle = pa_alsa_open_mixer(u->alsa_card_index, NULL, &u->hctl_handle); ++ if (u->mixer_handle && pa_alsa_fdlist_set_hctl(u->mixer_fdl, u->hctl_handle, u->core->mainloop) >= 0) { ++ PA_HASHMAP_FOREACH(jack, u->jacks, state) { ++ jack->hctl_elem = pa_alsa_find_jack(u->hctl_handle, jack->alsa_name); ++ if (!jack->hctl_elem) { ++ pa_log_warn("Jack '%s' seems to have disappeared.", jack->alsa_name); ++ jack->has_control = FALSE; ++ continue; ++ } ++ snd_hctl_elem_set_callback_private(jack->hctl_elem, u); ++ snd_hctl_elem_set_callback(jack->hctl_elem, report_jack_state); ++ report_jack_state(jack->hctl_elem, 0); ++ } ++ ++ } else ++ pa_log("Failed to open hctl/mixer for jack detection"); ++ ++} ++ + static void set_card_name(pa_card_new_data *data, pa_modargs *ma, const char *device_id) { + char *t; + const char *n; +@@ -291,7 +374,6 @@ static void set_card_name(pa_card_new_data *data, pa_modargs *ma, const char *de + int pa__init(pa_module *m) { + pa_card_new_data data; + pa_modargs *ma; +- int alsa_card_index; + pa_bool_t ignore_dB = FALSE; + struct userdata *u; + pa_reserve_wrapper *reserve = NULL; +@@ -319,8 +401,8 @@ int pa__init(pa_module *m) { + u->device_id = pa_xstrdup(pa_modargs_get_value(ma, "device_id", DEFAULT_DEVICE_ID)); + u->modargs = ma; + +- if ((alsa_card_index = snd_card_get_index(u->device_id)) < 0) { +- pa_log("Card '%s' doesn't exist: %s", u->device_id, pa_alsa_strerror(alsa_card_index)); ++ if ((u->alsa_card_index = snd_card_get_index(u->device_id)) < 0) { ++ pa_log("Card '%s' doesn't exist: %s", u->device_id, pa_alsa_strerror(u->alsa_card_index)); + goto fail; + } + +@@ -337,7 +419,7 @@ int pa__init(pa_module *m) { + } + + #ifdef HAVE_UDEV +- fn = pa_udev_get_property(alsa_card_index, "PULSE_PROFILE_SET"); ++ fn = pa_udev_get_property(u->alsa_card_index, "PULSE_PROFILE_SET"); + #endif + + if (pa_modargs_get_value(ma, "profile_set", NULL)) { +@@ -360,7 +442,7 @@ int pa__init(pa_module *m) { + data.driver = __FILE__; + data.module = m; + +- pa_alsa_init_proplist_card(m->core, data.proplist, alsa_card_index); ++ pa_alsa_init_proplist_card(m->core, data.proplist, u->alsa_card_index); + + pa_proplist_sets(data.proplist, PA_PROP_DEVICE_STRING, u->device_id); + pa_alsa_init_description(data.proplist); +@@ -409,6 +491,7 @@ int pa__init(pa_module *m) { + u->card->set_profile = card_set_profile; + + init_profile(u); ++ init_jacks(u); + + if (reserve) + pa_reserve_wrapper_unref(reserve); +@@ -460,6 +543,14 @@ void pa__done(pa_module*m) { + if (!(u = m->userdata)) + goto finish; + ++ if (u->mixer_fdl) ++ pa_alsa_fdlist_free(u->mixer_fdl); ++ if (u->mixer_handle) ++ snd_mixer_close(u->mixer_handle); ++ if (u->jacks) ++ pa_hashmap_free(u->jacks, NULL, NULL); ++ ++ + if (u->card && u->card->sinks) { + pa_sink *s; + +-- +1.7.9 + --- pulseaudio-1.1.orig/debian/patches/0617-Handle-multiple-jacks-in-a-port.patch +++ pulseaudio-1.1/debian/patches/0617-Handle-multiple-jacks-in-a-port.patch @@ -0,0 +1,85 @@ +From 0b3535fa09de798420888944b041eb2fef3ad5f7 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Thu, 2 Feb 2012 16:23:33 +0100 +Subject: [PATCH 7/7] Handle multiple jacks in a port + +If more than one jack is part of the same path, handle this properly. +Enable this feature for internal mic. + +Signed-off-by: David Henningsson +--- + .../mixer/paths/analog-input-internal-mic.conf | 9 ++++++ + src/modules/alsa/module-alsa-card.c | 29 ++++++++++++++++++- + 2 files changed, 36 insertions(+), 2 deletions(-) + +diff --git a/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf b/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf +index 7b7d002..f2cc58f 100644 +--- a/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf ++++ b/src/modules/alsa/mixer/paths/analog-input-internal-mic.conf +@@ -27,6 +27,15 @@ name = analog-input-microphone-internal + [Jack Mic] + state.plugged = no + state.unplugged = unknown ++[Jack Dock Mic] ++state.plugged = no ++state.unplugged = unknown ++[Jack Front Mic] ++state.plugged = no ++state.unplugged = unknown ++[Jack Rear Mic] ++state.plugged = no ++state.unplugged = unknown + + [Element Internal Mic Boost] + required-any = any +diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c +index 08b27f8..19c22ee 100644 +--- a/src/modules/alsa/module-alsa-card.c ++++ b/src/modules/alsa/module-alsa-card.c +@@ -269,6 +269,32 @@ static void init_profile(struct userdata *u) { + } + + ++static void report_port_state(pa_device_port *p, struct userdata *u) ++{ ++ void *state; ++ pa_alsa_jack *jack; ++ pa_port_available_t pa = PA_PORT_AVAILABLE_UNKNOWN; ++ ++ PA_HASHMAP_FOREACH(jack, u->jacks, state) { ++ pa_port_available_t cpa; ++ if (!jack->path) ++ continue; ++ if (p != jack->path->port) ++ continue; ++ cpa = jack->plugged_in ? jack->state_plugged : jack->state_unplugged; ++ /* "Yes" and "no" trumphs "unknown" if we have more than one jack */ ++ if (cpa == PA_PORT_AVAILABLE_UNKNOWN) ++ continue; ++ if ((cpa == PA_PORT_AVAILABLE_NO && pa == PA_PORT_AVAILABLE_YES) || ++ (pa == PA_PORT_AVAILABLE_NO && cpa == PA_PORT_AVAILABLE_YES)) ++ pa_log_warn("Availability of port '%s' is inconsistent!", p->name); ++ else ++ pa = cpa; ++ } ++ ++ pa_device_port_set_available(p, pa); ++} ++ + static int report_jack_state(snd_hctl_elem_t *elem, unsigned int mask) + { + struct userdata *u = snd_hctl_elem_get_callback_private(elem); +@@ -295,9 +321,8 @@ static int report_jack_state(snd_hctl_elem_t *elem, unsigned int mask) + PA_HASHMAP_FOREACH(jack, u->jacks, state) + if (jack->hctl_elem == elem) { + jack->plugged_in = plugged_in; +- /* TODO: Handle more than one jack per port */ + pa_assert(jack->path && jack->path->port); +- pa_device_port_set_available(jack->path->port, plugged_in ? jack->state_plugged : jack->state_unplugged); ++ report_port_state(jack->path->port, u); + } + return 0; + } +-- +1.7.8.3 + --- pulseaudio-1.1.orig/debian/patches/0108-sample-util-Fix-Darth-Vader-panning-bug.patch +++ pulseaudio-1.1/debian/patches/0108-sample-util-Fix-Darth-Vader-panning-bug.patch @@ -0,0 +1,304 @@ +From 2ce7d38005a82c56cbc1ad2af70afabe9def9e0d Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Thu, 9 Feb 2012 15:59:20 +0100 +Subject: [PATCH] sample-util: Fix "Darth Vader" panning bug + +For muted channels, we forgot to increment a pointer, so if one +channel was muted but not the other, sound became distorted in a +Darth Vader like way. To test the difference, start two input +streams and pan one of them hard left (or right). + +And hey, if you didn't think it sounded like Darth Vader, it's +your imagination that's broken, not mine! ;-) + +BugLink: https://bugs.launchpad.net/bugs/928757 +Signed-off-by: David Henningsson +--- + src/pulsecore/sample-util.c | 169 ++++++++++++++++++++----------------------- + 1 files changed, 78 insertions(+), 91 deletions(-) + +diff --git a/src/pulsecore/sample-util.c b/src/pulsecore/sample-util.c +index df1d79e..f2017aa 100644 +--- a/src/pulsecore/sample-util.c ++++ b/src/pulsecore/sample-util.c +@@ -225,22 +225,21 @@ size_t pa_mix( + pa_mix_info *m = streams + i; + int32_t v, lo, hi, cv = m->linear[channel].i; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; ++ if (PA_LIKELY(cv > 0)) { + +- /* Multiplying the 32bit volume factor with the +- * 16bit sample might result in an 48bit value. We +- * want to do without 64 bit integers and hence do +- * the multiplication independently for the HI and +- * LO part of the volume. */ ++ /* Multiplying the 32bit volume factor with the ++ * 16bit sample might result in an 48bit value. We ++ * want to do without 64 bit integers and hence do ++ * the multiplication independently for the HI and ++ * LO part of the volume. */ + +- hi = cv >> 16; +- lo = cv & 0xFFFF; +- +- v = *((int16_t*) m->ptr); +- v = ((v * lo) >> 16) + (v * hi); +- sum += v; ++ hi = cv >> 16; ++ lo = cv & 0xFFFF; + ++ v = *((int16_t*) m->ptr); ++ v = ((v * lo) >> 16) + (v * hi); ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + sizeof(int16_t); + } + +@@ -269,16 +268,15 @@ size_t pa_mix( + pa_mix_info *m = streams + i; + int32_t v, lo, hi, cv = m->linear[channel].i; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- hi = cv >> 16; +- lo = cv & 0xFFFF; ++ if (PA_LIKELY(cv > 0)) { + +- v = PA_INT16_SWAP(*((int16_t*) m->ptr)); +- v = ((v * lo) >> 16) + (v * hi); +- sum += v; ++ hi = cv >> 16; ++ lo = cv & 0xFFFF; + ++ v = PA_INT16_SWAP(*((int16_t*) m->ptr)); ++ v = ((v * lo) >> 16) + (v * hi); ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + sizeof(int16_t); + } + +@@ -308,13 +306,12 @@ size_t pa_mix( + int32_t cv = m->linear[channel].i; + int64_t v; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- v = *((int32_t*) m->ptr); +- v = (v * cv) >> 16; +- sum += v; ++ if (PA_LIKELY(cv > 0)) { + ++ v = *((int32_t*) m->ptr); ++ v = (v * cv) >> 16; ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + sizeof(int32_t); + } + +@@ -344,13 +341,12 @@ size_t pa_mix( + int32_t cv = m->linear[channel].i; + int64_t v; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- v = PA_INT32_SWAP(*((int32_t*) m->ptr)); +- v = (v * cv) >> 16; +- sum += v; ++ if (PA_LIKELY(cv > 0)) { + ++ v = PA_INT32_SWAP(*((int32_t*) m->ptr)); ++ v = (v * cv) >> 16; ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + sizeof(int32_t); + } + +@@ -380,13 +376,12 @@ size_t pa_mix( + int32_t cv = m->linear[channel].i; + int64_t v; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- v = (int32_t) (PA_READ24NE(m->ptr) << 8); +- v = (v * cv) >> 16; +- sum += v; ++ if (PA_LIKELY(cv > 0)) { + ++ v = (int32_t) (PA_READ24NE(m->ptr) << 8); ++ v = (v * cv) >> 16; ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + 3; + } + +@@ -416,13 +411,12 @@ size_t pa_mix( + int32_t cv = m->linear[channel].i; + int64_t v; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- v = (int32_t) (PA_READ24RE(m->ptr) << 8); +- v = (v * cv) >> 16; +- sum += v; ++ if (PA_LIKELY(cv > 0)) { + ++ v = (int32_t) (PA_READ24RE(m->ptr) << 8); ++ v = (v * cv) >> 16; ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + 3; + } + +@@ -452,13 +446,12 @@ size_t pa_mix( + int32_t cv = m->linear[channel].i; + int64_t v; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- v = (int32_t) (*((uint32_t*)m->ptr) << 8); +- v = (v * cv) >> 16; +- sum += v; ++ if (PA_LIKELY(cv > 0)) { + ++ v = (int32_t) (*((uint32_t*)m->ptr) << 8); ++ v = (v * cv) >> 16; ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + sizeof(int32_t); + } + +@@ -488,13 +481,12 @@ size_t pa_mix( + int32_t cv = m->linear[channel].i; + int64_t v; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- v = (int32_t) (PA_UINT32_SWAP(*((uint32_t*) m->ptr)) << 8); +- v = (v * cv) >> 16; +- sum += v; ++ if (PA_LIKELY(cv > 0)) { + ++ v = (int32_t) (PA_UINT32_SWAP(*((uint32_t*) m->ptr)) << 8); ++ v = (v * cv) >> 16; ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + 3; + } + +@@ -523,13 +515,12 @@ size_t pa_mix( + pa_mix_info *m = streams + i; + int32_t v, cv = m->linear[channel].i; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- v = (int32_t) *((uint8_t*) m->ptr) - 0x80; +- v = (v * cv) >> 16; +- sum += v; ++ if (PA_LIKELY(cv > 0)) { + ++ v = (int32_t) *((uint8_t*) m->ptr) - 0x80; ++ v = (v * cv) >> 16; ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + 1; + } + +@@ -558,16 +549,15 @@ size_t pa_mix( + pa_mix_info *m = streams + i; + int32_t v, hi, lo, cv = m->linear[channel].i; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- hi = cv >> 16; +- lo = cv & 0xFFFF; ++ if (PA_LIKELY(cv > 0)) { + +- v = (int32_t) st_ulaw2linear16(*((uint8_t*) m->ptr)); +- v = ((v * lo) >> 16) + (v * hi); +- sum += v; ++ hi = cv >> 16; ++ lo = cv & 0xFFFF; + ++ v = (int32_t) st_ulaw2linear16(*((uint8_t*) m->ptr)); ++ v = ((v * lo) >> 16) + (v * hi); ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + 1; + } + +@@ -596,16 +586,15 @@ size_t pa_mix( + pa_mix_info *m = streams + i; + int32_t v, hi, lo, cv = m->linear[channel].i; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; ++ if (PA_LIKELY(cv > 0)) { + +- hi = cv >> 16; +- lo = cv & 0xFFFF; +- +- v = (int32_t) st_alaw2linear16(*((uint8_t*) m->ptr)); +- v = ((v * lo) >> 16) + (v * hi); +- sum += v; ++ hi = cv >> 16; ++ lo = cv & 0xFFFF; + ++ v = (int32_t) st_alaw2linear16(*((uint8_t*) m->ptr)); ++ v = ((v * lo) >> 16) + (v * hi); ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + 1; + } + +@@ -634,13 +623,12 @@ size_t pa_mix( + pa_mix_info *m = streams + i; + float v, cv = m->linear[channel].f; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- v = *((float*) m->ptr); +- v *= cv; +- sum += v; ++ if (PA_LIKELY(cv > 0)) { + ++ v = *((float*) m->ptr); ++ v *= cv; ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + sizeof(float); + } + +@@ -668,13 +656,12 @@ size_t pa_mix( + pa_mix_info *m = streams + i; + float v, cv = m->linear[channel].f; + +- if (PA_UNLIKELY(cv <= 0)) +- continue; +- +- v = PA_FLOAT32_SWAP(*(float*) m->ptr); +- v *= cv; +- sum += v; ++ if (PA_LIKELY(cv > 0)) { + ++ v = PA_FLOAT32_SWAP(*(float*) m->ptr); ++ v *= cv; ++ sum += v; ++ } + m->ptr = (uint8_t*) m->ptr + sizeof(float); + } + +-- +1.7.9 + --- pulseaudio-1.1.orig/debian/patches/0019-disable-dbus-protocol.patch +++ pulseaudio-1.1/debian/patches/0019-disable-dbus-protocol.patch @@ -0,0 +1,17 @@ +Index: pulseaudio-1.1/src/daemon/default.pa.in +=================================================================== +--- pulseaudio-1.1.orig/src/daemon/default.pa.in 2012-02-08 15:43:42.277580846 +1100 ++++ pulseaudio-1.1/src/daemon/default.pa.in 2012-02-08 15:43:56.469580708 +1100 +@@ -167,9 +167,9 @@ + + ifelse(@HAVE_DBUS@, 1, [dnl + ### Load DBus protocol +-.ifexists module-dbus-protocol@PA_SOEXT@ +-load-module module-dbus-protocol +-.endif ++#.ifexists module-dbus-protocol@PA_SOEXT@ ++#load-module module-dbus-protocol ++#.endif + ])dnl + + ifelse(@HAVE_X11@, 1, [dnl --- pulseaudio-1.1.orig/debian/patches/0600-ship-PROTOCOL-file.patch +++ pulseaudio-1.1/debian/patches/0600-ship-PROTOCOL-file.patch @@ -0,0 +1,292 @@ +This one is just to make the rest of the patches apply cleanly. + +Index: pulseaudio-1.1/PROTOCOL +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ pulseaudio-1.1/PROTOCOL 2012-01-10 14:04:32.335837982 +0100 +@@ -0,0 +1,285 @@ ++### v8, implemented by >= 0.8 ++ ++First version supported. ++ ++### v9, implemented by >= 0.9.0 ++ ++Reply for PA_COMMAND_CREATE_PLAYBACK_STREAM, ++PA_COMMAND_CREATE_RECORD_STREAM now returns buffer_attrs that are used: ++ ++Four new fields in reply of PA_COMMAND_CREATE_PLAYBACK_STREAM: ++ ++ maxlength ++ tlength ++ prebuf ++ minreq ++ ++Two new fields in reply of PA_COMMAND_CREATE_RECORD_STREAM: ++ ++ maxlength ++ fragsize ++ ++### v10, implemented by >= 0.9.5 ++ ++New opcodes: ++ ++ PA_COMMAND_MOVE_SINK_INPUT ++ PA_COMMAND_MOVE_SOURCE_OUTPUT ++ ++SHM data transfer support ++ ++### v11, implemented by >= 0.9.7 ++ ++Reply to to PA_COMMAND_GET_SINK_INPUT_INFO, PA_COMMAND_GET_SINK_INPUT_INFO_LIST gets new field at the end: ++ ++ mute ++ ++New opcodes: ++ ++ PA_COMMAND_SET_SINK_INPUT_MUTE ++ PA_COMMAND_SUSPEND_SINK ++ PA_COMMAND_SUSPEND_SOURCE ++ ++### v12, implemented by >= 0.9.8 ++ ++S32LE, S32BE is now known as sample spec. ++ ++Gained six new bool fields for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM request at the end: ++ ++ no_remap_channels ++ no_remix_channels ++ fix_format ++ fix_rate ++ fix_channels ++ no_move ++ variable_rate ++ ++Reply to these opcodes now includes: ++ ++ sample_spec ++ channel_map ++ device_index ++ device_name ++ suspended ++ ++New opcodes for changing buffer attrs: ++ ++ PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR ++ PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR ++ ++New opcodes for changing sampling rate: ++ ++ PA_COMMAND_UPDATE_PLAYBACK_STREAM_SAMPLE_RATE ++ PA_COMMAND_UPDATE_RECORD_STREAM_SAMPLE_RATE ++ ++New opcodes for notifications: ++ ++ PA_COMMAND_PLAYBACK_STREAM_SUSPENDED ++ PA_COMMAND_CAPTURE_STREAM_SUSPENDED ++ PA_COMMAND_PLAYBACK_STREAM_MOVED ++ PA_COMMAND_CAPTURE_STREAM_MOVED ++ ++### v13, implemented by >= 0.9.11 ++ ++New fields for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM request at the end: ++ ++ peak_detect (bool) ++ adjust_latency (bool) ++ ++Replace field "name" for PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM at the end: ++ ++ proplist ++ ++Replace field "name" for PA_COMMAND_SET_CLIENT_NAME request at the end: ++ ++ proplist ++ ++On response of PA_COMMAND_SET_CLIENT_NAME: ++ ++ client_index ++ ++New proplist field for sink, source, sink input, source output introspection opcodes and at the end: ++ ++ proplist ++ ++New opcodes for proplist modifications ++ ++ PA_COMMAND_UPDATE_RECORD_STREAM_PROPLIST ++ PA_COMMAND_UPDATE_PLAYBACK_STREAM_PROPLIST ++ PA_COMMAND_UPDATE_CLIENT_PROPLIST ++ PA_COMMAND_REMOVE_RECORD_STREAM_PROPLIST ++ PA_COMMAND_REMOVE_PLAYBACK_STREAM_PROPLIST ++ PA_COMMAND_REMOVE_CLIENT_PROPLIST ++ ++New field for PA_COMMAND_PLAY_SAMPLE: ++ ++ proplist ++ ++New field for PA_COMMAND_PLAY_SAMPLE response: ++ ++ idx ++ ++New field for PA_COMMAND_CREATE_PLAYBACK_STREAM at the end: ++ ++ start_muted ++ ++Buffer attributes for PA_COMMAND_CREATE_PLAYBACK_STREAM and ++PA_COMMAND_CREATE_RECORD_STREAM may now be 0 for default values. ++ ++New field for PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR, ++PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR at the end: ++ ++ adjust_latency (bool) ++ ++new message: ++ ++ PA_COMMAND_STARTED ++ ++### v14, implemented by >= 0.9.12 ++ ++new message: ++ ++ PA_COMMAND_EXTENSION ++ ++PA_COMMAND_CREATE_PLAYBACK_STREAM: ++ ++ bool volume_set at the end ++ ++PA_COMMAND_CREATE_RECORD_STREAM, PA_COMMAND_CREATE_PLAYBACK_STREAM: ++ ++ bool early_requests at the end ++ ++New field for PA_COMMAND_SET_PLAYBACK_STREAM_BUFFER_ATTR, ++PA_COMMAND_SET_RECORD_STREAM_BUFFER_ATTR at the end: ++ ++ early_requests (bool) ++ ++### v15, implemented by >= 0.9.15 ++ ++PA_COMMAND_CREATE_PLAYBACK_STREAM ++ ++ bool muted at the end ++ ++PA_COMMAND_CREATE_PLAYBACK_STREAM, PA_COMMAND_CREATE_RECORD_STREAM: ++ ++ bool dont_inhibit_auto_suspend at the end ++ ++PA_COMMAND_GET_MODULE_INFO_LIST ++ ++ remove bool auto_unload ++ add proplist at the end ++ ++new messages: ++ ++ PA_COMMAND_GET_CARD_INFO ++ PA_COMMAND_GET_CARD_INFO_LIST ++ PA_COMMAND_SET_CARD_PROFILE ++ ++ PA_COMMAND_CLIENT_EVENT ++ PA_COMMAND_PLAYBACK_STREAM_EVENT ++ PA_COMMAND_RECORD_STREAM_EVENT ++ ++ PA_COMMAND_PLAYBACK_BUFFER_ATTR_CHANGED ++ PA_COMMAND_RECORD_BUFFER_ATTR_CHANGED ++ ++### v16, implemented by >= 0.9.15 ++ ++new messages: ++ ++ PA_COMMAND_SET_SINK_PORT ++ PA_COMMAND_SET_SOURCE_PORT ++ ++## v17, implemented by >= 0.9.20 ++ ++new flag at end of CREATE_PLAYBACK_STREAM: ++ ++ bool relative_volume ++ ++## v18, implemented by >= 0.9.22 ++ ++new flag at end of CREATE_PLAYBACK_STREAM: ++ ++ bool passthrough ++ ++## v19, implemented by >= 0.9.22 ++ ++New flag at the end of sink input and source output introspection data: ++ ++ bool corked ++ ++## v20, implemented by >= 1.0 ++ ++Two new flags at the end of sink input introspection data: ++ ++ bool has_volume ++ bool volume_writable ++ ++## v21, implemented by >= 1.0 ++ ++Changes for format negotiation in the extended API. ++ ++New fields PA_COMMAND_CREATE_PLAYBACK_STREAM: ++ ++ uint8_t n_formats ++ format_info format1 ++ ... ++ format_info formatn ++ ++One new field in reply from PA_COMMAND_CREATE_PLAYBACK_STREAM: ++ ++ format_info format ++ ++New fields in reply from PA_COMMAND_GET_SINK_INFO (and thus ++PA_COMMAND_GET_SINK_INFO_LIST) ++ ++ uint8_t n_formats ++ format_info format1 ++ ... ++ format_info formatn ++ ++One new field in reply from PA_COMMAND_GET_SINK_INPUT_INFO (and thus ++PA_COMMAND_GET_SINK_INPUT_INFO_LIST) ++ ++ format_info format ++ ++## v22, implemented by >= 1.0 ++ ++New fields PA_COMMAND_CREATE_RECORD_STREAM: ++ ++ uint8_t n_formats ++ format_info format1 ++ ... ++ format_info formatn ++ ++One new field in reply from PA_COMMAND_CREATE_RECORD_STREAM: ++ ++ format_info format ++ ++New fields in reply from PA_COMMAND_GET_SOURCE_INFO (and thus ++PA_COMMAND_GET_SOURCE_INFO_LIST) ++ ++ uint8_t n_formats ++ format_info format1 ++ ... ++ format_info formatn ++ ++Five new fields in reply from PA_COMMAND_GET_SOURCE_OUTPUT_INFO (and thus ++PA_COMMAND_GET_SOURCE_OUTPUT_INFO_LIST) ++ ++ format_info format ++ volume ++ bool mute ++ bool has_volume ++ bool volume_writable ++ ++## v23, implemented by >= 1.0 ++ ++New field in PA_COMMAND_UNDERFLOW: ++ ++ int64_t index ++ ++#### If you just changed the protocol, read this ++## module-tunnel depends on the sink/source/sink-input/source-input protocol ++## internals, so if you changed these, you might have broken module-tunnel. ++## Don't forget to test module-tunnel-{source,sink} when pushing protocol ++## changes. --- pulseaudio-1.1.orig/debian/patches/0103-alsa-mixer-Allow-speaker-port-to-control-Front-Speak.patch +++ pulseaudio-1.1/debian/patches/0103-alsa-mixer-Allow-speaker-port-to-control-Front-Speak.patch @@ -0,0 +1,87 @@ +From 6c5eba69149d681f81a83a7770a6ad8ab662d583 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Thu, 12 Jan 2012 10:58:34 +0100 +Subject: [PATCH 2/8] alsa-mixer: Allow speaker port to control "Front + Speaker" + +"Front Speaker", "Surround Speaker" seems to be a common enough name +to make it into alsa-utils, so we should probably care about it as +well. In this case, there was a macbook pro whose speakers didn't work +without these controls. + +BugLink: http://bugs.launchpad.net/bugs/551441 +Reported-by: Jeroen T. Vermeulen +Signed-off-by: David Henningsson +--- + .../alsa/mixer/paths/analog-output-speaker.conf | 30 +++++++++++++++++++- + 1 files changed, 29 insertions(+), 1 deletions(-) + +diff --git a/src/modules/alsa/mixer/paths/analog-output-speaker.conf b/src/modules/alsa/mixer/paths/analog-output-speaker.conf +index c6916d6..0ba3e91 100644 +--- a/src/modules/alsa/mixer/paths/analog-output-speaker.conf ++++ b/src/modules/alsa/mixer/paths/analog-output-speaker.conf +@@ -50,7 +50,7 @@ switch = mute + volume = zero + + [Element Speaker] +-required = any ++required-any = any + switch = mute + volume = merge + override-map.1 = all +@@ -66,6 +66,13 @@ volume = merge + override-map.1 = all-front + override-map.2 = front-left,front-right + ++[Element Front Speaker] ++switch = mute ++volume = merge ++override-map.1 = all-front ++override-map.2 = front-left,front-right ++required-any = any ++ + [Element Rear] + switch = mute + volume = merge +@@ -78,6 +85,13 @@ volume = merge + override-map.1 = all-rear + override-map.2 = rear-left,rear-right + ++[Element Surround Speaker] ++switch = mute ++volume = merge ++override-map.1 = all-rear ++override-map.2 = rear-left,rear-right ++required-any = any ++ + [Element Side] + switch = mute + volume = merge +@@ -90,10 +104,24 @@ volume = merge + override-map.1 = all-center + override-map.2 = all-center,all-center + ++[Element Center Speaker] ++switch = mute ++volume = merge ++override-map.1 = all-center ++override-map.2 = all-center,all-center ++required-any = any ++ + [Element LFE] + switch = mute + volume = merge + override-map.1 = lfe + override-map.2 = lfe,lfe + ++[Element LFE Speaker] ++switch = mute ++volume = merge ++override-map.1 = lfe ++override-map.2 = lfe,lfe ++required-any = any ++ + .include analog-output.conf.common +-- +1.7.8.3 + --- pulseaudio-1.1.orig/debian/patches/0607-Fixup-a-few-things-in-the-new-path-probing.patch +++ pulseaudio-1.1/debian/patches/0607-Fixup-a-few-things-in-the-new-path-probing.patch @@ -0,0 +1,91 @@ +From 30a82a0bad0c9198060f9b2b4e65fa2b9bfb89a0 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 2 Dec 2011 10:20:23 +0100 +Subject: [PATCH 607/614] Fixup a few things in the new path probing + + * If mapping_probe_paths() fails to open the mixer, all paths are now +removed from the mapping's path sets. + * pa_path_set.probed isn't really used for anything (removed). + * If profile probing is configured to be skipped, mapping_paths_probe() +should still be called. + +Thanks to Tanu for spotting. + +Signed-off-by: David Henningsson +--- + src/modules/alsa/alsa-mixer.c | 17 ++++++++++------- + src/modules/alsa/alsa-mixer.h | 1 - + 2 files changed, 10 insertions(+), 8 deletions(-) + +diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c +index 610ab5f..eccf103 100644 +--- a/src/modules/alsa/alsa-mixer.c ++++ b/src/modules/alsa/alsa-mixer.c +@@ -2895,10 +2895,9 @@ void pa_alsa_path_set_dump(pa_alsa_path_set *ps) { + void *state; + pa_assert(ps); + +- pa_log_debug("Path Set %p, direction=%i, probed=%s", ++ pa_log_debug("Path Set %p, direction=%i", + (void*) ps, +- ps->direction, +- pa_yes_no(ps->probed)); ++ ps->direction); + + PA_HASHMAP_FOREACH(p, ps->paths, state) + pa_alsa_path_dump(p); +@@ -3718,8 +3717,12 @@ static void mapping_paths_probe(pa_alsa_mapping *m, pa_alsa_profile *profile, + pa_assert(pcm_handle); + + mixer_handle = pa_alsa_open_mixer_for_pcm(pcm_handle, NULL); +- if (!mixer_handle) +- return; /* Cannot open mixer :-( */ ++ if (!mixer_handle) { ++ /* Cannot open mixer, remove all entries */ ++ while (pa_hashmap_steal_first(ps->paths)); ++ return; ++ } ++ + + PA_HASHMAP_FOREACH(p, ps->paths, state) { + if (pa_alsa_path_probe(p, mixer_handle, m->profile_set->ignore_dB) < 0) { +@@ -3729,7 +3732,6 @@ static void mapping_paths_probe(pa_alsa_mapping *m, pa_alsa_profile *profile, + + path_set_condense(ps, mixer_handle); + path_set_make_paths_unique(ps); +- ps->probed = TRUE; + + if (mixer_handle) + snd_mixer_close(mixer_handle); +@@ -4167,7 +4169,7 @@ void pa_alsa_profile_set_probe( + + /* Is this already marked that it is supported? (i.e. from the config file) */ + if (p->supported) +- continue; ++ goto probe_paths; + + pa_log_debug("Looking at profile %s", p->name); + +@@ -4268,6 +4270,7 @@ void pa_alsa_profile_set_probe( + if (!p->supported) + continue; + ++probe_paths: + pa_log_debug("Profile %s supported.", p->name); + + if (p->output_mappings) +diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h +index 991fbff..703d45b 100644 +--- a/src/modules/alsa/alsa-mixer.h ++++ b/src/modules/alsa/alsa-mixer.h +@@ -191,7 +191,6 @@ struct pa_alsa_path { + struct pa_alsa_path_set { + pa_hashmap *paths; + pa_alsa_direction_t direction; +- pa_bool_t probed:1; + }; + + int pa_alsa_setting_select(pa_alsa_setting *s, snd_mixer_t *m); +-- +1.7.7.3 + --- pulseaudio-1.1.orig/debian/patches/0105-loopback-Fix-crashes.patch +++ pulseaudio-1.1/debian/patches/0105-loopback-Fix-crashes.patch @@ -0,0 +1,36 @@ +From 2c652b43f98e3f990ec3f7b7c77b7d6e87e9deb5 Mon Sep 17 00:00:00 2001 +From: Maarten Lankhorst +Date: Sun, 22 Jan 2012 14:11:23 +0100 +Subject: [PATCH 7/8] loopback: Fix crashes + +Flush the message queue before tearing down, and dest==NULL is valid in case moving failed. + +With this my module-loopback finally no longer causes frequent crashes. +--- + src/modules/module-loopback.c | 3 +++ + 1 files changed, 3 insertions(+), 0 deletions(-) + +diff --git a/src/modules/module-loopback.c b/src/modules/module-loopback.c +index 5291258..1f2ef91 100644 +--- a/src/modules/module-loopback.c ++++ b/src/modules/module-loopback.c +@@ -136,6 +136,7 @@ static void teardown(struct userdata *u) { + pa_assert(u); + pa_assert_ctl_context(); + ++ pa_asyncmsgq_flush(u->asyncmsgq, 0); + if (u->sink_input) + pa_sink_input_unlink(u->sink_input); + +@@ -360,6 +361,8 @@ static void source_output_moving_cb(pa_source_output *o, pa_source *dest) { + pa_proplist *p; + const char *n; + struct userdata *u; ++ if (!dest) ++ return; + + pa_source_output_assert_ref(o); + pa_assert_ctl_context(); +-- +1.7.8.3 + --- pulseaudio-1.1.orig/debian/patches/0606-alsa-add-card-ports-and-path-probe-cache.patch +++ pulseaudio-1.1/debian/patches/0606-alsa-add-card-ports-and-path-probe-cache.patch @@ -0,0 +1,872 @@ +From 7bd19fa789ef71446e014ef69bf85ea08d7f2292 Mon Sep 17 00:00:00 2001 +From: David Henningsson +Date: Fri, 25 Nov 2011 15:17:16 +0100 +Subject: [PATCH 606/614] alsa: add card ports and path probe cache + +To be able to add ports to all profiles, we need to probe all +profiles at startup. To speed this up, we now have a cache of +probes paths which is owned by the profile set. Since paths +are now owned by the profile set, the path set must now have +a hashmap of paths instead of a linked list. + +Signed-off-by: David Henningsson + +Conflicts: + + src/modules/alsa/alsa-mixer.c + src/modules/alsa/alsa-sink.c + src/modules/alsa/alsa-source.c +--- + src/modules/alsa/alsa-mixer.c | 351 +++++++++++++++++++++-------------- + src/modules/alsa/alsa-mixer.h | 17 +- + src/modules/alsa/alsa-sink.c | 25 +-- + src/modules/alsa/alsa-source.c | 25 +-- + src/modules/alsa/module-alsa-card.c | 20 ++- + 5 files changed, 253 insertions(+), 185 deletions(-) + +diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c +index c70edd3..610ab5f 100644 +--- a/src/modules/alsa/alsa-mixer.c ++++ b/src/modules/alsa/alsa-mixer.c +@@ -561,13 +561,10 @@ void pa_alsa_path_free(pa_alsa_path *p) { + } + + void pa_alsa_path_set_free(pa_alsa_path_set *ps) { +- pa_alsa_path *p; + pa_assert(ps); + +- while ((p = ps->paths)) { +- PA_LLIST_REMOVE(pa_alsa_path, ps->paths, p); +- pa_alsa_path_free(p); +- } ++ if (ps->paths) ++ pa_hashmap_free(ps->paths, NULL, NULL); + + pa_xfree(ps); + } +@@ -2567,7 +2564,8 @@ int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, pa_bool_t ignore_dB) { + pa_assert(m); + + if (p->probed) +- return 0; ++ return p->supported ? 0 : -1; ++ p->probed = TRUE; + + pa_zero(min_dB); + pa_zero(max_dB); +@@ -2642,7 +2640,6 @@ int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, pa_bool_t ignore_dB) { + path_create_settings(p); + + p->supported = TRUE; +- p->probed = TRUE; + + p->min_dB = INFINITY; + p->max_dB = -INFINITY; +@@ -2759,12 +2756,13 @@ void pa_alsa_path_set_callback(pa_alsa_path *p, snd_mixer_t *m, snd_mixer_elem_c + + void pa_alsa_path_set_set_callback(pa_alsa_path_set *ps, snd_mixer_t *m, snd_mixer_elem_callback_t cb, void *userdata) { + pa_alsa_path *p; ++ void *state; + + pa_assert(ps); + pa_assert(m); + pa_assert(cb); + +- PA_LLIST_FOREACH(p, ps->paths) ++ PA_HASHMAP_FOREACH(p, ps->paths, state) + pa_alsa_path_set_callback(p, m, cb, userdata); + } + +@@ -2772,7 +2770,8 @@ pa_alsa_path_set *pa_alsa_path_set_new(pa_alsa_mapping *m, pa_alsa_direction_t d + pa_alsa_path_set *ps; + char **pn = NULL, **en = NULL, **ie; + pa_alsa_decibel_fix *db_fix; +- void *state; ++ void *state, *state2; ++ pa_hashmap *cache; + + pa_assert(m); + pa_assert(m->profile_set); +@@ -2784,19 +2783,24 @@ pa_alsa_path_set *pa_alsa_path_set_new(pa_alsa_mapping *m, pa_alsa_direction_t d + + ps = pa_xnew0(pa_alsa_path_set, 1); + ps->direction = direction; ++ ps->paths = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func); + +- if (direction == PA_ALSA_DIRECTION_OUTPUT) ++ if (direction == PA_ALSA_DIRECTION_OUTPUT) { + pn = m->output_path_names; +- else if (direction == PA_ALSA_DIRECTION_INPUT) ++ cache = m->profile_set->output_paths; ++ } ++ else if (direction == PA_ALSA_DIRECTION_INPUT) { + pn = m->input_path_names; ++ cache = m->profile_set->input_paths; ++ } + + if (pn) { + char **in; + + for (in = pn; *in; in++) { +- pa_alsa_path *p; ++ pa_alsa_path *p = NULL; + pa_bool_t duplicate = FALSE; +- char **kn, *fn; ++ char **kn; + + for (kn = pn; kn < in; kn++) + if (pa_streq(*kn, *in)) { +@@ -2807,15 +2811,18 @@ pa_alsa_path_set *pa_alsa_path_set_new(pa_alsa_mapping *m, pa_alsa_direction_t d + if (duplicate) + continue; + +- fn = pa_sprintf_malloc("%s.conf", *in); +- +- if ((p = pa_alsa_path_new(fn, direction))) { +- p->path_set = ps; +- PA_LLIST_INSERT_AFTER(pa_alsa_path, ps->paths, ps->last_path, p); +- ps->last_path = p; ++ p = pa_hashmap_get(cache, *in); ++ if (!p) { ++ char *fn = pa_sprintf_malloc("%s.conf", *in); ++ p = pa_alsa_path_new(fn, direction); ++ pa_xfree(fn); ++ if (p) ++ pa_hashmap_put(cache, *in, p); + } ++ pa_assert(pa_hashmap_get(cache, *in) == p); ++ if (p) ++ pa_hashmap_put(ps->paths, p, p); + +- pa_xfree(fn); + } + + goto finish; +@@ -2836,7 +2843,6 @@ pa_alsa_path_set *pa_alsa_path_set_new(pa_alsa_mapping *m, pa_alsa_direction_t d + pa_alsa_path *p; + + p = pa_alsa_path_synthesize(*ie, direction); +- p->path_set = ps; + + /* Mark all other passed elements for require-absent */ + for (je = en; *je; je++) { +@@ -2856,8 +2862,7 @@ pa_alsa_path_set *pa_alsa_path_set_new(pa_alsa_mapping *m, pa_alsa_direction_t d + p->last_element = e; + } + +- PA_LLIST_INSERT_AFTER(pa_alsa_path, ps->paths, ps->last_path, p); +- ps->last_path = p; ++ pa_hashmap_put(ps->paths, *ie, p); + } + + finish: +@@ -2865,7 +2870,7 @@ finish: + PA_HASHMAP_FOREACH(db_fix, m->profile_set->decibel_fixes, state) { + pa_alsa_path *p; + +- PA_LLIST_FOREACH(p, ps->paths) { ++ PA_HASHMAP_FOREACH(p, ps->paths, state2) { + pa_alsa_element *e; + + PA_LLIST_FOREACH(e, p->elements) { +@@ -2887,6 +2892,7 @@ finish: + + void pa_alsa_path_set_dump(pa_alsa_path_set *ps) { + pa_alsa_path *p; ++ void *state; + pa_assert(ps); + + pa_log_debug("Path Set %p, direction=%i, probed=%s", +@@ -2894,7 +2900,7 @@ void pa_alsa_path_set_dump(pa_alsa_path_set *ps) { + ps->direction, + pa_yes_no(ps->probed)); + +- PA_LLIST_FOREACH(p, ps->paths) ++ PA_HASHMAP_FOREACH(p, ps->paths, state) + pa_alsa_path_dump(p); + } + +@@ -3040,20 +3046,21 @@ static pa_bool_t element_is_subset(pa_alsa_element *a, pa_alsa_element *b, snd_m + } + + static void path_set_condense(pa_alsa_path_set *ps, snd_mixer_t *m) { +- pa_alsa_path *p, *np; ++ pa_alsa_path *p; ++ void *state; + + pa_assert(ps); + pa_assert(m); + + /* If we only have one path, then don't bother */ +- if (!ps->paths || !ps->paths->next) ++ if (pa_hashmap_size(ps->paths) < 2) + return; + +- for (p = ps->paths; p; p = np) { ++ PA_HASHMAP_FOREACH(p, ps->paths, state) { + pa_alsa_path *p2; +- np = p->next; ++ void *state2; + +- PA_LLIST_FOREACH(p2, ps->paths) { ++ PA_HASHMAP_FOREACH(p2, ps->paths, state2) { + pa_alsa_element *ea, *eb; + pa_bool_t is_subset = TRUE; + +@@ -3082,24 +3089,33 @@ static void path_set_condense(pa_alsa_path_set *ps, snd_mixer_t *m) { + + if (is_subset) { + pa_log_debug("Removing path '%s' as it is a subset of '%s'.", p->name, p2->name); +- PA_LLIST_REMOVE(pa_alsa_path, ps->paths, p); +- pa_alsa_path_free(p); ++ pa_hashmap_remove(ps->paths, p); + break; + } + } + } + } + ++static pa_alsa_path* path_set_find_path_by_name(pa_alsa_path_set *ps, const char* name, pa_alsa_path *ignore) ++{ ++ pa_alsa_path* p; ++ void *state; ++ ++ PA_HASHMAP_FOREACH(p, ps->paths, state) ++ if (p != ignore && pa_streq(p->name, name)) ++ return p; ++ return NULL; ++} ++ + static void path_set_make_paths_unique(pa_alsa_path_set *ps) { + pa_alsa_path *p, *q; ++ void *state, *state2; + +- PA_LLIST_FOREACH(p, ps->paths) { ++ PA_HASHMAP_FOREACH(p, ps->paths, state) { + unsigned i; + char *m; + +- for (q = p->next; q; q = q->next) +- if (pa_streq(q->name, p->name)) +- break; ++ q = path_set_find_path_by_name(ps, p->name, p); + + if (!q) + continue; +@@ -3107,7 +3123,8 @@ static void path_set_make_paths_unique(pa_alsa_path_set *ps) { + m = pa_xstrdup(p->name); + + /* OK, this name is not unique, hence let's rename */ +- for (i = 1, q = p; q; q = q->next) { ++ i = 1; ++ PA_HASHMAP_FOREACH(q, ps->paths, state2) { + char *nn, *nd; + + if (!pa_streq(q->name, m)) +@@ -3128,34 +3145,6 @@ static void path_set_make_paths_unique(pa_alsa_path_set *ps) { + } + } + +-void pa_alsa_path_set_probe(pa_alsa_path_set *ps, snd_mixer_t *m, pa_bool_t ignore_dB) { +- pa_alsa_path *p, *n; +- +- pa_assert(ps); +- +- if (ps->probed) +- return; +- +- for (p = ps->paths; p; p = n) { +- n = p->next; +- +- if (pa_alsa_path_probe(p, m, ignore_dB) < 0) { +- PA_LLIST_REMOVE(pa_alsa_path, ps->paths, p); +- pa_alsa_path_free(p); +- } +- } +- +- pa_log_debug("Found mixer paths (before tidying):"); +- pa_alsa_path_set_dump(ps); +- +- path_set_condense(ps, m); +- path_set_make_paths_unique(ps); +- ps->probed = TRUE; +- +- pa_log_debug("Available mixer paths (after tidying):"); +- pa_alsa_path_set_dump(ps); +-} +- + static void mapping_free(pa_alsa_mapping *m) { + pa_assert(m); + +@@ -3167,6 +3156,10 @@ static void mapping_free(pa_alsa_mapping *m) { + pa_xstrfreev(m->output_path_names); + pa_xstrfreev(m->input_element); + pa_xstrfreev(m->output_element); ++ if (m->input_path_set) ++ pa_alsa_path_set_free(m->input_path_set); ++ if (m->output_path_set) ++ pa_alsa_path_set_free(m->output_path_set); + + pa_assert(!m->input_pcm); + pa_assert(!m->output_pcm); +@@ -3195,6 +3188,24 @@ static void profile_free(pa_alsa_profile *p) { + void pa_alsa_profile_set_free(pa_alsa_profile_set *ps) { + pa_assert(ps); + ++ if (ps->input_paths) { ++ pa_alsa_path *p; ++ ++ while ((p = pa_hashmap_steal_first(ps->input_paths))) ++ pa_alsa_path_free(p); ++ ++ pa_hashmap_free(ps->input_paths, NULL, NULL); ++ } ++ ++ if (ps->output_paths) { ++ pa_alsa_path *p; ++ ++ while ((p = pa_hashmap_steal_first(ps->output_paths))) ++ pa_alsa_path_free(p); ++ ++ pa_hashmap_free(ps->output_paths, NULL, NULL); ++ } ++ + if (ps->profiles) { + pa_alsa_profile *p; + +@@ -3680,6 +3691,53 @@ fail: + return -1; + } + ++static void mapping_paths_probe(pa_alsa_mapping *m, pa_alsa_profile *profile, ++ pa_alsa_direction_t direction) { ++ ++ pa_alsa_path *p; ++ void *state; ++ snd_pcm_t *pcm_handle; ++ pa_alsa_path_set *ps; ++ snd_mixer_t *mixer_handle; ++ ++ if (direction == PA_ALSA_DIRECTION_OUTPUT) { ++ if (m->output_path_set) ++ return; /* Already probed */ ++ m->output_path_set = ps = pa_alsa_path_set_new(m, direction); ++ pcm_handle = m->output_pcm; ++ } else { ++ if (m->input_path_set) ++ return; /* Already probed */ ++ m->input_path_set = ps = pa_alsa_path_set_new(m, direction); ++ pcm_handle = m->input_pcm; ++ } ++ ++ if (!ps) ++ return; /* No paths */ ++ ++ pa_assert(pcm_handle); ++ ++ mixer_handle = pa_alsa_open_mixer_for_pcm(pcm_handle, NULL); ++ if (!mixer_handle) ++ return; /* Cannot open mixer :-( */ ++ ++ PA_HASHMAP_FOREACH(p, ps->paths, state) { ++ if (pa_alsa_path_probe(p, mixer_handle, m->profile_set->ignore_dB) < 0) { ++ pa_hashmap_remove(ps->paths, p); ++ } ++ } ++ ++ path_set_condense(ps, mixer_handle); ++ path_set_make_paths_unique(ps); ++ ps->probed = TRUE; ++ ++ if (mixer_handle) ++ snd_mixer_close(mixer_handle); ++ ++ pa_log_debug("Available mixer paths (after tidying):"); ++ pa_alsa_path_set_dump(ps); ++} ++ + static int mapping_verify(pa_alsa_mapping *m, const pa_channel_map *bonus) { + + static const struct description_map well_known_descriptions[] = { +@@ -4043,6 +4101,8 @@ pa_alsa_profile_set* pa_alsa_profile_set_new(const char *fname, const pa_channel + ps->mappings = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); + ps->profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); + ps->decibel_fixes = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); ++ ps->input_paths = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); ++ ps->output_paths = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); + + items[0].data = &ps->auto_profiles; + +@@ -4205,8 +4265,21 @@ void pa_alsa_profile_set_probe( + + last = p; + +- if (p->supported) +- pa_log_debug("Profile %s supported.", p->name); ++ if (!p->supported) ++ continue; ++ ++ pa_log_debug("Profile %s supported.", p->name); ++ ++ if (p->output_mappings) ++ PA_IDXSET_FOREACH(m, p->output_mappings, idx) ++ if (m->output_pcm) ++ mapping_paths_probe(m, p, PA_ALSA_DIRECTION_OUTPUT); ++ ++ if (p->input_mappings) ++ PA_IDXSET_FOREACH(m, p->input_mappings, idx) ++ if (m->input_pcm) ++ mapping_paths_probe(m, p, PA_ALSA_DIRECTION_INPUT); ++ + } + + /* Clean up */ +@@ -4278,98 +4351,100 @@ void pa_alsa_profile_set_dump(pa_alsa_profile_set *ps) { + pa_alsa_decibel_fix_dump(db_fix); + } + +-void pa_alsa_add_ports(pa_core *c, pa_hashmap **p, pa_alsa_path_set *ps) { +- pa_alsa_path *path; ++static pa_device_port* device_port_alsa_init(pa_hashmap *ports, ++ const char* name, ++ const char* description, ++ pa_alsa_path *path, ++ pa_alsa_setting *setting, ++ pa_card_profile *cp, ++ pa_hashmap *extra, ++ pa_core *core) { + +- pa_assert(c); +- pa_assert(p); +- pa_assert(!*p); +- pa_assert(ps); ++ pa_device_port * p = pa_hashmap_get(ports, name); ++ if (!p) { ++ pa_alsa_port_data *data; + +- /* if there is no path, we don't want a port list */ +- if (!ps->paths) +- return; ++ p = pa_device_port_new(core, name, description, sizeof(pa_alsa_port_data)); ++ pa_assert(p); ++ pa_hashmap_put(ports, name, p); ++ p->profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); + +- if (!ps->paths->next){ +- pa_alsa_setting *s; ++ data = PA_DEVICE_PORT_DATA(p); ++ data->path = path; ++ data->setting = setting; ++ } + +- /* If there is only one path, but no or only one setting, then +- * we want a port list either */ +- if (!ps->paths->settings || !ps->paths->settings->next) +- return; ++ p->is_input |= path->direction == PA_ALSA_DIRECTION_ANY || path->direction == PA_ALSA_DIRECTION_INPUT; ++ p->is_output |= path->direction == PA_ALSA_DIRECTION_ANY || path->direction == PA_ALSA_DIRECTION_OUTPUT; + +- /* Ok, there is only one path, however with multiple settings, +- * so let's create a port for each setting */ +- *p = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); ++ if (cp) ++ pa_hashmap_put(p->profiles, cp->name, cp); + +- PA_LLIST_FOREACH(s, ps->paths->settings) { +- pa_device_port *port; +- pa_alsa_port_data *data; ++ if (extra) { ++ pa_hashmap_put(extra, name, p); ++ pa_device_port_ref(p); ++ } + +- port = pa_device_port_new(c, s->name, s->description, sizeof(pa_alsa_port_data)); +- port->priority = s->priority; ++ return p; ++} + +- data = PA_DEVICE_PORT_DATA(port); +- data->path = ps->paths; +- data->setting = s; ++void pa_alsa_path_set_add_ports( ++ pa_alsa_path_set *ps, ++ pa_card_profile *cp, ++ pa_hashmap *ports, ++ pa_hashmap *extra, ++ pa_core *core) { + +- pa_hashmap_put(*p, port->name, port); +- } ++ pa_alsa_path *path; ++ void *state; + +- } else { ++ pa_assert(ports); + +- /* We have multiple paths, so let's create a port for each +- * one, and each of each settings */ +- *p = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); ++ if (!ps) ++ return; + +- PA_LLIST_FOREACH(path, ps->paths) { ++ PA_HASHMAP_FOREACH(path, ps->paths, state) { ++ if (!path->settings || !path->settings->next) { ++ /* If there is no or just one setting we only need a ++ * single entry */ ++ pa_device_port *port = device_port_alsa_init(ports, path->name, ++ path->description, path, path->settings, cp, extra, core); ++ port->priority = path->priority * 100; + +- if (!path->settings || !path->settings->next) { ++ } else { ++ pa_alsa_setting *s; ++ PA_LLIST_FOREACH(s, path->settings) { + pa_device_port *port; +- pa_alsa_port_data *data; +- +- /* If there is no or just one setting we only need a +- * single entry */ +- +- port = pa_device_port_new(c, path->name, path->description, sizeof(pa_alsa_port_data)); +- port->priority = path->priority * 100; +- +- +- data = PA_DEVICE_PORT_DATA(port); +- data->path = path; +- data->setting = path->settings; +- +- pa_hashmap_put(*p, port->name, port); +- } else { +- pa_alsa_setting *s; ++ char *n, *d; + +- PA_LLIST_FOREACH(s, path->settings) { +- pa_device_port *port; +- pa_alsa_port_data *data; +- char *n, *d; ++ n = pa_sprintf_malloc("%s;%s", path->name, s->name); + +- n = pa_sprintf_malloc("%s;%s", path->name, s->name); ++ if (s->description[0]) ++ d = pa_sprintf_malloc(_("%s / %s"), path->description, s->description); ++ else ++ d = pa_xstrdup(path->description); + +- if (s->description[0]) +- d = pa_sprintf_malloc(_("%s / %s"), path->description, s->description); +- else +- d = pa_xstrdup(path->description); ++ port = device_port_alsa_init(ports, n, d, path, s, cp, extra, core); ++ port->priority = path->priority * 100 + s->priority; + +- port = pa_device_port_new(c, n, d, sizeof(pa_alsa_port_data)); +- port->priority = path->priority * 100 + s->priority; ++ pa_xfree(n); ++ pa_xfree(d); ++ } ++ } ++ } ++} + +- pa_xfree(n); +- pa_xfree(d); ++void pa_alsa_add_ports(pa_hashmap **p, pa_alsa_path_set *ps, pa_card *card) { + +- data = PA_DEVICE_PORT_DATA(port); +- data->path = path; +- data->setting = s; ++ pa_assert(p); ++ pa_assert(!*p); ++ pa_assert(ps); + +- pa_hashmap_put(*p, port->name, port); +- } +- } +- } ++ if (ps->paths && pa_hashmap_size(ps->paths) > 0) { ++ pa_assert(card); ++ *p = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); ++ pa_alsa_path_set_add_ports(ps, NULL, card->ports, *p, card->core); + } + +- pa_log_debug("Added %u ports", pa_hashmap_size(*p)); ++ pa_log_debug("Added %u ports", *p ? pa_hashmap_size(*p) : 0); + } +diff --git a/src/modules/alsa/alsa-mixer.h b/src/modules/alsa/alsa-mixer.h +index e871e6f..991fbff 100644 +--- a/src/modules/alsa/alsa-mixer.h ++++ b/src/modules/alsa/alsa-mixer.h +@@ -158,9 +158,6 @@ struct pa_alsa_element { + * used to control it as if it had a single volume slider, a single + * mute switch and a single list of selectable options. */ + struct pa_alsa_path { +- pa_alsa_path_set *path_set; +- PA_LLIST_FIELDS(pa_alsa_path); +- + pa_alsa_direction_t direction; + + char *name; +@@ -192,13 +189,9 @@ struct pa_alsa_path { + /* A path set is simply a set of paths that are applicable to a + * device */ + struct pa_alsa_path_set { +- PA_LLIST_HEAD(pa_alsa_path, paths); ++ pa_hashmap *paths; + pa_alsa_direction_t direction; + pa_bool_t probed:1; +- +- /* This is used during parsing only, as a shortcut so that we +- * don't have to iterate the list all the time */ +- pa_alsa_path *last_path; + }; + + int pa_alsa_setting_select(pa_alsa_setting *s, snd_mixer_t *m); +@@ -242,6 +235,8 @@ struct pa_alsa_mapping { + char **output_path_names; + char **input_element; /* list of fallbacks */ + char **output_element; ++ pa_alsa_path_set *input_path_set; ++ pa_alsa_path_set *output_path_set; + + unsigned supported; + +@@ -289,8 +284,11 @@ struct pa_alsa_profile_set { + pa_hashmap *mappings; + pa_hashmap *profiles; + pa_hashmap *decibel_fixes; ++ pa_hashmap *input_paths; ++ pa_hashmap *output_paths; + + pa_bool_t auto_profiles; ++ pa_bool_t ignore_dB:1; + pa_bool_t probed:1; + }; + +@@ -323,6 +321,7 @@ struct pa_alsa_port_data { + pa_alsa_setting *setting; + }; + +-void pa_alsa_add_ports(pa_core *c, pa_hashmap **p, pa_alsa_path_set *ps); ++void pa_alsa_add_ports(pa_hashmap **p, pa_alsa_path_set *ps, pa_card *card); ++void pa_alsa_path_set_add_ports(pa_alsa_path_set *ps, pa_card_profile *cp, pa_hashmap *ports, pa_hashmap *extra, pa_core *core); + + #endif +diff --git a/src/modules/alsa/alsa-sink.c b/src/modules/alsa/alsa-sink.c +index ba0bf9a..1254dc3 100644 +--- a/src/modules/alsa/alsa-sink.c ++++ b/src/modules/alsa/alsa-sink.c +@@ -1820,22 +1820,14 @@ static void find_mixer(struct userdata *u, pa_alsa_mapping *mapping, const char + + pa_log_debug("Probed mixer path %s:", u->mixer_path->name); + pa_alsa_path_dump(u->mixer_path); +- } else { +- +- if (!(u->mixer_path_set = pa_alsa_path_set_new(mapping, PA_ALSA_DIRECTION_OUTPUT))) +- goto fail; +- +- pa_alsa_path_set_probe(u->mixer_path_set, u->mixer_handle, ignore_dB); +- } ++ } else if (!(u->mixer_path_set = mapping->output_path_set)) ++ goto fail; + + return; + + fail: + +- if (u->mixer_path_set) { +- pa_alsa_path_set_free(u->mixer_path_set); +- u->mixer_path_set = NULL; +- } else if (u->mixer_path) { ++ if (u->mixer_path) { + pa_alsa_path_free(u->mixer_path); + u->mixer_path = NULL; + } +@@ -1872,7 +1864,7 @@ static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB) { + } else { + + if (!u->mixer_path && u->mixer_path_set) +- u->mixer_path = u->mixer_path_set->paths; ++ u->mixer_path = pa_hashmap_first(u->mixer_path_set->paths); + + if (u->mixer_path) { + /* Hmm, we have only a single path, then let's activate it */ +@@ -1890,8 +1882,9 @@ static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB) { + /* Will we need to register callbacks? */ + if (u->mixer_path_set && u->mixer_path_set->paths) { + pa_alsa_path *p; ++ void *state; + +- PA_LLIST_FOREACH(p, u->mixer_path_set->paths) { ++ PA_HASHMAP_FOREACH(p, u->mixer_path_set->paths, state) { + if (p->has_volume || p->has_mute) + need_mixer_callback = TRUE; + } +@@ -2159,7 +2152,7 @@ pa_sink *pa_alsa_sink_new(pa_module *m, pa_modargs *ma, const char*driver, pa_ca + } + + if (u->mixer_path_set) +- pa_alsa_add_ports(u->core, &data.ports, u->mixer_path_set); ++ pa_alsa_add_ports(&data.ports, u->mixer_path_set, card); + + u->sink = pa_sink_new(m->core, &data, PA_SINK_HARDWARE | PA_SINK_LATENCY | (u->use_tsched ? PA_SINK_DYNAMIC_LATENCY : 0) | + (set_formats ? PA_SINK_SET_FORMATS : 0)); +@@ -2337,9 +2330,7 @@ static void userdata_free(struct userdata *u) { + if (u->mixer_fdl) + pa_alsa_fdlist_free(u->mixer_fdl); + +- if (u->mixer_path_set) +- pa_alsa_path_set_free(u->mixer_path_set); +- else if (u->mixer_path) ++ if (u->mixer_path && !u->mixer_path_set) + pa_alsa_path_free(u->mixer_path); + + if (u->mixer_handle) +diff --git a/src/modules/alsa/alsa-source.c b/src/modules/alsa/alsa-source.c +index baf8156..4e69dd7 100644 +--- a/src/modules/alsa/alsa-source.c ++++ b/src/modules/alsa/alsa-source.c +@@ -1520,22 +1520,14 @@ static void find_mixer(struct userdata *u, pa_alsa_mapping *mapping, const char + + pa_log_debug("Probed mixer path %s:", u->mixer_path->name); + pa_alsa_path_dump(u->mixer_path); +- } else { +- +- if (!(u->mixer_path_set = pa_alsa_path_set_new(mapping, PA_ALSA_DIRECTION_INPUT))) +- goto fail; +- +- pa_alsa_path_set_probe(u->mixer_path_set, u->mixer_handle, ignore_dB); +- } ++ } else if (!(u->mixer_path_set = mapping->input_path_set)) ++ goto fail; + + return; + + fail: + +- if (u->mixer_path_set) { +- pa_alsa_path_set_free(u->mixer_path_set); +- u->mixer_path_set = NULL; +- } else if (u->mixer_path) { ++ if (u->mixer_path) { + pa_alsa_path_free(u->mixer_path); + u->mixer_path = NULL; + } +@@ -1571,7 +1563,7 @@ static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB) { + } else { + + if (!u->mixer_path && u->mixer_path_set) +- u->mixer_path = u->mixer_path_set->paths; ++ u->mixer_path = pa_hashmap_first(u->mixer_path_set->paths); + + if (u->mixer_path) { + /* Hmm, we have only a single path, then let's activate it */ +@@ -1589,8 +1581,9 @@ static int setup_mixer(struct userdata *u, pa_bool_t ignore_dB) { + /* Will we need to register callbacks? */ + if (u->mixer_path_set && u->mixer_path_set->paths) { + pa_alsa_path *p; ++ void *state; + +- PA_LLIST_FOREACH(p, u->mixer_path_set->paths) { ++ PA_HASHMAP_FOREACH(p, u->mixer_path_set->paths, state) { + if (p->has_volume || p->has_mute) + need_mixer_callback = TRUE; + } +@@ -1848,7 +1841,7 @@ pa_source *pa_alsa_source_new(pa_module *m, pa_modargs *ma, const char*driver, p + } + + if (u->mixer_path_set) +- pa_alsa_add_ports(u->core, &data.ports, u->mixer_path_set); ++ pa_alsa_add_ports(&data.ports, u->mixer_path_set, card); + + u->source = pa_source_new(m->core, &data, PA_SOURCE_HARDWARE|PA_SOURCE_LATENCY|(u->use_tsched ? PA_SOURCE_DYNAMIC_LATENCY : 0)); + pa_source_new_data_done(&data); +@@ -1999,9 +1992,7 @@ static void userdata_free(struct userdata *u) { + if (u->mixer_fdl) + pa_alsa_fdlist_free(u->mixer_fdl); + +- if (u->mixer_path_set) +- pa_alsa_path_set_free(u->mixer_path_set); +- else if (u->mixer_path) ++ if (u->mixer_path && !u->mixer_path_set) + pa_alsa_path_free(u->mixer_path); + + if (u->mixer_handle) +diff --git a/src/modules/alsa/module-alsa-card.c b/src/modules/alsa/module-alsa-card.c +index 6d1a5e1..6e3aeda 100644 +--- a/src/modules/alsa/module-alsa-card.c ++++ b/src/modules/alsa/module-alsa-card.c +@@ -112,7 +112,7 @@ struct profile_data { + pa_alsa_profile *profile; + }; + +-static void add_profiles(struct userdata *u, pa_hashmap *h) { ++static void add_profiles(struct userdata *u, pa_hashmap *h, pa_hashmap *ports) { + pa_alsa_profile *ap; + void *state; + +@@ -131,17 +131,21 @@ static void add_profiles(struct userdata *u, pa_hashmap *h) { + if (ap->output_mappings) { + cp->n_sinks = pa_idxset_size(ap->output_mappings); + +- PA_IDXSET_FOREACH(m, ap->output_mappings, idx) ++ PA_IDXSET_FOREACH(m, ap->output_mappings, idx) { ++ pa_alsa_path_set_add_ports(m->output_path_set, cp, ports, NULL, u->core); + if (m->channel_map.channels > cp->max_sink_channels) + cp->max_sink_channels = m->channel_map.channels; ++ } + } + + if (ap->input_mappings) { + cp->n_sources = pa_idxset_size(ap->input_mappings); + +- PA_IDXSET_FOREACH(m, ap->input_mappings, idx) ++ PA_IDXSET_FOREACH(m, ap->input_mappings, idx) { ++ pa_alsa_path_set_add_ports(m->input_path_set, cp, ports, NULL, u->core); + if (m->channel_map.channels > cp->max_source_channels) + cp->max_source_channels = m->channel_map.channels; ++ } + } + + d = PA_CARD_PROFILE_DATA(cp); +@@ -288,6 +292,7 @@ int pa__init(pa_module *m) { + pa_card_new_data data; + pa_modargs *ma; + int alsa_card_index; ++ pa_bool_t ignore_dB = FALSE; + struct userdata *u; + pa_reserve_wrapper *reserve = NULL; + const char *description; +@@ -303,6 +308,11 @@ int pa__init(pa_module *m) { + goto fail; + } + ++ if (pa_modargs_get_value_boolean(ma, "ignore_dB", &ignore_dB) < 0) { ++ pa_log("Failed to parse ignore_dB argument."); ++ goto fail; ++ } ++ + m->userdata = u = pa_xnew0(struct userdata, 1); + u->core = m->core; + u->module = m; +@@ -338,6 +348,8 @@ int pa__init(pa_module *m) { + u->profile_set = pa_alsa_profile_set_new(fn, &u->core->default_channel_map); + pa_xfree(fn); + ++ u->profile_set->ignore_dB = ignore_dB; ++ + if (!u->profile_set) + goto fail; + +@@ -371,7 +383,7 @@ int pa__init(pa_module *m) { + pa_reserve_wrapper_set_application_device_name(reserve, description); + + data.profiles = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func); +- add_profiles(u, data.profiles); ++ add_profiles(u, data.profiles, data.ports); + + if (pa_hashmap_isempty(data.profiles)) { + pa_log("Failed to find a working profile."); +-- +1.7.7.3 +