5#ifndef QQMLTYPELOADERDATA_P_H
6#define QQMLTYPELOADERDATA_P_H
19#include <private/qqmlrefcount_p.h>
20#include <private/qqmltypeloaderqmldircontent_p.h>
21#include <private/qqmltypeloaderthread_p.h>
22#include <private/qv4engine_p.h>
24#include <QtQml/qtqmlglobal.h>
25#include <QtQml/qqmlengine.h>
27#include <QtCore/qcache.h>
28#include <QtCore/qthread.h>
91#if QT_CONFIG(qml_network)
109#if QT_CONFIG(qml_debug)
119#if QT_CONFIG(qml_network)
120class QQmlTypeLoaderNetworkAccessManagerData
122 Q_DISABLE_COPY_MOVE(QQmlTypeLoaderNetworkAccessManagerData)
124 QQmlTypeLoaderNetworkAccessManagerData() =
default;
126 QQmlNetworkAccessManagerFactory *networkAccessManagerFactory =
nullptr;
131 mutable QMutex networkAccessManagerMutex;
137 template<
typename Data,
typename LockedData>
140 template<
typename Data,
typename LockedData>
143 template<
typename Data,
typename LockedData>
146 template<
typename Data,
typename LockedData>
148 friend class QQmlNetworkAccessManagerFactoryPtr;
158 Q_ASSERT(isCurrentJsEngineThread());
159 m_thread =
new QQmlTypeLoaderThread(loader);
165 Q_ASSERT(isCurrentJsEngineThread());
171 m_thread->shutdown();
172 delete std::exchange(m_thread,
nullptr);
177 Q_ASSERT(isCurrentJsEngineThread());
182 bool isCurrentJsEngineThread()
const
184 if (QJSEngine *jsEngine = m_engine->jsEngine())
185 return jsEngine->thread()->isCurrentThread();
195#if QT_CONFIG(qml_network)
199 QV4::ExecutionEngine *m_engine =
nullptr;
200 QQmlTypeLoaderThread *m_thread =
nullptr;
203template<
typename Data,
typename LockedData>
234using QQmlTypeLoaderSharedDataConstPtr
237template<
typename Data,
typename LockedData>
258using QQmlTypeLoaderThreadDataPtr
260using QQmlTypeLoaderThreadDataConstPtr
264template<
typename Data,
typename LockedData>
289using QQmlTypeLoaderConfiguredDataPtr
291using QQmlTypeLoaderConfiguredDataConstPtr
294#if QT_CONFIG(qml_network)
295class QQmlEnginePublicAPIToken;
296template<
typename Data,
typename LockedData>
297class QQmlNetworkAccessManagerFactoryPtrBase
299 Q_DISABLE_COPY_MOVE(QQmlNetworkAccessManagerFactoryPtrBase)
301 Q_NODISCARD_CTOR QQmlNetworkAccessManagerFactoryPtrBase(LockedData *data) : data(data)
304 data->m_networkAccessManagerData.networkAccessManagerMutex.lock();
307 ~QQmlNetworkAccessManagerFactoryPtrBase()
310 data->m_networkAccessManagerData.networkAccessManagerMutex.unlock();
313 QQmlNetworkAccessManagerFactory &operator*()
const
315 return *data->m_networkAccessManagerData.networkAccessManagerFactory;
318 QQmlNetworkAccessManagerFactory *operator->()
const
320 return data->m_networkAccessManagerData.networkAccessManagerFactory;
323 operator
bool()
const
325 return data->m_networkAccessManagerData.networkAccessManagerFactory !=
nullptr;
330 QQmlNetworkAccessManagerFactory *get(
const QQmlEnginePublicAPIToken &)
const
332 return data->m_networkAccessManagerData.networkAccessManagerFactory;
336 LockedData *data =
nullptr;
342using QQmlNetworkAccessManagerFactoryPtrConst
343 = QQmlNetworkAccessManagerFactoryPtrBase<
const QQmlTypeLoaderNetworkAccessManagerData,
const QQmlTypeLoaderLockedData>;
345class QQmlNetworkAccessManagerFactoryPtr
346 :
public QQmlNetworkAccessManagerFactoryPtrBase<QQmlTypeLoaderNetworkAccessManagerData, QQmlTypeLoaderLockedData>
348 Q_DISABLE_COPY(QQmlNetworkAccessManagerFactoryPtr)
350 Q_NODISCARD_CTOR QQmlNetworkAccessManagerFactoryPtr(QQmlTypeLoaderLockedData *lockedData)
351 : QQmlNetworkAccessManagerFactoryPtrBase<QQmlTypeLoaderNetworkAccessManagerData, QQmlTypeLoaderLockedData>(lockedData)
355 void reset(QQmlNetworkAccessManagerFactory *factory)
357 data->m_networkAccessManagerData.networkAccessManagerFactory = factory;
friend class QQmlNetworkAccessManagerFactoryPtrBase
friend class QQmlTypeLoaderThreadDataPtrBase
friend class QQmlTypeLoaderConfiguredDataPtrBase
QQmlTypeLoaderThread * thread() const
void createThread(QQmlTypeLoader *loader)
QV4::ExecutionEngine * engine() const
ImportDirCache importDirCache
QQmlTypeLoaderSharedData()=default
int typeCacheTrimThreshold
ImportQmlDirCache importQmlDirCache
QSet< QString > modulesForWhichPluginsHaveBeenProcessed
QSet< QString > initializedPlugins
QQmlTypeLoaderThreadData()=default
QStringHash< QmldirInfo * > qmldirInfo
ChecksumCache checksumCache
Combined button and popup list for selecting options.
QQmlTypeLoaderSharedDataPtrBase< QQmlTypeLoaderSharedData, QQmlTypeLoaderLockedData > QQmlTypeLoaderSharedDataPtr