Accepting request 1032885 from home:tiwai:branches:multimedia:libs
- Fix regression with Dell WD15 Dock and others (bsc#1204719): 0002-spa-support-the-speakers-output-only-case-in-report_.patch OBS-URL: https://build.opensuse.org/request/show/1032885 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=81
This commit is contained in:
parent
6652ea7d47
commit
4a28bad86c
@ -0,0 +1,73 @@
|
|||||||
|
From a2278a5f70fcc03ee72173c44896928d4c6b88d5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jaroslav Kysela <perex@perex.cz>
|
||||||
|
Date: Sat, 29 Oct 2022 20:22:06 +0200
|
||||||
|
Subject: [PATCH] spa: support the speakers (output) only case in
|
||||||
|
report_jack_state()
|
||||||
|
|
||||||
|
The Realtek ALC4080 USB audio device (integrated in the
|
||||||
|
motherboards) can detect the presence on all I/O jacks.
|
||||||
|
|
||||||
|
If user connects only speakers, it's a valid case.
|
||||||
|
|
||||||
|
BugLink: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2744
|
||||||
|
---
|
||||||
|
spa/plugins/alsa/acp/acp.c | 29 +++++++++++++++++++++++++++--
|
||||||
|
1 file changed, 27 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/spa/plugins/alsa/acp/acp.c b/spa/plugins/alsa/acp/acp.c
|
||||||
|
index f23232ed3ab9..c49c9e088e88 100644
|
||||||
|
--- a/spa/plugins/alsa/acp/acp.c
|
||||||
|
+++ b/spa/plugins/alsa/acp/acp.c
|
||||||
|
@@ -624,7 +624,7 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask)
|
||||||
|
pa_card *impl = snd_mixer_elem_get_callback_private(melem);
|
||||||
|
snd_hctl_elem_t *elem = snd_mixer_elem_get_private(melem);
|
||||||
|
snd_ctl_elem_value_t *elem_value;
|
||||||
|
- bool plugged_in;
|
||||||
|
+ bool plugged_in, any_input_port_available;
|
||||||
|
void *state;
|
||||||
|
pa_alsa_jack *jack;
|
||||||
|
struct temp_port_avail *tp, *tports;
|
||||||
|
@@ -735,6 +735,31 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask)
|
||||||
|
if (impl->card.active_profile_index != ACP_INVALID_INDEX)
|
||||||
|
active_available = impl->card.profiles[impl->card.active_profile_index]->available;
|
||||||
|
|
||||||
|
+ /* First round - detect, if we have any input port available.
|
||||||
|
+ If the hardware can report the state for all I/O jacks, only speakers
|
||||||
|
+ may be plugged in. */
|
||||||
|
+ any_input_port_available = false;
|
||||||
|
+ PA_HASHMAP_FOREACH(profile, impl->profiles, state) {
|
||||||
|
+ pa_device_port *port;
|
||||||
|
+ void *state2;
|
||||||
|
+
|
||||||
|
+ if (profile->profile.flags & ACP_PROFILE_OFF)
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ PA_HASHMAP_FOREACH(port, impl->ports, state2) {
|
||||||
|
+ if (!pa_hashmap_get(port->profiles, profile->profile.name))
|
||||||
|
+ continue;
|
||||||
|
+
|
||||||
|
+ if (port->port.direction == ACP_DIRECTION_CAPTURE &&
|
||||||
|
+ port->port.available != ACP_AVAILABLE_NO) {
|
||||||
|
+ any_input_port_available = true;
|
||||||
|
+ goto input_port_found;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+input_port_found:
|
||||||
|
+
|
||||||
|
+ /* Second round */
|
||||||
|
PA_HASHMAP_FOREACH(profile, impl->profiles, state) {
|
||||||
|
pa_device_port *port;
|
||||||
|
void *state2;
|
||||||
|
@@ -768,7 +793,7 @@ static int report_jack_state(snd_mixer_elem_t *melem, unsigned int mask)
|
||||||
|
|
||||||
|
if (has_input_port && !has_output_port && found_available_input_port)
|
||||||
|
available = ACP_AVAILABLE_YES;
|
||||||
|
- if (has_output_port && !has_input_port && found_available_output_port)
|
||||||
|
+ if (has_output_port && (!has_input_port || !any_input_port_available) && found_available_output_port)
|
||||||
|
available = ACP_AVAILABLE_YES;
|
||||||
|
if (has_output_port && has_input_port && found_available_output_port && found_available_input_port)
|
||||||
|
available = ACP_AVAILABLE_YES;
|
||||||
|
--
|
||||||
|
2.35.3
|
||||||
|
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Nov 2 12:48:20 UTC 2022 - Takashi Iwai <tiwai@suse.com>
|
||||||
|
|
||||||
|
- Fix regression with Dell WD15 Dock and others (bsc#1204719):
|
||||||
|
0002-spa-support-the-speakers-output-only-case-in-report_.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat Oct 8 20:46:58 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
|
Sat Oct 8 20:46:58 UTC 2022 - Alexei Sorokin <sor.alexei@meowr.ru>
|
||||||
|
|
||||||
|
@ -66,6 +66,8 @@ Source99: baselibs.conf
|
|||||||
Patch0: reduce-meson-dependency.patch
|
Patch0: reduce-meson-dependency.patch
|
||||||
# PATCH-FIX-UPSTREAM 0001-filter-chain-iterate-the-port-correctly.patch
|
# PATCH-FIX-UPSTREAM 0001-filter-chain-iterate-the-port-correctly.patch
|
||||||
Patch1: 0001-filter-chain-iterate-the-port-correctly.patch
|
Patch1: 0001-filter-chain-iterate-the-port-correctly.patch
|
||||||
|
# PATCH-FIX-UPSTREAM 0002-spa-support-the-speakers-output-only-case-in-report_.patch
|
||||||
|
Patch2: 0002-spa-support-the-speakers-output-only-case-in-report_.patch
|
||||||
BuildRequires: docutils
|
BuildRequires: docutils
|
||||||
BuildRequires: doxygen
|
BuildRequires: doxygen
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
@ -338,6 +340,7 @@ This package provides a PulseAudio implementation based on PipeWire
|
|||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%endif
|
%endif
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%if %{pkg_vcmp gcc < 8}
|
%if %{pkg_vcmp gcc < 8}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user