summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Dyomin <artem.dyomin@qt.io>2023-07-31 21:45:10 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-08-01 11:26:12 +0000
commit845736f50a029a0220d68055fad2df5ec06383b0 (patch)
treeef056bf224f19cf0a3954933777e47fb4b2c92ca
parent5af58b7ee3e66155534f846922d7d3dbfdd5bffc (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.cpp19
-rw-r--r--src/plugins/multimedia/ffmpeg/playbackengine/qffmpegplaybackengineobject_p.h10
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;