summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Olszak <olszak.tomasz@gmail.com>2019-01-23 12:24:05 +0100
committerTomasz Olszak <olszak.tomasz@gmail.com>2019-01-29 14:59:23 +0000
commit3c82c2e45c8395b78b3a98db2d9a5364b191edb9 (patch)
tree210896f7a902b855355c43e2db319e39e12dc409
parent488224dcbf84e49cc8dca3765210a0cd31d295ba (diff)
Make QPulseAudioOutput::elapsedUSecs prone to OS time change
Pulseaudio implementation of QAudioOutput used QTime as time counter. Hence when output was started and timezone or time has changed the QAudioOutput::elapsedUSecs() returned faulty values. It happened because QTime::elapsed is undefined after system clock update. Using QElapsedTimer instead of QTime seems safer. Change-Id: I1f0c27deea550f249e2ccad0fc716b95a32608ae Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
-rw-r--r--src/plugins/pulseaudio/qaudiooutput_pulse.cpp3
-rw-r--r--src/plugins/pulseaudio/qaudiooutput_pulse.h6
2 files changed, 4 insertions, 5 deletions
diff --git a/src/plugins/pulseaudio/qaudiooutput_pulse.cpp b/src/plugins/pulseaudio/qaudiooutput_pulse.cpp
index b4bd1c55c..19ddac1e5 100644
--- a/src/plugins/pulseaudio/qaudiooutput_pulse.cpp
+++ b/src/plugins/pulseaudio/qaudiooutput_pulse.cpp
@@ -496,8 +496,7 @@ void QPulseAudioOutput::userFeed()
if (m_notifyInterval && (m_timeStamp.elapsed() + m_elapsedTimeOffset) > m_notifyInterval) {
emit notify();
- m_elapsedTimeOffset = m_timeStamp.elapsed() + m_elapsedTimeOffset - m_notifyInterval;
- m_timeStamp.restart();
+ m_elapsedTimeOffset = m_timeStamp.restart() + m_elapsedTimeOffset - m_notifyInterval;
}
}
diff --git a/src/plugins/pulseaudio/qaudiooutput_pulse.h b/src/plugins/pulseaudio/qaudiooutput_pulse.h
index 58f175e18..40d052681 100644
--- a/src/plugins/pulseaudio/qaudiooutput_pulse.h
+++ b/src/plugins/pulseaudio/qaudiooutput_pulse.h
@@ -55,7 +55,7 @@
#include <QtCore/qtimer.h>
#include <QtCore/qstring.h>
#include <QtCore/qstringlist.h>
-#include <QtCore/qdatetime.h>
+#include <QtCore/qelapsedtimer.h>
#include <QtCore/qiodevice.h>
#include "qaudio.h"
@@ -131,11 +131,11 @@ private:
int m_periodSize;
int m_bufferSize;
int m_maxBufferSize;
- QTime m_clockStamp;
+ QElapsedTimer m_clockStamp;
qint64 m_totalTimeValue;
QTimer *m_tickTimer;
char *m_audioBuffer;
- QTime m_timeStamp;
+ QElapsedTimer m_timeStamp;
qint64 m_elapsedTimeOffset;
bool m_resuming;
QString m_category;