From 13e712c849908e00fb343bc2da64f302981bc8fe Mon Sep 17 00:00:00 2001 From: The412Banner Date: Mon, 12 Oct 2026 21:52:19 -0400 Subject: [PATCH] Non-Adreno sound: no second DirectAudio load (it hung the daemon); the plain AAudio sink underneath On the S24 FE the daemon stopped after DirectAudio's failed low-latency load: the second DirectAudio load in the same daemon never returned, so nothing after it ran and pactl never connected. The daemon now loads only the plain AAudio sink (no low latency) after DirectAudio, inside .nofail, and sets whichever exists as the default. --- .../droiddeck/launcher/audio/PulseAudioComponent.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/droiddeck/launcher/audio/PulseAudioComponent.java b/app/src/main/java/com/droiddeck/launcher/audio/PulseAudioComponent.java index 392c503dc..754080b27 100644 --- a/app/src/main/java/com/droiddeck/launcher/audio/PulseAudioComponent.java +++ b/app/src/main/java/com/droiddeck/launcher/audio/PulseAudioComponent.java @@ -139,12 +139,12 @@ public class PulseAudioComponent extends SessionPart { config.add(".nofail"); config.add("load-module module-directaudio-native-sink sink_name=DirectAudio performance_mode=1 adaptive=1 decay=0 limiter=1 watchdog=1 volume=1.0"); if (!com.droiddeck.launcher.core.DeviceSupport.INSTANCE.adreno()) { - // Not an Adreno: the daemon makes its own fallbacks, without waiting for pactl. A - // Galaxy S24 FE's AAudio refuses the low-latency stream (AAUDIO_ERROR_DISCONNECTED) at - // open, so DirectAudio is asked again without low latency (shared, larger buffer), - // and the plain AAudio sink is loaded as a default underneath it. The last + // Not an Adreno: the daemon makes its own fallback, without waiting for pactl. A Galaxy + // S24 FE's AAudio refuses DirectAudio's low-latency stream (AAUDIO_ERROR_DISCONNECTED), + // so the plain AAudio sink, without low latency, is loaded as a default underneath it. + // (Loading DirectAudio a second time in the same daemon after its failed first load + // hung the daemon's start-up on that phone, so it is not retried here.) The last // set-default-sink that names a sink which exists wins. - config.add("load-module module-directaudio-native-sink sink_name=DirectAudio performance_mode=0 adaptive=1 decay=0 limiter=1 watchdog=1 volume=1.0"); config.add("load-module module-aaudio-sink sink_name=AAudioSink performance_mode=0 adaptive=1 volume=1.0"); config.add("set-default-sink AAudioSink"); }