diff options
author | Tomasz Olszak <olszak.tomasz@gmail.com> | 2019-01-23 12:24:05 +0100 |
---|---|---|
committer | Tomasz Olszak <olszak.tomasz@gmail.com> | 2019-01-29 14:59:23 +0000 |
commit | 3c82c2e45c8395b78b3a98db2d9a5364b191edb9 (patch) | |
tree | 210896f7a902b855355c43e2db319e39e12dc409 /src | |
parent | 488224dcbf84e49cc8dca3765210a0cd31d295ba (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/pulseaudio/qaudiooutput_pulse.cpp | 3 | ||||
-rw-r--r-- | src/plugins/pulseaudio/qaudiooutput_pulse.h | 6 |
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; |