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>
301 bool wasShutDown =
false;
304using QQmlTypeLoaderConfiguredDataPtr
306using QQmlTypeLoaderConfiguredDataConstPtr
309#if QT_CONFIG(qml_network)
310class QQmlEnginePublicAPIToken;
311template<
typename Data,
typename LockedData>
312class QQmlNetworkAccessManagerFactoryPtrBase
314 Q_DISABLE_COPY_MOVE(QQmlNetworkAccessManagerFactoryPtrBase)
316 Q_NODISCARD_CTOR QQmlNetworkAccessManagerFactoryPtrBase(LockedData *data) : data(data)
319 data->m_networkAccessManagerData.networkAccessManagerMutex.lock();
322 ~QQmlNetworkAccessManagerFactoryPtrBase()
325 data->m_networkAccessManagerData.networkAccessManagerMutex.unlock();
328 QQmlNetworkAccessManagerFactory &operator*()
const
330 return *data->m_networkAccessManagerData.networkAccessManagerFactory;
333 QQmlNetworkAccessManagerFactory *operator->()
const
335 return data->m_networkAccessManagerData.networkAccessManagerFactory;
338 operator
bool()
const
340 return data->m_networkAccessManagerData.networkAccessManagerFactory !=
nullptr;
345 QQmlNetworkAccessManagerFactory *get(
const QQmlEnginePublicAPIToken &)
const
347 return data->m_networkAccessManagerData.networkAccessManagerFactory;
351 LockedData *data =
nullptr;
357using QQmlNetworkAccessManagerFactoryPtrConst
358 = QQmlNetworkAccessManagerFactoryPtrBase<
const QQmlTypeLoaderNetworkAccessManagerData,
const QQmlTypeLoaderLockedData>;
360class QQmlNetworkAccessManagerFactoryPtr
361 :
public QQmlNetworkAccessManagerFactoryPtrBase<QQmlTypeLoaderNetworkAccessManagerData, QQmlTypeLoaderLockedData>
363 Q_DISABLE_COPY(QQmlNetworkAccessManagerFactoryPtr)
365 Q_NODISCARD_CTOR QQmlNetworkAccessManagerFactoryPtr(QQmlTypeLoaderLockedData *lockedData)
366 : QQmlNetworkAccessManagerFactoryPtrBase<QQmlTypeLoaderNetworkAccessManagerData, QQmlTypeLoaderLockedData>(lockedData)
370 void reset(QQmlNetworkAccessManagerFactory *factory)
372 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