summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2010-09-22 05:41:34 (GMT)
committerAndrew den Exter <andrew.den-exter@nokia.com>2010-09-22 08:03:38 (GMT)
commit5b7d75a57e0ec8ee78f843ab0eb6485b8e3b4a22 (patch)
tree7a474601e5daa4cc6cfb823c0af870f6bd7eb155 /src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp
parent2836c2806e3bdfb6d29d99f74f1b15950fa39e35 (diff)
downloadQt-5b7d75a57e0ec8ee78f843ab0eb6485b8e3b4a22.zip
Qt-5b7d75a57e0ec8ee78f843ab0eb6485b8e3b4a22.tar.gz
Qt-5b7d75a57e0ec8ee78f843ab0eb6485b8e3b4a22.tar.bz2
Verify the audio format before trying to open an audio device.
This was causing a crash on windows because the buffer and period sizes were worked out to 0 with an invalid sample size and dividing one by the other is division by 0. Task-number: QTMOBILITY-438 Reviewed-by: Justin McPherson
Diffstat (limited to 'src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp')
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp
index ecd03e5..1909009 100644
--- a/src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp
+++ b/src/multimedia/audio/qaudiodeviceinfo_mac_p.cpp
@@ -78,7 +78,13 @@ QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray const& handle, QAu
bool QAudioDeviceInfoInternal::isFormatSupported(const QAudioFormat& format) const
{
- return format.codec() == QString::fromLatin1("audio/pcm");
+ QAudioDeviceInfoInternal *self = const_cast<QAudioDeviceInfoInternal*>(this);
+
+ return format.isValid()
+ && format.codec() == QString::fromLatin1("audio/pcm")
+ && self->supportedSampleRates().contains(format.sampleRate())
+ && self->supportedChannelCounts().contains(format.channelCount())
+ && self->supportedSampleSizes().contains(format.sampleSize());
}
QAudioFormat QAudioDeviceInfoInternal::preferredFormat() const