From 206b52833f87c088cd84143a38657a683e4e00d4 Mon Sep 17 00:00:00 2001 From: Oleg Dubinskiy Date: Thu, 10 Jul 2025 11:41:48 +0200 Subject: [PATCH] [MMIXER] HACK: Decrease SteppingDelta for each volume value by 1 This workarounds broken changing volume level for left and right volume controls separately ("Speakers Volume" button in "Sound" tab of mmsys.cpl). CORE-19190 --- sdk/lib/drivers/sound/mmixer/controls.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sdk/lib/drivers/sound/mmixer/controls.c b/sdk/lib/drivers/sound/mmixer/controls.c index a7521bf4dd3..f7d548d83dd 100644 --- a/sdk/lib/drivers/sound/mmixer/controls.c +++ b/sdk/lib/drivers/sound/mmixer/controls.c @@ -190,7 +190,7 @@ MMixerAddMixerControl( DPRINT("NodeIndex %u Range Min %d Max %d Steps %x UMin %x UMax %x\n", NodeIndex, Range->Bounds.SignedMinimum, Range->Bounds.SignedMaximum, Range->SteppingDelta, Range->Bounds.UnsignedMinimum, Range->Bounds.UnsignedMaximum); - MaxRange = Range->Bounds.UnsignedMaximum - Range->Bounds.UnsignedMinimum; + MaxRange = Range->Bounds.UnsignedMaximum - Range->Bounds.UnsignedMinimum; if (MaxRange) { @@ -218,10 +218,11 @@ MMixerAddMixerControl( } Value = Range->Bounds.SignedMinimum; - for(Index = 0; Index < Steps; Index++) + for (Index = 0; Index < Steps; Index++) { VolumeData->Values[Index] = Value; - Value += Range->SteppingDelta; + // HACK: use '- 1' to make the left and right volume controls behave independently. + Value += Range->SteppingDelta - 1; } MixerControl->ExtraData = VolumeData; }