diff options
Diffstat (limited to 'src/quicktestutils/qml')
| -rw-r--r-- | src/quicktestutils/qml/qmlutils.cpp | 29 | ||||
| -rw-r--r-- | src/quicktestutils/qml/qmlutils_p.h | 16 |
2 files changed, 45 insertions, 0 deletions
diff --git a/src/quicktestutils/qml/qmlutils.cpp b/src/quicktestutils/qml/qmlutils.cpp index 05d94b68ae..6cc54af356 100644 --- a/src/quicktestutils/qml/qmlutils.cpp +++ b/src/quicktestutils/qml/qmlutils.cpp @@ -7,6 +7,7 @@ #include <QtCore/QMutexLocker> #include <QtQml/QQmlComponent> #include <QtQml/QQmlEngine> +#include <private/qqmlengine_p.h> QT_BEGIN_NAMESPACE @@ -109,6 +110,34 @@ QQmlTestMessageHandler::~QQmlTestMessageHandler() QQmlTestMessageHandler::m_instance = nullptr; } + +bool gcDone(const QV4::ExecutionEngine *engine) { + // always true as long as the gc is non-incremental + Q_UNUSED(engine); + return true; +} + +void gc(QV4::ExecutionEngine &engine, GCFlags flags) +{ + engine.memoryManager->runGC(); + if (int(GCFlags::DontSendPostedEvents) & int(flags)) + return; + QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete); + QCoreApplication::processEvents(); +} + +bool gcDone(QQmlEngine *engine) { + auto priv = QQmlEnginePrivate::get(engine); + return gcDone(priv->v4engine()); +} + +void gc(QQmlEngine &engine, GCFlags flags) +{ + auto priv = QQmlEnginePrivate::get(&engine); + gc(*priv->v4engine(), flags); +} + + QT_END_NAMESPACE #include "moc_qmlutils_p.cpp" diff --git a/src/quicktestutils/qml/qmlutils_p.h b/src/quicktestutils/qml/qmlutils_p.h index 47825a3793..b94742edb9 100644 --- a/src/quicktestutils/qml/qmlutils_p.h +++ b/src/quicktestutils/qml/qmlutils_p.h @@ -106,6 +106,22 @@ private: bool m_includeCategories; }; +class QQmlEngine; + +namespace QV4 { +struct ExecutionEngine; +} + +enum class GCFlags { + None = 0, + DontSendPostedEvents = 1 +}; + +bool gcDone(const QV4::ExecutionEngine *engine); +void gc(QV4::ExecutionEngine &engine, GCFlags flags = GCFlags::None); +bool gcDone(QQmlEngine *engine); +void gc(QQmlEngine &engine, GCFlags flags = GCFlags::None); + QT_END_NAMESPACE #endif // QQMLTESTUTILS_P_H |
