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 f4a5bcba3..392c503dc 100644 --- a/app/src/main/java/com/droiddeck/launcher/audio/PulseAudioComponent.java +++ b/app/src/main/java/com/droiddeck/launcher/audio/PulseAudioComponent.java @@ -138,6 +138,16 @@ public class PulseAudioComponent extends SessionPart { // AAudio sink in its place. 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 + // 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"); + } config.add("set-default-sink DirectAudio"); config.add(".fail"); if (micFifoPath != null && !micFifoPath.isEmpty()) { diff --git a/app/src/main/java/com/droiddeck/launcher/core/DeviceReport.kt b/app/src/main/java/com/droiddeck/launcher/core/DeviceReport.kt index 69dffcd4c..a61f99305 100644 --- a/app/src/main/java/com/droiddeck/launcher/core/DeviceReport.kt +++ b/app/src/main/java/com/droiddeck/launcher/core/DeviceReport.kt @@ -61,6 +61,7 @@ object DeviceReport { runCatching { val info = context.packageManager.getPackageInfo(context.packageName, 0) k("Version", "${info.versionName} (${info.longVersionCode})") + k("App build", "${com.droiddeck.launcher.BuildConfig.BUILD_LABEL} (source ${com.droiddeck.launcher.BuildConfig.SOURCE_COMMIT})") } k("Package", context.packageName) k("targetSdk", context.applicationInfo.targetSdkVersion) diff --git a/app/src/main/java/com/droiddeck/launcher/session/GraphicsReport.kt b/app/src/main/java/com/droiddeck/launcher/session/GraphicsReport.kt index b193b3c39..a0042b72e 100644 --- a/app/src/main/java/com/droiddeck/launcher/session/GraphicsReport.kt +++ b/app/src/main/java/com/droiddeck/launcher/session/GraphicsReport.kt @@ -50,6 +50,7 @@ object GraphicsReport { private fun start(context: Context, guest: List): String = buildString { val time = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US).format(Date()) appendLine("== graphics report, session start $time") + appendLine("build: ${com.droiddeck.launcher.BuildConfig.BUILD_LABEL} (source ${com.droiddeck.launcher.BuildConfig.SOURCE_COMMIT})") appendLine() val gpu = runCatching { GpuInfo.detect() }.getOrNull() appendLine("-- path")