diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-07-31 21:45:10 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-08-01 11:26:12 +0000 |
commit | 845736f50a029a0220d68055fad2df5ec06383b0 (patch) | |
tree | ef056bf224f19cf0a3954933777e47fb4b2c92ca | |
parent | 5af58b7ee3e66155534f846922d7d3dbfdd5bffc (diff) |
Minor cleanup in PlaybackEngineObject
* QTimer fwd declaration
* std::unique_ptr<QTimer> instead of raw ptr
* timeout slot instead of lambda
* add warning, for checking on CI
Change-Id: Ib5954c5f0d58341d82dccd76cbf2856303077987
Reviewed-by: Pavel Dubsky <pavel.dubsky@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit f98e3a2acc3a31b67b7ca1ba4041ae276bfbe741)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject.cpp | 19 | ||||
-rw-r--r-- | src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject_p.h | 10 |
2 files changed, 25 insertions, 4 deletions
diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject.cpp b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject.cpp index 8237fc573..cb3f36303 100644 --- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject.cpp +++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject.cpp @@ -3,6 +3,9 @@ #include "playbackengine/qffmpegplaybackengineobject_p.h" +#include "qtimer.h" +#include "qdebug.h" + QT_BEGIN_NAMESPACE namespace QFFmpeg { @@ -11,6 +14,12 @@ static std::atomic<PlaybackEngineObject::Id> PersistentId = 0; PlaybackEngineObject::PlaybackEngineObject() : m_id(++PersistentId) { } +PlaybackEngineObject::~PlaybackEngineObject() +{ + if (thread() != QThread::currentThread()) + qWarning() << "The playback engine object is being removed in an unexpected thread"; +} + bool PlaybackEngineObject::isPaused() const { return m_paused; @@ -55,10 +64,10 @@ bool PlaybackEngineObject::canDoNextStep() const QTimer &PlaybackEngineObject::timer() { if (!m_timer) { - m_timer = new QTimer(this); + m_timer = std::make_unique<QTimer>(); m_timer->setTimerType(Qt::PreciseTimer); m_timer->setSingleShot(true); - connect(m_timer, &QTimer::timeout, this, [this]() { + connect(m_timer.get(), &QTimer::timeout, this, [this]() { if (!m_deleting && canDoNextStep()) doNextStep(); }); @@ -67,6 +76,12 @@ QTimer &PlaybackEngineObject::timer() return *m_timer; } +void PlaybackEngineObject::onTimeout() +{ + if (!m_deleting && canDoNextStep()) + doNextStep(); +} + int PlaybackEngineObject::timerInterval() const { return 0; diff --git a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject_p.h b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject_p.h index 410713b9e..409d18c43 100644 --- a/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject_p.h +++ b/src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject_p.h @@ -16,12 +16,13 @@ #include "playbackengine/qffmpegplaybackenginedefs_p.h" #include "qthread.h" -#include "qtimer.h" #include <atomic> QT_BEGIN_NAMESPACE +class QTimer; + namespace QFFmpeg { class PlaybackEngineObject : public QObject @@ -34,6 +35,8 @@ public: PlaybackEngineObject(); + ~PlaybackEngineObject(); + bool isPaused() const; bool isAtEnd() const; @@ -64,8 +67,11 @@ protected: virtual void doNextStep() { } +private slots: + void onTimeout(); + private: - QTimer *m_timer = nullptr; + std::unique_ptr<QTimer> m_timer; std::atomic_bool m_paused = true; std::atomic_bool m_atEnd = false; |