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
QQmlAbstractProfilerAdapter Class Referenceabstract

#include <qqmlabstractprofileradapter_p.h>

+ Inheritance diagram for QQmlAbstractProfilerAdapter:
+ Collaboration diagram for QQmlAbstractProfilerAdapter:

Signals

void profilingEnabled (quint64 features)
 
void profilingEnabledWhileWaiting (quint64 features)
 
void profilingDisabled ()
 
void profilingDisabledWhileWaiting ()
 
void dataRequested ()
 
void referenceTimeKnown (const QElapsedTimer &timer)
 
- 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.
 

Public Member Functions

 QQmlAbstractProfilerAdapter (QObject *parent=nullptr)
 
 ~QQmlAbstractProfilerAdapter () override
 
void setService (QQmlProfilerService *new_service)
 
virtual qint64 sendMessages (qint64 until, QList< QByteArray > &messages)=0
 
void startProfiling (quint64 features)
 
void stopProfiling ()
 
void reportData ()
 
void stopWaiting ()
 
void startWaiting ()
 
bool isRunning () const
 
quint64 features () const
 
void synchronize (const QElapsedTimer &t)
 
- 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 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< 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.
 

Static Public Attributes

static const int s_numMessagesPerBatch = 1000
 

Protected Attributes

QQmlProfilerServiceservice
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 

Additional Inherited Members

- Public Types inherited from QQmlProfilerDefinitions
enum  Message {
  Event , RangeStart , RangeData , RangeLocation ,
  RangeEnd , Complete , PixmapCacheEvent , SceneGraphFrame ,
  MemoryAllocation , DebugMessage , Quick3DFrame , MaximumMessage
}
 
enum  EventType {
  FramePaint , Mouse , Key , AnimationFrame ,
  EndTrace , StartTrace , MaximumEventType
}
 
enum  RangeType {
  Painting , Compiling , Creating , Binding ,
  HandlingSignal , Javascript , MaximumRangeType
}
 
enum  PixmapEventType {
  PixmapSizeKnown , PixmapReferenceCountChanged , PixmapCacheCountChanged , PixmapLoadingStarted ,
  PixmapLoadingFinished , PixmapLoadingError , MaximumPixmapEventType
}
 
enum  SceneGraphFrameType {
  SceneGraphRendererFrame , SceneGraphAdaptationLayerFrame , SceneGraphContextFrame , SceneGraphRenderLoopFrame ,
  SceneGraphTexturePrepare , SceneGraphTextureDeletion , SceneGraphPolishAndSync , SceneGraphWindowsRenderShow ,
  SceneGraphWindowsAnimations , SceneGraphPolishFrame , MaximumSceneGraphFrameType , NumRenderThreadFrameTypes = SceneGraphPolishAndSync ,
  NumGUIThreadFrameTypes = MaximumSceneGraphFrameType - NumRenderThreadFrameTypes
}
 
enum  Quick3DFrameType {
  Quick3DRenderFrame , Quick3DSynchronizeFrame , Quick3DPrepareFrame , Quick3DMeshLoad ,
  Quick3DCustomMeshLoad , Quick3DTextureLoad , Quick3DGenerateShader , Quick3DLoadShader ,
  Quick3DParticleUpdate , Quick3DRenderCall , Quick3DRenderPass , Quick3DEventData ,
  MaximumQuick3DFrameType
}
 
enum  ProfileFeature {
  ProfileJavaScript , ProfileMemory , ProfilePixmapCache , ProfileSceneGraph ,
  ProfileAnimations , ProfilePainting , ProfileCompiling , ProfileCreating ,
  ProfileBinding , ProfileHandlingSignal , ProfileInputEvents , ProfileDebugMessages ,
  ProfileQuick3D , MaximumProfileFeature
}
 
enum  InputEventType {
  InputKeyPress , InputKeyRelease , InputKeyUnknown , InputMousePress ,
  InputMouseRelease , InputMouseMove , InputMouseDoubleClick , InputMouseWheel ,
  InputMouseUnknown , MaximumInputEventType
}
 
- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 
- 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 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)
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Detailed Description

\inmodule QtQml Abstract base class for all adapters between profilers and the QQmlProfilerService. Adapters have to retrieve profiler-specific data and convert it to the format sent over the wire. Adapters must live in the QDebugServer thread but the actual profilers can live in different threads. The recommended way to deal with this is passing the profiling data through a signal/slot connection.

Definition at line 29 of file qqmlabstractprofileradapter_p.h.

Constructor & Destructor Documentation

