diff --git a/tests/auto/qaudiooutput/tst_qaudiooutput.cpp b/tests/auto/qaudiooutput/tst_qaudiooutput.cpp index 7aa6eff..3f1ebe9 100755 --- a/tests/auto/qaudiooutput/tst_qaudiooutput.cpp +++ b/tests/auto/qaudiooutput/tst_qaudiooutput.cpp @@ -479,6 +479,10 @@ void tst_QAudioOutput::pull() audioOutput.start(audioFiles.at(i)); +#ifdef Q_OS_SYMBIAN + //In Symbian the state transition is asynchronous, so give it a bit of time + QTest::qWait(100); +#endif // Check that QAudioOutput immediately transitions to ActiveState QVERIFY2((stateSignal.count() == 1), QString("didn't emit signal on start(), got %1 signals instead").arg(stateSignal.count()).toLocal8Bit().constData()); @@ -540,6 +544,10 @@ void tst_QAudioOutput::pullSuspendResume() audioOutput.start(audioFiles.at(i)); +#ifdef Q_OS_SYMBIAN + //In Symbian the state transition is asynchronous, so give it a bit of time + QTest::qWait(100); +#endif // Check that QAudioOutput immediately transitions to ActiveState QVERIFY2((stateSignal.count() == 1), QString("didn't emit signal on start(), got %1 signals instead").arg(stateSignal.count()).toLocal8Bit().constData()); @@ -629,6 +637,10 @@ void tst_QAudioOutput::push() QIODevice* feed = audioOutput.start(); +#ifdef Q_OS_SYMBIAN + //In Symbian the state transition is asynchronous, so give it a bit of time + QTest::qWait(100); +#endif // Check that QAudioOutput immediately transitions to IdleState QVERIFY2((stateSignal.count() == 1), QString("didn't emit signal on start(), got %1 signals instead").arg(stateSignal.count()).toLocal8Bit().constData()); @@ -644,13 +656,12 @@ void tst_QAudioOutput::push() qint64 written = 0; bool firstBuffer = true; - char buffer[AUDIO_BUFFER]; + QScopedPointer buffer(new char[AUDIO_BUFFER]); while (written < audioFiles.at(i)->size()-WavHeader::headerLength()) { - - if (audioOutput.bytesFree() > audioOutput.periodSize()) { - qint64 len = audioFiles.at(i)->read(buffer,audioOutput.periodSize()); - written += feed->write(buffer, len); + if (audioOutput.bytesFree() >= audioOutput.periodSize()) { + qint64 len = audioFiles.at(i)->read(buffer.data(),audioOutput.periodSize()); + written += feed->write(buffer.data(), len); if (firstBuffer) { // Check for transition to ActiveState when data is provided @@ -715,6 +726,10 @@ void tst_QAudioOutput::pushSuspendResume() QIODevice* feed = audioOutput.start(); +#ifdef Q_OS_SYMBIAN + //In Symbian the state transition is asynchronous, so give it a bit of time + QTest::qWait(100); +#endif // Check that QAudioOutput immediately transitions to IdleState QVERIFY2((stateSignal.count() == 1), QString("didn't emit signal on start(), got %1 signals instead").arg(stateSignal.count()).toLocal8Bit().constData()); @@ -730,14 +745,14 @@ void tst_QAudioOutput::pushSuspendResume() qint64 written = 0; bool firstBuffer = true; - char buffer[AUDIO_BUFFER]; + QScopedPointer buffer(new char[AUDIO_BUFFER]); // Play half of the clip while (written < (audioFiles.at(i)->size()-WavHeader::headerLength())/2) { - if (audioOutput.bytesFree() > audioOutput.periodSize()) { - qint64 len = audioFiles.at(i)->read(buffer,audioOutput.periodSize()); - written += feed->write(buffer, len); + if (audioOutput.bytesFree() >= audioOutput.periodSize()) { + qint64 len = audioFiles.at(i)->read(buffer.data(),audioOutput.periodSize()); + written += feed->write(buffer.data(), len); if (firstBuffer) { // Check for transition to ActiveState when data is provided @@ -787,8 +802,8 @@ void tst_QAudioOutput::pushSuspendResume() // Play rest of the clip while (!audioFiles.at(i)->atEnd()) { if (audioOutput.bytesFree() >= audioOutput.periodSize()) { - qint64 len = audioFiles.at(i)->read(buffer,audioOutput.periodSize()); - written += feed->write(buffer, len); + qint64 len = audioFiles.at(i)->read(buffer.data(),audioOutput.periodSize()); + written += feed->write(buffer.data(), len); } else QTest::qWait(20); } @@ -841,6 +856,10 @@ void tst_QAudioOutput::pushUnderrun() QIODevice* feed = audioOutput.start(); +#ifdef Q_OS_SYMBIAN + //In Symbian the state transition is asynchronous, so give it a bit of time + QTest::qWait(100); +#endif // Check that QAudioOutput immediately transitions to IdleState QVERIFY2((stateSignal.count() == 1), QString("didn't emit signal on start(), got %1 signals instead").arg(stateSignal.count()).toLocal8Bit().constData()); @@ -856,14 +875,14 @@ void tst_QAudioOutput::pushUnderrun() qint64 written = 0; bool firstBuffer = true; - char buffer[AUDIO_BUFFER]; + QScopedPointer buffer(new char[AUDIO_BUFFER]); // Play half of the clip while (written < (audioFiles.at(i)->size()-WavHeader::headerLength())/2) { - if (audioOutput.bytesFree() > audioOutput.periodSize()) { - qint64 len = audioFiles.at(i)->read(buffer,audioOutput.periodSize()); - written += feed->write(buffer, len); + if (audioOutput.bytesFree() >= audioOutput.periodSize()) { + qint64 len = audioFiles.at(i)->read(buffer.data(),audioOutput.periodSize()); + written += feed->write(buffer.data(), len); if (firstBuffer) { // Check for transition to ActiveState when data is provided @@ -893,8 +912,8 @@ void tst_QAudioOutput::pushUnderrun() // Play rest of the clip while (!audioFiles.at(i)->atEnd()) { if (audioOutput.bytesFree() >= audioOutput.periodSize()) { - qint64 len = audioFiles.at(i)->read(buffer,audioOutput.periodSize()); - written += feed->write(buffer, len); + qint64 len = audioFiles.at(i)->read(buffer.data(),audioOutput.periodSize()); + written += feed->write(buffer.data(), len); if (firstBuffer) { // Check for transition to ActiveState when data is provided QVERIFY2((stateSignal.count() == 1),