From 3cd75b1ed8bde1b0fac48d5b350936b14cdb834a Mon Sep 17 00:00:00 2001 From: ItsLemmy Date: Tue, 14 Oct 2025 10:37:56 -0400 Subject: [PATCH] AudioCard: fixed jitter when using sliders --- Modules/Bar/Widgets/MediaMini.qml | 1 - Modules/ControlCenter/Cards/AudioCard.qml | 38 ++++++++++++++--------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/Modules/Bar/Widgets/MediaMini.qml b/Modules/Bar/Widgets/MediaMini.qml index 44b61f3d..922316f4 100644 --- a/Modules/Bar/Widgets/MediaMini.qml +++ b/Modules/Bar/Widgets/MediaMini.qml @@ -29,7 +29,6 @@ Item { return {} } - readonly property bool isVerticalBar: (Settings.data.bar.position === "left" || Settings.data.bar.position === "right") readonly property string hideMode: (widgetSettings.hideMode !== undefined) ? widgetSettings.hideMode : "hidden" // "visible", "hidden", "transparent" diff --git a/Modules/ControlCenter/Cards/AudioCard.qml b/Modules/ControlCenter/Cards/AudioCard.qml index b9989624..f54e8be0 100644 --- a/Modules/ControlCenter/Cards/AudioCard.qml +++ b/Modules/ControlCenter/Cards/AudioCard.qml @@ -9,10 +9,13 @@ import qs.Widgets NBox { id: root - property real localOutputVolume: AudioService.volume - property real localInputVolume: AudioService.inputVolume + property real localOutputVolume: AudioService.volume || 0 + property bool localOutputVolumeChanging: false - // Timer to debounce volume changes (similar to AudioTab) + property real localInputVolume: AudioService.inputVolume || 0 + property bool localInputVolumeChanging: false + + // Timer to debounce volume changes Timer { interval: 100 running: true @@ -21,6 +24,9 @@ NBox { if (Math.abs(localOutputVolume - AudioService.volume) >= 0.01) { AudioService.setVolume(localOutputVolume) } + if (Math.abs(localInputVolume - AudioService.inputVolume) >= 0.01) { + AudioService.setInputVolume(localInputVolume) + } } } @@ -28,14 +34,14 @@ NBox { Connections { target: AudioService.sink?.audio ? AudioService.sink?.audio : null function onVolumeChanged() { - localOutputVolume = AudioService.volume + if (!localOutputVolumeChanging) { + localOutputVolume = AudioService.volume + } } - } - - Connections { - target: AudioService.source?.audio ? AudioService.source?.audio : null - function onVolumeChanged() { - localInputVolume = AudioService.inputVolume + function onInputVolumeChanged() { + if (!localInputVolumeChanging) { + localInputVolume = AudioService.inputVolume + } } } @@ -85,11 +91,12 @@ NBox { Layout.fillWidth: true from: 0 to: Settings.data.audio.volumeOverdrive ? 1.5 : 1.0 - value: localOutputVolume || 0 + value: localOutputVolume stepSize: 0.01 heightRatio: 0.5 onMoved: localOutputVolume = value - tooltipText: `${Math.round((AudioService.volume || 0) * 100)}%` + onPressedChanged: localOutputVolumeChanging = pressed + tooltipText: `${Math.round(localOutputVolume * 100)}%` tooltipDirection: "bottom" } } @@ -131,11 +138,12 @@ NBox { Layout.fillWidth: true from: 0 to: Settings.data.audio.volumeOverdrive ? 1.5 : 1.0 - value: AudioService.inputVolume || 0 + value: localInputVolume stepSize: 0.01 heightRatio: 0.5 - onMoved: AudioService.setInputVolume(value) - tooltipText: `${Math.round((AudioService.inputVolume || 0) * 100)}%` + onMoved: localInputVolume = value + onPressedChanged: localInputVolumeChanging = pressed + tooltipText: `${Math.round(localInputVolume * 100)}%` tooltipDirection: "bottom" } }