◆ QQmlAbstractProfilerAdapter()

QQmlAbstractProfilerAdapter::QQmlAbstractProfilerAdapter ( QObject * parent = nullptr)
inline

Definition at line 35 of file qqmlabstractprofileradapter_p.h.

◆ ~QQmlAbstractProfilerAdapter()

QQmlAbstractProfilerAdapter::~QQmlAbstractProfilerAdapter ( )
inlineoverride

Definition at line 37 of file qqmlabstractprofileradapter_p.h.

Member Function Documentation

◆ dataRequested

void QQmlAbstractProfilerAdapter::dataRequested ( )
signal

Signals that data has been requested by the QQmlProfilerService. This signal should be connected to a slot in the profiler and the profiler should then transfer its currently available profiling data to the adapter as soon as possible.

Referenced by QQuick3DProfilerAdapter::QQuick3DProfilerAdapter(), QQuickProfilerAdapter::QQuickProfilerAdapter(), and QV4ProfilerAdapter::QV4ProfilerAdapter().

+ Here is the caller graph for this function:

◆ features()

quint64 QQmlAbstractProfilerAdapter::features ( ) const
inline

Definition at line 52 of file qqmlabstractprofileradapter_p.h.

Referenced by startProfiling().

+ Here is the caller graph for this function:

◆ isRunning()

bool QQmlAbstractProfilerAdapter::isRunning ( ) const
inline

Returns if the profiler is currently running. The profiler is considered to be running after startProfiling(quint64) has been called until stopProfiling() is called. That is independent of waiting. The profiler may be running and waiting at the same time.

Definition at line 51 of file qqmlabstractprofileradapter_p.h.

Referenced by QQmlProfilerServiceImpl::engineAboutToBeRemoved(), QQmlProfilerServiceImpl::startProfiling(), and QQmlProfilerServiceImpl::stopProfiling().

+ Here is the caller graph for this function:

◆ profilingDisabled

void QQmlAbstractProfilerAdapter::profilingDisabled ( )
signal

This signal is emitted if stopProfiling() is called while the profiler is not considered to be waiting. The profiler is expected to handle the signal asynchronously.

Referenced by QQuick3DProfilerAdapter::QQuick3DProfilerAdapter(), QQuickProfilerAdapter::QQuickProfilerAdapter(), QV4ProfilerAdapter::QV4ProfilerAdapter(), and stopProfiling().

+ Here is the caller graph for this function:

◆ profilingDisabledWhileWaiting

void QQmlAbstractProfilerAdapter::profilingDisabledWhileWaiting ( )
signal

This signal is emitted if stopProfiling() is called while the profiler is considered to be waiting. In many cases this signal can be connected with a Qt::DirectConnection.

Referenced by QQuick3DProfilerAdapter::QQuick3DProfilerAdapter(), QQuickProfilerAdapter::QQuickProfilerAdapter(), QV4ProfilerAdapter::QV4ProfilerAdapter(), and stopProfiling().

+ Here is the caller graph for this function:

◆ profilingEnabled

void QQmlAbstractProfilerAdapter::profilingEnabled ( quint64 features)
signal

This signal is emitted if startProfiling(quint64) is called while the profiler is not considered to be waiting. The profiler is expected to handle the signal asynchronously. The features are passed on from startProfiling(quint64).

Referenced by QQuick3DProfilerAdapter::QQuick3DProfilerAdapter(), QQuickProfilerAdapter::QQuickProfilerAdapter(), QV4ProfilerAdapter::QV4ProfilerAdapter(), and startProfiling().

+ Here is the caller graph for this function:

◆ profilingEnabledWhileWaiting

void QQmlAbstractProfilerAdapter::profilingEnabledWhileWaiting ( quint64 features)
signal

This signal is emitted if startProfiling(quint64) is called while the profiler is considered to be waiting. In many cases this signal can be connected with a Qt::DirectConnection. By starting the profiler synchronously when the QML engine starts instead of waiting for the first iteration of the event loop the engine startup can be profiled. The features are passed on from startProfiling(quint64).

Referenced by QQuick3DProfilerAdapter::QQuick3DProfilerAdapter(), QQuickProfilerAdapter::QQuickProfilerAdapter(), QV4ProfilerAdapter::QV4ProfilerAdapter(), and startProfiling().

+ Here is the caller graph for this function:

◆ referenceTimeKnown

void QQmlAbstractProfilerAdapter::referenceTimeKnown ( const QElapsedTimer & timer)
signal

