Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QSGSoftwareRenderThread Class Reference
+ Inheritance diagram for QSGSoftwareRenderThread:
+ Collaboration diagram for QSGSoftwareRenderThread:

Public Types

enum  UpdateRequest { SyncRequest = 0x01 , RepaintRequest = 0x02 , ExposeRequest = 0x04 | RepaintRequest | SyncRequest }
 
- Public Types inherited from QThread
enum  Priority {
  IdlePriority , LowestPriority , LowPriority , NormalPriority ,
  HighPriority , HighestPriority , TimeCriticalPriority , InheritPriority
}
 

Public Slots

void onSceneGraphChanged ()
 
- Public Slots inherited from QThread
void start (Priority=InheritPriority)
 
void terminate ()
 
void exit (int retcode=0)
 
void quit ()
 
- Public Slots inherited from QObject
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)
 
- Public Member Functions inherited from QThread
 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
 
QAbstractEventDispatchereventDispatcher () 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 isCurrentThread () 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.
 
- Public Member Functions inherited from QObject
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 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< QStringbindableObjectName ()
 
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).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
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::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, 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 (QAnyStringView 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 >
findChild (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.
 
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 QObjectListchildren () 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< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () 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

QSGSoftwareThreadedRenderLooprenderLoop
 
QSGSoftwareRenderContextrc
 
QAnimationDriverrtAnim = nullptr
 
volatile bool active = false
 
uint pendingUpdate = 0
 
bool sleeping = false
 
bool syncResultedInChanges = false
 
float vsyncDelta
 
QMutex mutex
 
QWaitCondition waitCondition
 
QQuickWindowexposedWindow = nullptr
 
QBackingStorebackingStore = nullptr
 
bool stopEventProcessing = false
 
QSGSoftwareEventQueue eventQueue
 
QElapsedTimer renderThrottleTimer
 
qint64 syncTime
 
qint64 renderTime
 
qint64 sinceLastTime
 

Additional Inherited Members

- Signals inherited from QThread
void started (QPrivateSignal)
 
void finished (QPrivateSignal)
 
- Signals inherited from QObject
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 Public Member Functions inherited from QThread
static Qt::HANDLE currentThreadId () noexcept Q_DECL_PURE_FUNCTION
 
static QThreadcurrentThread ()
 
static bool isMainThread ()
 
static int idealThreadCount () noexcept
 
static void yieldCurrentThread ()
 
template<typename Function , typename... Args>
static QThreadcreate (Function &&f, Args &&... args)
 
static void sleep (unsigned long)
 
static void msleep (unsigned long)
 
static void usleep (unsigned long)
 
static void sleep (std::chrono::nanoseconds nsec)
 
- Static Public Member Functions inherited from QObject
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)
 
- Protected Member Functions inherited from QThread
int exec ()
 
 QThread (QThreadPrivate &dd, QObject *parent=nullptr)
 
- Protected Member Functions inherited from QObject
QObjectsender () 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 Protected Member Functions inherited from QThread
static void setTerminationEnabled (bool enabled=true)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Detailed Description

Definition at line 121 of file qsgsoftwarethreadedrenderloop.cpp.

Member Enumeration Documentation

◆ UpdateRequest

Enumerator
SyncRequest 
RepaintRequest 
ExposeRequest 

Definition at line 155 of file qsgsoftwarethreadedrenderloop.cpp.

Constructor & Destructor Documentation

◆ QSGSoftwareRenderThread()

QSGSoftwareRenderThread::QSGSoftwareRenderThread ( QSGSoftwareThreadedRenderLoop * rl,
QSGRenderContext * renderContext )
inline

Definition at line 125 of file qsgsoftwarethreadedrenderloop.cpp.

References qsgrl_animation_interval(), rc, and vsyncDelta.

+ Here is the call graph for this function:

◆ ~QSGSoftwareRenderThread()

QSGSoftwareRenderThread::~QSGSoftwareRenderThread ( )
inline

Definition at line 132 of file qsgsoftwarethreadedrenderloop.cpp.

References rc.

Member Function Documentation

◆ event()

bool QSGSoftwareRenderThread::event ( QEvent * e)
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:

class MyClass : public QWidget
{
public:
MyClass(QWidget *parent = nullptr);
bool event(QEvent* ev) override
{
if (ev->type() == QEvent::PolishRequest) {
// overwrite handling of PolishRequest if any
doThings();
return true;
} else if (ev->type() == QEvent::Show) {
// complement handling of Show if any
doThings2();
return true;
}
// Make sure the rest of events are handled
return QWidget::event(ev);
}
};
See also
installEventFilter(), timerEvent(), QCoreApplication::sendEvent(), QCoreApplication::postEvent()

Reimplemented from QObject.

Definition at line 186 of file qsgsoftwarethreadedrenderloop.cpp.

References active, QQuickWindowPrivate::animationController, backingStore, QQuickWindowPrivate::cleanupNodesOnShutdown(), QEvent::DeferredDelete, QSGRenderContext::endSync(), QThread::event(), exposedWindow, ExposeRequest, QQuickWindowPrivate::get(), QBackingStore::handle(), QSGRenderContext::initialize(), QSGSoftwareRenderContext::invalidate(), QMutex::lock(), mutex, pendingUpdate, QCoreApplication::processEvents(), Q_ASSERT, qCDebug, rc, QQuickWindowPrivate::renderer, renderLoop, QQuickWindowPrivate::renderSceneGraph(), RepaintRequest, QScopedPointer< T, Cleanup >::reset(), QBackingStore::resize(), QCoreApplication::sendPostedEvents(), QSGSoftwareRenderer::setBackingStore(), QBackingStore::size(), sleeping, stopEventProcessing, SyncRequest, QQuickWindowPrivate::syncSceneGraph(), QPlatformBackingStore::toImage(), QEvent::type(), QMutex::unlock(), waitCondition, QWaitCondition::wakeOne(), window(), WM_Grab, WM_Obscure, WM_PostJob, WM_RequestSync, and WM_TryRelease.

+ Here is the call graph for this function:

◆ onSceneGraphChanged

void QSGSoftwareRenderThread::onSceneGraphChanged ( )
inlineslot

Definition at line 181 of file qsgsoftwarethreadedrenderloop.cpp.

References syncResultedInChanges.

Referenced by sync().

+ Here is the caller graph for this function:

◆ postEvent()

void QSGSoftwareRenderThread::postEvent ( QEvent * e)

Definition at line 309 of file qsgsoftwarethreadedrenderloop.cpp.

References QSGSoftwareEventQueue::addEvent(), and eventQueue.

+ Here is the call graph for this function:

◆ processEvents()

void QSGSoftwareRenderThread::processEvents ( )

Definition at line 314 of file qsgsoftwarethreadedrenderloop.cpp.

References eventQueue, QSGSoftwareEventQueue::hasMoreEvents(), and QSGSoftwareEventQueue::takeEvent().

Referenced by run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ processEventsAndWaitForMore()

void QSGSoftwareRenderThread::processEventsAndWaitForMore ( )

Definition at line 323 of file qsgsoftwarethreadedrenderloop.cpp.

References eventQueue, stopEventProcessing, and QSGSoftwareEventQueue::takeEvent().

Referenced by run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ requestRepaint()

void QSGSoftwareRenderThread::requestRepaint ( )
inline

◆ run()

void QSGSoftwareRenderThread::run ( void )
overridevirtual

◆ sync()

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().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ syncAndRender()

Member Data Documentation

◆ active

volatile bool QSGSoftwareRenderThread::active = false

Definition at line 164 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by event(), and run().

◆ backingStore

QBackingStore* QSGSoftwareRenderThread::backingStore = nullptr

Definition at line 172 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by event(), and syncAndRender().

◆ eventQueue

QSGSoftwareEventQueue QSGSoftwareRenderThread::eventQueue

◆ exposedWindow

QQuickWindow* QSGSoftwareRenderThread::exposedWindow = nullptr

Definition at line 171 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by event(), requestRepaint(), run(), sync(), and syncAndRender().

◆ mutex

QMutex QSGSoftwareRenderThread::mutex

Definition at line 169 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by event(), sync(), and syncAndRender().

◆ pendingUpdate

uint QSGSoftwareRenderThread::pendingUpdate = 0

Definition at line 165 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by event(), requestRepaint(), run(), and syncAndRender().

◆ rc

QSGSoftwareRenderContext* QSGSoftwareRenderThread::rc

◆ renderLoop

QSGSoftwareThreadedRenderLoop* QSGSoftwareRenderThread::renderLoop

Definition at line 161 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by event(), run(), and sync().

◆ renderThrottleTimer

QElapsedTimer QSGSoftwareRenderThread::renderThrottleTimer

Definition at line 175 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by run(), and syncAndRender().

◆ renderTime

qint64 QSGSoftwareRenderThread::renderTime

Definition at line 177 of file qsgsoftwarethreadedrenderloop.cpp.

◆ rtAnim

QAnimationDriver* QSGSoftwareRenderThread::rtAnim = nullptr

Definition at line 163 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by run(), and syncAndRender().

◆ sinceLastTime

qint64 QSGSoftwareRenderThread::sinceLastTime

Definition at line 178 of file qsgsoftwarethreadedrenderloop.cpp.

◆ sleeping

bool QSGSoftwareRenderThread::sleeping = false

Definition at line 166 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by event(), requestRepaint(), and run().

◆ stopEventProcessing

bool QSGSoftwareRenderThread::stopEventProcessing = false

◆ syncResultedInChanges

bool QSGSoftwareRenderThread::syncResultedInChanges = false

Definition at line 167 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by onSceneGraphChanged(), sync(), and syncAndRender().

◆ syncTime

qint64 QSGSoftwareRenderThread::syncTime

Definition at line 176 of file qsgsoftwarethreadedrenderloop.cpp.

◆ vsyncDelta

float QSGSoftwareRenderThread::vsyncDelta

Definition at line 168 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by QSGSoftwareRenderThread(), and syncAndRender().

◆ waitCondition

QWaitCondition QSGSoftwareRenderThread::waitCondition

Definition at line 170 of file qsgsoftwarethreadedrenderloop.cpp.

Referenced by event(), sync(), and syncAndRender().


The documentation for this class was generated from the following file: