Accepting request 340198 from multimedia:libs
1 OBS-URL: https://build.opensuse.org/request/show/340198 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/pulseaudio?expand=0&rev=133
This commit is contained in:
commit
df3b246c1b
@ -0,0 +1,30 @@
|
|||||||
|
From e061f9afd2ee1a798d71b3d078725bfcea214202 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tanu Kaskinen <tanuk@iki.fi>
|
||||||
|
Date: Fri, 18 Sep 2015 09:59:45 +0300
|
||||||
|
Subject: [PATCH] alsa-mixer: Add "Dock Line Out" jack handling to
|
||||||
|
analog-output-speaker-always
|
||||||
|
|
||||||
|
The jack is already in analog-output-speaker, so let's have the same
|
||||||
|
handling in analog-output-speaker-always too.
|
||||||
|
---
|
||||||
|
src/modules/alsa/mixer/paths/analog-output-speaker-always.conf | 4 ++++
|
||||||
|
1 file changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf b/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf
|
||||||
|
index 599cfc85f0d2..71f356dce00b 100644
|
||||||
|
--- a/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf
|
||||||
|
+++ b/src/modules/alsa/mixer/paths/analog-output-speaker-always.conf
|
||||||
|
@@ -49,6 +49,10 @@ state.unplugged = unknown
|
||||||
|
state.plugged = no
|
||||||
|
state.unplugged = unknown
|
||||||
|
|
||||||
|
+[Jack Dock Line Out]
|
||||||
|
+state.plugged = no
|
||||||
|
+state.unplugged = unknown
|
||||||
|
+
|
||||||
|
[Element Hardware Master]
|
||||||
|
switch = mute
|
||||||
|
volume = merge
|
||||||
|
--
|
||||||
|
2.6.1
|
||||||
|
|
@ -0,0 +1,92 @@
|
|||||||
|
From 91313e60a81e96ce976f24c522656c57b4ab94ca Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Henningsson <david.henningsson@canonical.com>
|
||||||
|
Date: Tue, 5 May 2015 17:01:13 +0200
|
||||||
|
Subject: [PATCH] module-alsa-card: Report available ports before unavailable
|
||||||
|
ones
|
||||||
|
|
||||||
|
In case the same jack causes one port to become available and another
|
||||||
|
one unavailable, the available should be reported first.
|
||||||
|
|
||||||
|
This is to avoid unnecessary changes: e g, consider a 'Headphone Jack'
|
||||||
|
making 'Headphone' available and 'Speaker' unavailable. In case the
|
||||||
|
unavailable change triggers first, and there is also a currently available
|
||||||
|
third port (e g 'Digital out'), the routing system might choose to route
|
||||||
|
to this port because neither of the 'Speaker' and 'Headphone' ports are
|
||||||
|
available.
|
||||||
|
|
||||||
|
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
|
||||||
|
---
|
||||||
|
src/modules/alsa/module-alsa-card.c | 31 +++++++++++++++++++++++++------
|
||||||
|
1 file changed, 25 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
--- a/src/modules/alsa/module-alsa-card.c
|
||||||
|
+++ b/src/modules/alsa/module-alsa-card.c
|
||||||
|
@@ -304,7 +304,7 @@ static void init_profile(struct userdata
|
||||||
|
am->source = pa_alsa_source_new(u->module, u->modargs, __FILE__, u->card, am);
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void report_port_state(pa_device_port *p, struct userdata *u) {
|
||||||
|
+static pa_available_t calc_port_state(pa_device_port *p, struct userdata *u) {
|
||||||
|
void *state;
|
||||||
|
pa_alsa_jack *jack;
|
||||||
|
pa_available_t pa = PA_AVAILABLE_UNKNOWN;
|
||||||
|
@@ -348,10 +348,14 @@ static void report_port_state(pa_device_
|
||||||
|
pa = cpa;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- pa_device_port_set_available(p, pa);
|
||||||
|
+ return pa;
|
||||||
|
}
|
||||||
|
|
||||||
|
+struct temp_port_avail {
|
||||||
|
+ pa_device_port *port;
|
||||||
|
+ pa_available_t avail;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask) {
|
||||||
|
struct userdata *u = snd_mixer_elem_get_callback_private(melem);
|
||||||
|
snd_hctl_elem_t *elem = snd_mixer_elem_get_private(melem);
|
||||||
|
@@ -359,7 +363,7 @@ static int report_jack_state(snd_mixer_e
|
||||||
|
bool plugged_in;
|
||||||
|
void *state;
|
||||||
|
pa_alsa_jack *jack;
|
||||||
|
- pa_device_port *port;
|
||||||
|
+ struct temp_port_avail *tp, *tports;
|
||||||
|
|
||||||
|
pa_assert(u);
|
||||||
|
|
||||||
|
@@ -376,6 +380,8 @@ static int report_jack_state(snd_mixer_e
|
||||||
|
|
||||||
|
pa_log_debug("Jack '%s' is now %s", pa_strnull(snd_hctl_elem_get_name(elem)), plugged_in ? "plugged in" : "unplugged");
|
||||||
|
|
||||||
|
+ tports = tp = pa_xnew0(struct temp_port_avail, pa_hashmap_size(u->jacks)+1);
|
||||||
|
+
|
||||||
|
PA_HASHMAP_FOREACH(jack, u->jacks, state)
|
||||||
|
if (jack->melem == melem) {
|
||||||
|
pa_alsa_jack_set_plugged_in(jack, plugged_in);
|
||||||
|
@@ -388,9 +394,22 @@ static int report_jack_state(snd_mixer_e
|
||||||
|
|
||||||
|
/* When not using UCM, we have to do the jack state -> port
|
||||||
|
* availability mapping ourselves. */
|
||||||
|
- pa_assert_se(port = jack->path->port);
|
||||||
|
- report_port_state(port, u);
|
||||||
|
+ pa_assert_se(tp->port = jack->path->port);
|
||||||
|
+ tp->avail = calc_port_state(tp->port, u);
|
||||||
|
+ tp++;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ /* Report available ports before unavailable ones: in case port 1 becomes available when port 2 becomes unavailable,
|
||||||
|
+ this prevents an unnecessary switch port 1 -> port 3 -> port 2 */
|
||||||
|
+
|
||||||
|
+ for (tp = tports; tp->port; tp++)
|
||||||
|
+ if (tp->avail != PA_AVAILABLE_NO)
|
||||||
|
+ pa_device_port_set_available(tp->port, tp->avail);
|
||||||
|
+ for (tp = tports; tp->port; tp++)
|
||||||
|
+ if (tp->avail == PA_AVAILABLE_NO)
|
||||||
|
+ pa_device_port_set_available(tp->port, tp->avail);
|
||||||
|
+
|
||||||
|
+ pa_xfree(tports);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Oct 20 14:44:13 CEST 2015 - tiwai@suse.de
|
||||||
|
|
||||||
|
- Fix another alsa-mixer path for dock line out jack (boo#948979):
|
||||||
|
0003-alsa-mixer-Add-Dock-Line-Out-jack-handling-to-analog.patch
|
||||||
|
- Fix the order of ports updates (boo#948979):
|
||||||
|
0004-module-alsa-card-Report-available-ports-before-unava.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat Oct 17 09:21:39 CEST 2015 - tiwai@suse.de
|
Sat Oct 17 09:21:39 CEST 2015 - tiwai@suse.de
|
||||||
|
|
||||||
|
@ -50,6 +50,10 @@ Patch3: disable-srbchannel.patch
|
|||||||
Patch4: pstream-Fix-use-after-free-in-srb_callback.patch
|
Patch4: pstream-Fix-use-after-free-in-srb_callback.patch
|
||||||
# PATCH-FIX-UPSTREAM 0002-alsa-mixer-Recognize-Dock-Line-Out-jack.patch boo#934850
|
# PATCH-FIX-UPSTREAM 0002-alsa-mixer-Recognize-Dock-Line-Out-jack.patch boo#934850
|
||||||
Patch102: 0002-alsa-mixer-Recognize-Dock-Line-Out-jack.patch
|
Patch102: 0002-alsa-mixer-Recognize-Dock-Line-Out-jack.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0003-alsa-mixer-Add-Dock-Line-Out-jack-handling-to-analog.patch boo#948979
|
||||||
|
Patch103: 0003-alsa-mixer-Add-Dock-Line-Out-jack-handling-to-analog.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0004-module-alsa-card-Report-available-ports-before-unava.patch boo#948979
|
||||||
|
Patch104: 0004-module-alsa-card-Report-available-ports-before-unava.patch
|
||||||
BuildRequires: alsa-devel >= 1.0.19
|
BuildRequires: alsa-devel >= 1.0.19
|
||||||
# require only minimal bluez, if we are on bluez 5 we will determine in build phase
|
# require only minimal bluez, if we are on bluez 5 we will determine in build phase
|
||||||
BuildRequires: bluez-devel >= 4.99
|
BuildRequires: bluez-devel >= 4.99
|
||||||
@ -334,6 +338,8 @@ Optional dependency offering zsh completion for various PulseAudio utilities
|
|||||||
%endif
|
%endif
|
||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch102 -p1
|
%patch102 -p1
|
||||||
|
%patch103 -p1
|
||||||
|
%patch104 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
echo 'HTML_TIMESTAMP=NO' >> doxygen/doxygen.conf.in
|
echo 'HTML_TIMESTAMP=NO' >> doxygen/doxygen.conf.in
|
||||||
|
Loading…
x
Reference in New Issue
Block a user