This signal is used to synchronize the profiler's timer to the QQmlProfilerservice's. The profiler is expected to save timer and use it for timestamps on its data.

Referenced by QQuick3DProfilerAdapter::QQuick3DProfilerAdapter(), QQuickProfilerAdapter::QQuickProfilerAdapter(), and QV4ProfilerAdapter::QV4ProfilerAdapter().

+ Here is the caller graph for this function:

◆ reportData()

void QQmlAbstractProfilerAdapter::reportData ( )
inline

Make the profiler report its current data without stopping the collection. The same (and additional) data can later be requested again with stopProfiling() or reportData().

Definition at line 46 of file qqmlabstractprofileradapter_p.h.

References Q_EMIT.

Referenced by QQmlProfilerServiceImpl::stopProfiling().

+ Here is the caller graph for this function:

◆ sendMessages()

qint64 QQmlAbstractProfilerAdapter::sendMessages ( qint64 until,
QList< QByteArray > & messages )
pure virtual

Append the messages up to the timestamp until, chronologically sorted, to messages. Keep track of the messages already sent and with each subsequent call to this method start with the first one not yet sent. Messages that have been sent can be deleted. When new data from the profiler arrives the information about the last sent message must be reset. Return the timestamp of the next message after until or -1 if there is no such message. The profiler service keeps a list of adapters, sorted by time of next message and keeps querying the first one to send messages up to the time of the second one. Like that we get chronologically sorted messages and can occasionally post the messages to exploit parallelism and save memory.

Implemented in QQmlProfilerAdapter, QV4ProfilerAdapter, QQuickProfilerAdapter, and QQuick3DProfilerAdapter.

◆ setService()

void QQmlAbstractProfilerAdapter::setService ( QQmlProfilerService * new_service)
inline

Definition at line 38 of file qqmlabstractprofileradapter_p.h.

Referenced by QV4ProfilerAdapter::QV4ProfilerAdapter().

+ Here is the caller graph for this function:

◆ startProfiling()

void QQmlAbstractProfilerAdapter::startProfiling ( quint64 features)

Emits either profilingEnabled(quint64) or profilingEnabledWhileWaiting(quint64), depending on waiting. If the profiler's thread is waiting for an initial start signal, we can emit the signal over a Qt::DirectConnection to avoid the delay of the event loop. The features are passed on to the signal.

Definition at line 46 of file qqmlabstractprofileradapter.cpp.

References emit, features(), profilingEnabled(), and profilingEnabledWhileWaiting().

Referenced by QQmlProfilerServiceImpl::addGlobalProfiler(), and QQmlProfilerServiceImpl::startProfiling().

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

◆ startWaiting()

void QQmlAbstractProfilerAdapter::startWaiting ( )
inline

Consider the profiler to be waiting from now on. While the profiler is waiting it can be directly accessed even if it is in a different thread. This method should only be called if it is actually safe to do so.

Definition at line 49 of file qqmlabstractprofileradapter_p.h.

Referenced by QQmlProfilerServiceImpl::engineAboutToBeRemoved().

+ Here is the caller graph for this function:

◆ stopProfiling()

void QQmlAbstractProfilerAdapter::stopProfiling ( )

Emits either profilingDisabled() or profilingDisabledWhileWaiting(), depending on waiting. If the profiler's thread is waiting for an initial start signal, we can emit the signal over a Qt::DirectConnection to avoid the delay of the event loop. This should trigger the profiler to report its collected data and subsequently delete it.

Definition at line 62 of file qqmlabstractprofileradapter.cpp.

References emit, profilingDisabled(), and profilingDisabledWhileWaiting().

Referenced by QQmlProfilerServiceImpl::stopProfiling().

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

◆ stopWaiting()

void QQmlAbstractProfilerAdapter::stopWaiting ( )
inline

Consider the profiler not to be waiting anymore. If it lives in a different threads any requests for it have to be done via a queued connection then.

Definition at line 48 of file qqmlabstractprofileradapter_p.h.

◆ synchronize()

void QQmlAbstractProfilerAdapter::synchronize ( const QElapsedTimer & timer)
inline

Synchronize the profiler to timer. This emits referenceTimeKnown().

Definition at line 54 of file qqmlabstractprofileradapter_p.h.

References Q_EMIT.

Referenced by QQmlProfilerServiceImpl::addGlobalProfiler().

+ Here is the caller graph for this function:

Member Data Documentation

◆ s_numMessagesPerBatch

const int QQmlAbstractProfilerAdapter::s_numMessagesPerBatch = 1000
static

◆ service


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