![]() |
Qt 6.x
The Qt SDK
|
Public Types | |
enum | UpdateRequest { SyncRequest = 0x01 , RepaintRequest = 0x02 , ExposeRequest = 0x04 | RepaintRequest | SyncRequest } |
![]() | |
enum | Priority { IdlePriority , LowestPriority , LowPriority , NormalPriority , HighPriority , HighestPriority , TimeCriticalPriority , InheritPriority } |
Public Slots | |
void | onSceneGraphChanged () |
![]() | |
void | start (Priority=InheritPriority) |
void | terminate () |
void | exit (int retcode=0) |
void | quit () |
![]() | |
void | deleteLater () |
\threadsafe | |
Public Member Functions | |
QSGSoftwareRenderThread (QSGSoftwareThreadedRenderLoop *rl, QSGRenderContext *renderContext) | |
~QSGSoftwareRenderThread () | |
bool | event (QEvent *e) override |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
void | run () override |
void | syncAndRender () |
void | sync (bool inExpose) |
void | requestRepaint () |
void | processEventsAndWaitForMore () |
void | processEvents () |
void | postEvent (QEvent *e) |
![]() | |
QThread (QObject *parent=nullptr) | |
~QThread () | |
void | setPriority (Priority priority) |
Priority | priority () const |
bool | isFinished () const |
bool | isRunning () const |
void | requestInterruption () |
bool | isInterruptionRequested () const |
void | setStackSize (uint stackSize) |
uint | stackSize () const |
QAbstractEventDispatcher * | eventDispatcher () const |
void | setEventDispatcher (QAbstractEventDispatcher *eventDispatcher) |
bool | event (QEvent *event) override |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
int | loopLevel () const |
bool | wait (QDeadlineTimer deadline=QDeadlineTimer(QDeadlineTimer::Forever)) |
bool | wait (unsigned long time) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. time is the time to wait in milliseconds. | |
![]() | |
Q_INVOKABLE | QObject (QObject *parent=nullptr) |
Constructs an object with parent object parent. | |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. | |
virtual bool | event (QEvent *event) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
Filters events if this object has been installed as an event filter for the watched object. | |
QString | objectName () const |
Q_WEAK_OVERLOAD void | setObjectName (const QString &name) |
Sets the object's name to name. | |
void | setObjectName (QAnyStringView name) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
QBindable< QString > | bindableObjectName () |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false . | |
bool | isWindowType () const |
Returns true if the object is a window; otherwise returns false . | |
bool | isQuickItemType () const |
Returns true if the object is a QQuickItem; otherwise returns false . | |
bool | signalsBlocked () const noexcept |
Returns true if signals are blocked; otherwise returns false . | |
bool | blockSignals (bool b) noexcept |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). | |
QThread * | thread () const |
Returns the thread in which the object lives. | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. | |
int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds. | |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
template<typename T > | |
T | findChild (const QString &aName=QString(), Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object. | |
template<typename T > | |
QList< T > | findChildren (const QString &aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. | |
template<typename T > | |
QList< T > | findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
const QObjectList & | children () const |
Returns a list of child objects. | |
void | setParent (QObject *parent) |
Makes the object a child of parent. | |
void | installEventFilter (QObject *filterObj) |
Installs an event filter filterObj on this object. | |
void | removeEventFilter (QObject *obj) |
Removes an event filter object obj from this object. | |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const |
bool | disconnect (const QObject *receiver, const char *member=nullptr) const |
void | dumpObjectTree () const |
Dumps a tree of children to the debug output. | |
void | dumpObjectInfo () const |
Dumps information about signal connections, etc. | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. | |
bool | setProperty (const char *name, QVariant &&value) |
QVariant | property (const char *name) const |
Returns the value of the object's name property. | |
QList< QByteArray > | dynamicPropertyNames () const |
QBindingStorage * | bindingStorage () |
const QBindingStorage * | bindingStorage () const |
QObject * | parent () const |
Returns a pointer to the parent object. | |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false . | |
Public Attributes | |
QSGSoftwareThreadedRenderLoop * | renderLoop |
QSGSoftwareRenderContext * | rc |
QAnimationDriver * | rtAnim = nullptr |
volatile bool | active = false |
uint | pendingUpdate = 0 |
bool | sleeping = false |
bool | syncResultedInChanges = false |
float | vsyncDelta |
QMutex | mutex |
QWaitCondition | waitCondition |
QQuickWindow * | exposedWindow = nullptr |
QBackingStore * | backingStore = nullptr |
bool | stopEventProcessing = false |
QSGSoftwareEventQueue | eventQueue |
QElapsedTimer | renderThrottleTimer |
qint64 | syncTime |
qint64 | renderTime |
qint64 | sinceLastTime |
Additional Inherited Members | |
![]() | |
void | started (QPrivateSignal) |
void | finished (QPrivateSignal) |
![]() | |
void | destroyed (QObject *=nullptr) |
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked. | |
void | objectNameChanged (const QString &objectName, QPrivateSignal) |
This signal is emitted after the object's name has been changed. | |
![]() | |
static Qt::HANDLE | currentThreadId () noexcept Q_DECL_PURE_FUNCTION |
static QThread * | currentThread () |
static int | idealThreadCount () noexcept |
static void | yieldCurrentThread () |
static void | sleep (unsigned long) |
static void | msleep (unsigned long) |
static void | usleep (unsigned long) |
static void | sleep (std::chrono::nanoseconds nsec) |
![]() | |
static QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
\threadsafe | |
static QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
\threadsafe | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static bool | disconnect (const QMetaObject::Connection &) |
Disconnect a connection. | |
template<typename Func1 , typename Func2 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot) |
template<typename Func1 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero) |
![]() | |
virtual void | run () |
int | exec () |
QThread (QThreadPrivate &dd, QObject *parent=nullptr) | |
![]() | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr. | |
int | senderSignalIndex () const |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. | |
bool | isSignalConnected (const QMetaMethod &signal) const |
virtual void | timerEvent (QTimerEvent *event) |
This event handler can be reimplemented in a subclass to receive timer events for the object. | |
virtual void | childEvent (QChildEvent *event) |
This event handler can be reimplemented in a subclass to receive child events. | |
virtual void | customEvent (QEvent *event) |
This event handler can be reimplemented in a subclass to receive custom events. | |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
QObject (QObjectPrivate &dd, QObject *parent=nullptr) | |
![]() | |
static void | setTerminationEnabled (bool enabled=true) |
![]() | |
QScopedPointer< QObjectData > | d_ptr |
![]() | |
QString | objectName |
the name of this object | |
![]() | |
template< class T > T | qobject_cast (const QObject *object) |
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QObjectList | |
\macro Q_CLASSINFO(Name, Value) | |
Definition at line 121 of file qsgsoftwarethreadedrenderloop.cpp.
Enumerator | |
---|---|
SyncRequest | |
RepaintRequest | |
ExposeRequest |
Definition at line 155 of file qsgsoftwarethreadedrenderloop.cpp.
|
inline |
Definition at line 125 of file qsgsoftwarethreadedrenderloop.cpp.
References qsgrl_animation_interval(), rc, and vsyncDelta.
|
inline |
Definition at line 132 of file qsgsoftwarethreadedrenderloop.cpp.
References rc.
|
overridevirtual |
This virtual function receives events to an object and should return true if the event e was recognized and processed.
The event() function can be reimplemented to customize the behavior of an object.
Make sure you call the parent event class implementation for all the events you did not handle.
Example:
Reimplemented from QObject.
Definition at line 186 of file qsgsoftwarethreadedrenderloop.cpp.
References active, QQuickWindowPrivate::animationController, backingStore, QQuickWindowPrivate::cleanupNodesOnShutdown(), QEvent::DeferredDelete, QSGSoftwareTryReleaseEvent::destroying, e, QSGRenderContext::endSync(), QThread::event(), exposedWindow, ExposeRequest, QQuickWindowPrivate::fireAboutToStop(), QSGSoftwareSyncEvent::forceRenderPass, QQuickWindowPrivate::get(), QBackingStore::handle(), QSGSoftwareGrabEvent::image, QSGRenderContext::initialize(), QSGSoftwareRenderContext::invalidate(), QSGSoftwareJobEvent::job, QMutex::lock(), mutex, pendingUpdate, QCoreApplication::processEvents(), Q_ASSERT, qCDebug, rc, QQuickWindowPrivate::renderer, renderLoop, QQuickWindowPrivate::renderSceneGraph(), RepaintRequest, QScopedPointer< T, Cleanup >::reset(), QBackingStore::resize(), QRunnable::run(), QCoreApplication::sendPostedEvents(), QSGSoftwareRenderer::setBackingStore(), QBackingStore::size(), sleeping, stopEventProcessing, QSGSoftwareSyncEvent::syncInExpose, SyncRequest, QQuickWindowPrivate::syncSceneGraph(), QPlatformBackingStore::toImage(), QMutex::unlock(), waitCondition, QWaitCondition::wakeOne(), window(), QSGSoftwareWindowEvent::window, WM_Grab, WM_Obscure, WM_PostJob, WM_RequestSync, and WM_TryRelease.
|
inlineslot |
Definition at line 181 of file qsgsoftwarethreadedrenderloop.cpp.
References syncResultedInChanges.
Referenced by sync().
Definition at line 309 of file qsgsoftwarethreadedrenderloop.cpp.
References QSGSoftwareEventQueue::addEvent(), e, and eventQueue.
void QSGSoftwareRenderThread::processEvents | ( | ) |
Definition at line 314 of file qsgsoftwarethreadedrenderloop.cpp.
References e, eventQueue, QSGSoftwareEventQueue::hasMoreEvents(), and QSGSoftwareEventQueue::takeEvent().
Referenced by run().
void QSGSoftwareRenderThread::processEventsAndWaitForMore | ( | ) |
Definition at line 323 of file qsgsoftwarethreadedrenderloop.cpp.
References e, eventQueue, stopEventProcessing, and QSGSoftwareEventQueue::takeEvent().
Referenced by run().
|
inline |
Definition at line 143 of file qsgsoftwarethreadedrenderloop.cpp.
References exposedWindow, pendingUpdate, RepaintRequest, sleeping, and stopEventProcessing.
Reimplemented from QThread.
Definition at line 333 of file qsgsoftwarethreadedrenderloop.cpp.
References active, QSGContext::createAnimationDriver(), exposedWindow, QAnimationDriver::install(), QObject::moveToThread(), pendingUpdate, processEvents(), QCoreApplication::processEvents(), processEventsAndWaitForMore(), qCDebug, rc, QQuickProfiler::registerAnimationCallback(), renderLoop, renderThrottleTimer, rtAnim, QSGRenderContext::sceneGraphContext(), sleeping, QElapsedTimer::start(), syncAndRender(), and QObject::thread().
void QSGSoftwareRenderThread::sync | ( | bool | inExpose | ) |
Definition at line 369 of file qsgsoftwarethreadedrenderloop.cpp.
References QSGRenderer::clearChangedFlag(), QObject::connect(), QEvent::DeferredDelete, Qt::DirectConnection, QSGRenderContext::endSync(), exposedWindow, QQuickWindowPrivate::get(), QSGRenderContext::initialize(), QMutex::lock(), mutex, onSceneGraphChanged(), Q_ASSERT_X, qCDebug, rc, QQuickWindowPrivate::renderer, renderLoop, QSGAbstractRenderer::sceneGraphChanged(), QCoreApplication::sendPostedEvents(), syncResultedInChanges, QQuickWindowPrivate::syncSceneGraph(), QMutex::unlock(), waitCondition, and QWaitCondition::wakeOne().
Referenced by syncAndRender().
void QSGSoftwareRenderThread::syncAndRender | ( | ) |
Definition at line 408 of file qsgsoftwarethreadedrenderloop.cpp.
References QAnimationDriver::advance(), QQuickWindowPrivate::animationController, backingStore, QElapsedTimer::elapsed(), emit, exposedWindow, ExposeRequest, QQuickWindowPrivate::fireFrameSwapped(), QBackingStore::flush(), QQuickWindowPrivate::get(), QAnimationDriver::isRunning(), QQuickAnimatorController::lock(), QThread::msleep(), mutex, pendingUpdate, Q_QUICK_SG_PROFILE_END, Q_QUICK_SG_PROFILE_RECORD, Q_QUICK_SG_PROFILE_SKIP, Q_QUICK_SG_PROFILE_START, Q_TRACE, Q_TRACE_SCOPE, qCDebug, QQuickWindowPrivate::renderer, QQuickWindowPrivate::renderSceneGraph(), renderThrottleTimer, RepaintRequest, QElapsedTimer::restart(), rtAnim, QSGSoftwareRenderer::setBackingStore(), QElapsedTimer::start(), sync(), SyncRequest, syncResultedInChanges, QQuickAnimatorController::unlock(), QMutex::unlock(), vsyncDelta, waitCondition, and QWaitCondition::wakeOne().
Referenced by run().
volatile bool QSGSoftwareRenderThread::active = false |
Definition at line 164 of file qsgsoftwarethreadedrenderloop.cpp.
QBackingStore* QSGSoftwareRenderThread::backingStore = nullptr |
Definition at line 172 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by event(), and syncAndRender().
QSGSoftwareEventQueue QSGSoftwareRenderThread::eventQueue |
Definition at line 174 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by postEvent(), processEvents(), and processEventsAndWaitForMore().
QQuickWindow* QSGSoftwareRenderThread::exposedWindow = nullptr |
Definition at line 171 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by event(), requestRepaint(), run(), sync(), and syncAndRender().
QMutex QSGSoftwareRenderThread::mutex |
Definition at line 169 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by event(), sync(), and syncAndRender().
uint QSGSoftwareRenderThread::pendingUpdate = 0 |
Definition at line 165 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by event(), requestRepaint(), run(), and syncAndRender().
QSGSoftwareRenderContext* QSGSoftwareRenderThread::rc |
Definition at line 162 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by QSGSoftwareRenderThread(), ~QSGSoftwareRenderThread(), event(), run(), and sync().
QSGSoftwareThreadedRenderLoop* QSGSoftwareRenderThread::renderLoop |
Definition at line 161 of file qsgsoftwarethreadedrenderloop.cpp.
QElapsedTimer QSGSoftwareRenderThread::renderThrottleTimer |
Definition at line 175 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by run(), and syncAndRender().
qint64 QSGSoftwareRenderThread::renderTime |
Definition at line 177 of file qsgsoftwarethreadedrenderloop.cpp.
QAnimationDriver* QSGSoftwareRenderThread::rtAnim = nullptr |
Definition at line 163 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by run(), and syncAndRender().
qint64 QSGSoftwareRenderThread::sinceLastTime |
Definition at line 178 of file qsgsoftwarethreadedrenderloop.cpp.
bool QSGSoftwareRenderThread::sleeping = false |
Definition at line 166 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by event(), requestRepaint(), and run().
bool QSGSoftwareRenderThread::stopEventProcessing = false |
Definition at line 173 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by event(), processEventsAndWaitForMore(), and requestRepaint().
bool QSGSoftwareRenderThread::syncResultedInChanges = false |
Definition at line 167 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by onSceneGraphChanged(), sync(), and syncAndRender().
qint64 QSGSoftwareRenderThread::syncTime |
Definition at line 176 of file qsgsoftwarethreadedrenderloop.cpp.
float QSGSoftwareRenderThread::vsyncDelta |
Definition at line 168 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by QSGSoftwareRenderThread(), and syncAndRender().
QWaitCondition QSGSoftwareRenderThread::waitCondition |
Definition at line 170 of file qsgsoftwarethreadedrenderloop.cpp.
Referenced by event(), sync(), and syncAndRender().