From 7325fe29f8e1537d3f7e3e83fd839d5859745d64feaceac56b99536fe9e7f452 Mon Sep 17 00:00:00 2001 From: Antonio Larrosa Date: Mon, 29 May 2023 10:24:48 +0000 Subject: [PATCH] Accepting request 1088088 from home:XRevan86 OBS-URL: https://build.opensuse.org/request/show/1088088 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=133 --- ...ize-and-samplerate-when-skipping-not.patch | 50 +++++++++++++++++++ pipewire.changes | 11 ++++ pipewire.spec | 32 +++++++++--- 3 files changed, 87 insertions(+), 6 deletions(-) create mode 100644 0001-jack-update-bufsize-and-samplerate-when-skipping-not.patch diff --git a/0001-jack-update-bufsize-and-samplerate-when-skipping-not.patch b/0001-jack-update-bufsize-and-samplerate-when-skipping-not.patch new file mode 100644 index 0000000..aef8442 --- /dev/null +++ b/0001-jack-update-bufsize-and-samplerate-when-skipping-not.patch @@ -0,0 +1,50 @@ +From 1b823f1bc3363c496758a9230c9f5d4ce4491815 Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Thu, 18 May 2023 09:59:26 +0200 +Subject: [PATCH] jack: update bufsize and samplerate when skipping notify + +When we skip the notify because we are not active or we don't have a +callback, still update the buffer_size and sample_rate fields or else +we will keep on trying forever. + +Fixes #3226 +--- + pipewire-jack/src/pipewire-jack.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/pipewire-jack/src/pipewire-jack.c b/pipewire-jack/src/pipewire-jack.c +index ee82425a9..ed21ccf76 100644 +--- a/pipewire-jack/src/pipewire-jack.c ++++ b/pipewire-jack/src/pipewire-jack.c +@@ -1027,8 +1027,6 @@ static int queue_notify(struct client *c, int type, struct object *o, int arg1, + struct notify *notify; + bool emit = false;; + +- if ((type & NOTIFY_ACTIVE_FLAG) && !c->active) +- return 0; + switch (type) { + case NOTIFY_TYPE_REGISTRATION: + emit = c->registration_callback != NULL && o != NULL; +@@ -1060,8 +1058,18 @@ static int queue_notify(struct client *c, int type, struct object *o, int arg1, + default: + break; + } ++ if ((type & NOTIFY_ACTIVE_FLAG) && !c->active) ++ emit = false; + if (!emit) { +- pw_log_debug("%p: skip notify %d", c, type); ++ switch (type) { ++ case NOTIFY_TYPE_BUFFER_FRAMES: ++ c->buffer_frames = arg1; ++ break; ++ case NOTIFY_TYPE_SAMPLE_RATE: ++ c->sample_rate = arg1; ++ break; ++ } ++ pw_log_debug("%p: skip notify %08x active:%d", c, type, c->active); + if (o != NULL && arg1 == 0 && o->removing) { + o->removing = false; + free_object(c, o); +-- +2.40.1 + diff --git a/pipewire.changes b/pipewire.changes index b12e05c..6ed0649 100644 --- a/pipewire.changes +++ b/pipewire.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Fri May 19 17:26:12 UTC 2023 - Alexei Sorokin + +- Add patch from upstream to fix JACK buffersize updates: + * 0001-jack-update-bufsize-and-samplerate-when-skipping-not.patch +- Create a pipewire-jack package that provides jack-daemon (and + conflicts with any other) and requires the pipewire-libjack + library. + Move the ld configuration from pipewire-libjack, so that only + pipewire-jack forces PipeWire to be the default JACK. + ------------------------------------------------------------------- Wed May 17 15:18:10 UTC 2023 - Antonio Larrosa diff --git a/pipewire.spec b/pipewire.spec index 79bf545..30d50c2 100644 --- a/pipewire.spec +++ b/pipewire.spec @@ -70,6 +70,8 @@ Source0: %{name}-%{version}.tar.xz Source99: baselibs.conf # PATCH-FIX-OPENSUSE reduce-meson-dependency.patch Patch0: reduce-meson-dependency.patch +# PATCH-FIX-UPSTREAM 0001-jack-update-bufsize-and-samplerate-when-skipping-not.patch +Patch1: 0001-jack-update-bufsize-and-samplerate-when-skipping-not.patch BuildRequires: docutils BuildRequires: doxygen BuildRequires: fdupes @@ -147,7 +149,6 @@ Requires: %{name}-spa-tools = %{version} Requires: %{name}-tools = %{version} Requires: rtkit Suggests: wireplumber -Suggests: pipewire-libjack-%{apiver_str} %{?systemd_ordering} %description @@ -186,7 +187,6 @@ Summary: PipeWire libjack replacement libraries Group: Development/Libraries/C and C++ Requires(post): update-alternatives Requires(postun):update-alternatives -Conflicts: jack Conflicts: libjack0 Conflicts: libjacknet0 Conflicts: libjackserver0 @@ -344,18 +344,32 @@ Requires: %{name} >= %{version}-%{release} Requires: pulseaudio-utils Recommends: pipewire-alsa Conflicts: pulseaudio -Conflicts: pulseaudio-daemon # Virtual Provides to support swapping between PipeWire-PA and PA +Conflicts: pulseaudio-daemon Provides: pulseaudio-daemon %if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400 Requires(post): pulseaudio-setup %endif #Provides: pulseaudio-module-bluetooth -#Provides: pulseaudio-module-jack %description pulseaudio This package provides a PulseAudio implementation based on PipeWire +%package jack +Summary: PipeWire JACK implementation +Group: Development/Libraries/C and C++ +Requires: %{libpipewire} >= %{version}-%{release} +Requires: %{name} >= %{version}-%{release} +Requires: pipewire-libjack-%{apiver_str} +Recommends: jack-dbus +# Virtual Provides to support swapping between PipeWire-JACK and JACKd +Conflicts: jack-daemon +Provides: jack-daemon +#Provides: pulseaudio-module-jack + +%description jack +This package provides a JACK implementation based on PipeWire + %lang_package %prep @@ -363,6 +377,7 @@ This package provides a PulseAudio implementation based on PipeWire %if %{?pkg_vcmp:%{pkg_vcmp meson <= 0.61.0}} %patch0 -p1 %endif +%patch1 -p1 %build %if %{pkg_vcmp gcc < 8} @@ -537,6 +552,9 @@ setup-pulseaudio --auto > /dev/null %postun pulseaudio %systemd_user_postun pipewire-pulse.service pipewire-pulse.socket +%post jack -p /sbin/ldconfig +%postun jack -p /sbin/ldconfig + %post -n %{libpipewire} -p /sbin/ldconfig %postun -n %{libpipewire} -p /sbin/ldconfig @@ -643,8 +661,6 @@ fi %{_bindir}/pw-jack %{_mandir}/man1/pw-jack-%{apiver}.1%{?ext_man} %{_mandir}/man1/pw-jack.1%{?ext_man} -%{_datadir}/pipewire/jack.conf -%config %{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf %files libjack-%{apiver_str}-devel %{_libdir}/pipewire-%{apiver}/jack/libjack.so @@ -728,6 +744,10 @@ fi %config(noreplace) %{_sysconfdir}/alsa/conf.d/50-pipewire.conf %config(noreplace) %{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf +%files jack +%config %{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf +%{_datadir}/pipewire/jack.conf + %files lang -f %{name}.lang %changelog