summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2014-06-12 18:57:54 +0200
committerYoann Lopes <yoann.lopes@digia.com>2014-07-08 13:49:56 +0200
commit382d4c873a53e02f7b7c1b30218aef5c9b6175cb (patch)
tree5003f53d120f3abe81a7d231ea177c3be4440ece /examples
parenta63da4b5935bcb1e1fbba6f3156e7dfa60c90782 (diff)
Fix AudioOutput example when no audio devices are available.
Don't try to generate audio data with an invalid QAudioFormat, which can happen when no audio devices are available. Change-Id: I4de82dbf64def55fee21cf63ef99888a8084bd95 Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/multimedia/audiooutput/audiooutput.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/examples/multimedia/audiooutput/audiooutput.cpp b/examples/multimedia/audiooutput/audiooutput.cpp
index fdb640dc2..daa7bfdf6 100644
--- a/examples/multimedia/audiooutput/audiooutput.cpp
+++ b/examples/multimedia/audiooutput/audiooutput.cpp
@@ -66,7 +66,8 @@ Generator::Generator(const QAudioFormat &format,
: QIODevice(parent)
, m_pos(0)
{
- generateData(format, durationUs, sampleRate);
+ if (format.isValid())
+ generateData(format, durationUs, sampleRate);
}
Generator::~Generator()
@@ -133,11 +134,13 @@ void Generator::generateData(const QAudioFormat &format, qint64 durationUs, int
qint64 Generator::readData(char *data, qint64 len)
{
qint64 total = 0;
- while (len - total > 0) {
- const qint64 chunk = qMin((m_buffer.size() - m_pos), len - total);
- memcpy(data + total, m_buffer.constData() + m_pos, chunk);
- m_pos = (m_pos + chunk) % m_buffer.size();
- total += chunk;
+ if (!m_buffer.isEmpty()) {
+ while (len - total > 0) {
+ const qint64 chunk = qMin((m_buffer.size() - m_pos), len - total);
+ memcpy(data + total, m_buffer.constData() + m_pos, chunk);
+ m_pos = (m_pos + chunk) % m_buffer.size();
+ total += chunk;
+ }
}
return total;
}