From 4715ec52b17a220c48a380a2cd1619ad5fb069a7 Mon Sep 17 00:00:00 2001
From: Bill Somerville <bill@classdesign.com>
Date: Sat, 24 Aug 2013 20:51:24 +0100
Subject: [PATCH] Fix QAudioOutput::setVolume() limited 50% on 32-bit Windows

A signed 16 bit integer was being used to pack a normalised double into
half of a DWORD. It needed to be unsigned 16-bit to get the full range
of the Windows volume control.

Task-number: QTBUG-33160

Change-Id: Ic17f572a188401ee686c6e6af3984d52328ccda6
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
---
 src/multimedia/audio/qaudiooutput_win32_p.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp
index 4d13d4349..286cecba7 100644
--- a/src/multimedia/audio/qaudiooutput_win32_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp
@@ -702,7 +702,7 @@ void QAudioOutputPrivate::setVolume(qreal v)
         volumeCache = normalizedVolume;
         return;
     }
-    const qint16 scaled = normalizedVolume * 0xFFFF;
+    const quint16 scaled = normalizedVolume * 0xFFFF;
     DWORD vol = MAKELONG(scaled, scaled);
     MMRESULT res = waveOutSetVolume(hWaveOut, vol);
     if (res == MMSYSERR_NOERROR)
-- 
GitLab