Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qffmpegplaybackengineobject.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
5
7
8namespace QFFmpeg {
9
10static std::atomic<PlaybackEngineObject::Id> PersistentId = 0;
11
13
15{
16 return m_paused;
17}
18
20{
21 if (m_atEnd.exchange(isAtEnd) != isAtEnd)
22 emit atEnd();
23}
24
26{
27 return m_atEnd;
28}
29
31{
32 return m_id;
33}
34
36{
37 if (m_paused.exchange(isPaused) != isPaused)
39}
40
42{
43 m_deleting = true;
44 setPaused(true);
45
46 disconnect();
48}
49
51{
52 return !m_paused;
53}
54
56{
57 if (!m_timer) {
58 m_timer = new QTimer(this);
60 m_timer->setSingleShot(true);
61 connect(m_timer, &QTimer::timeout, this, [this]() {
62 if (!m_deleting && canDoNextStep())
63 doNextStep();
64 });
65 }
66
67 return *m_timer;
68}
69
71{
72 return 0;
73}
74
76{
78}
79
80void PlaybackEngineObject::scheduleNextStep(bool allowDoImmediatelly)
81{
82 if (!m_deleting && canDoNextStep()) {
83 const auto interval = timerInterval();
84 if (interval == 0 && allowDoImmediatelly) {
85 timer().stop();
86 doNextStep();
87 } else {
88 timer().start(interval);
89 }
90 } else {
91 timer().stop();
92 }
93}
94} // namespace QFFmpeg
95
97
98#include "moc_qffmpegplaybackengineobject_p.cpp"
void scheduleNextStep(bool allowDoImmediatelly=true)
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2823
void deleteLater()
\threadsafe
Definition qobject.cpp:2352
\inmodule QtCore
Definition qtimer.h:20
void setSingleShot(bool singleShot)
Definition qtimer.cpp:580
void start(int msec)
Starts or restarts the timer with a timeout interval of msec milliseconds.
Definition qtimer.cpp:208
void stop()
Stops the timer.
Definition qtimer.cpp:226
void timeout(QPrivateSignal)
This signal is emitted when the timer times out.
void setTimerType(Qt::TimerType atype)
Definition qtimer.cpp:661
static std::atomic< PlaybackEngineObject::Id > PersistentId
Combined button and popup list for selecting options.
@ PreciseTimer
#define emit
myObject disconnect()
[26]
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(nullptr), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
\threadsafe This is an overloaded member function, provided for convenience. It differs from the abov...