diff options
Diffstat (limited to 'src/declarative/qml/qdeclarativeengine_p.h')
-rw-r--r-- | src/declarative/qml/qdeclarativeengine_p.h | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h index 0a3fe5d130..c690ac7bff 100644 --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@ -67,6 +67,7 @@ #include "private/qdeclarativeproperty_p.h" #include "private/qdeclarativepropertycache_p.h" #include "private/qdeclarativeobjectscriptclass_p.h" +#include "private/qdeclarativescarceresourcescriptclass_p.h" #include "private/qdeclarativecontextscriptclass_p.h" #include "private/qdeclarativevaluetypescriptclass_p.h" #include "private/qdeclarativemetatype_p.h" @@ -93,6 +94,8 @@ class QDeclarativeExpression; class QDeclarativeContextScriptClass; class QDeclarativeImportDatabase; class QDeclarativeObjectScriptClass; +class QDeclarativeScarceResourceScriptClass; +class ScarceResourceData; class QDeclarativeTypeNameScriptClass; class QDeclarativeValueTypeScriptClass; class QNetworkReply; @@ -109,6 +112,8 @@ class QDeclarativeDelayedError; class QDeclarativeWorkerScriptEngine; class QDeclarativeGlobalScriptClass; class QDir; +class QSGTexture; +class QSGContext; class QDeclarativeScriptEngine : public QScriptEngine { @@ -168,6 +173,7 @@ public: QDeclarativeContextData *sharedContext; QObject *sharedScope; QDeclarativeObjectScriptClass *objectClass; + QDeclarativeScarceResourceScriptClass *scarceResourceClass; QDeclarativeValueTypeScriptClass *valueTypeClass; QDeclarativeTypeNameScriptClass *typeNameClass; QDeclarativeListScriptClass *listClass; @@ -232,9 +238,22 @@ public: QHash<QString,QSharedPointer<QDeclarativeImageProvider> > imageProviders; QDeclarativeImageProvider::ImageType getImageProviderType(const QUrl &url); + QSGTexture *getTextureFromProvider(const QUrl &url, QSize *size, const QSize& req_size); QImage getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size); QPixmap getPixmapFromProvider(const QUrl &url, QSize *size, const QSize& req_size); + /* + A scarce resource (like a large pixmap or texture) will be cached in a + JavaScript wrapper object when accessed in a binding or other js expression. + We need some way to automatically release that scarce resource prior to normal + garbage collection (unless the user explicitly preserves the resource). + */ + ScarceResourceData* scarceResources; + int scarceResourcesRefCount; + static bool variantIsScarceResource(const QVariant& val); + void referenceScarceResources(); + void dereferenceScarceResources(); + mutable QMutex mutex; QDeclarativeTypeLoader typeLoader; @@ -249,6 +268,8 @@ public: QDeclarativeValueTypeFactory valueTypes; + QHash<QDeclarativeMetaType::ModuleApi, QDeclarativeMetaType::ModuleApiInstance *> moduleApiInstances; + QHash<const QMetaObject *, QDeclarativePropertyCache *> propertyCache; QHash<QPair<QDeclarativeType *, int>, QDeclarativePropertyCache *> typePropertyCache; inline QDeclarativePropertyCache *cache(QObject *obj); @@ -269,8 +290,6 @@ public: QHash<int, int> m_qmlLists; QHash<int, QDeclarativeCompiledData *> m_compositeTypes; - QHash<QString, QScriptValue> m_sharedScriptImports; - QScriptValue scriptValueFromVariant(const QVariant &); QVariant scriptValueToVariant(const QScriptValue &, int hint = QVariant::Invalid); @@ -326,6 +345,8 @@ public: static void defineModule(); static bool qml_debugging_enabled; + + QSGContext *sgContext; }; /*! |