summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens.qnx@kdab.com>2012-08-08 10:53:41 (GMT)
committerQt by Nokia <qt-info@nokia.com>2012-08-20 06:26:54 (GMT)
commita26f545d8e25af74fb43d16c9afa79f6e04463e7 (patch)
tree1f44716f53ea1bd33a73230b1462eb4c49703066
parent2c459626fa2d5b8510e0e54fee3afda484fcb41e (diff)
downloadQt-a26f545d8e25af74fb43d16c9afa79f6e04463e7.zip
Qt-a26f545d8e25af74fb43d16c9afa79f6e04463e7.tar.gz
Qt-a26f545d8e25af74fb43d16c9afa79f6e04463e7.tar.bz2
Register less types for QtDeclarative/QCoreApplication
In Qt5 QtQml and QtQuick are separated so you have control on the amount of facilities you need. It is not the case in Qt4 unfortunately so you always pay the price of those registration. To overcome that, this patch avoids quite some of the type registration when we detect we're not running a QApplication. In such case all the GUI related QtQuick 1 runtime is not usable anyway. We keep around only a handful of convenience like Timer, Connection, Component, etc. Change-Id: Idf5aa935795a224ceb5bc66015282fd094b5686c Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Chris Adams <christopher.adams@nokia.com>
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp11
-rw-r--r--src/declarative/util/qdeclarativeutilmodule.cpp132
-rw-r--r--src/declarative/util/qdeclarativeutilmodule_p.h3
3 files changed, 78 insertions, 68 deletions
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index e735445..a787fb6 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -87,6 +87,7 @@
#include <QStack>
#include <QMap>
#include <QPluginLoader>
+#include <QtGui/qapplication.h>
#include <QtGui/qfontdatabase.h>
#include <QtCore/qlibraryinfo.h>
#include <QtCore/qthreadstorage.h>
@@ -354,10 +355,14 @@ QDeclarativeEnginePrivate::QDeclarativeEnginePrivate(QDeclarativeEngine *e)
{
if (!qt_QmlQtModule_registered) {
qt_QmlQtModule_registered = true;
- QDeclarativeItemModule::defineModule();
- QDeclarativeUtilModule::defineModule();
QDeclarativeEnginePrivate::defineModule();
- QDeclarativeValueTypeFactory::registerValueTypes();
+
+ const QApplication::Type appType = QApplication::type();
+ if (appType != QApplication::Tty) {
+ QDeclarativeItemModule::defineModule();
+ QDeclarativeValueTypeFactory::registerValueTypes();
+ }
+ QDeclarativeUtilModule::defineModule(appType);
}
globalClass = new QDeclarativeGlobalScriptClass(&scriptEngine);
}
diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp
index ebb44e1..363decd 100644
--- a/src/declarative/util/qdeclarativeutilmodule.cpp
+++ b/src/declarative/util/qdeclarativeutilmodule.cpp
@@ -74,38 +74,47 @@
#include "private/qdeclarativexmllistmodel_p.h"
#endif
-void QDeclarativeUtilModule::defineModule()
+void QDeclarativeUtilModule::defineModule(QApplication::Type appType)
{
- qmlRegisterUncreatableType<QDeclarativeApplication>("QtQuick",1,1,"Application", QDeclarativeApplication::tr("Application is an abstract class"));
+ if (appType != QApplication::Tty) {
+ qmlRegisterUncreatableType<QDeclarativeApplication>("QtQuick",1,1,"Application", QDeclarativeApplication::tr("Application is an abstract class"));
+
+ qmlRegisterType<QDeclarativeAnchorAnimation>("QtQuick",1,0,"AnchorAnimation");
+ qmlRegisterType<QDeclarativeAnchorChanges>("QtQuick",1,0,"AnchorChanges");
+ qmlRegisterType<QDeclarativeBehavior>("QtQuick",1,0,"Behavior");
+ qmlRegisterType<QDeclarativeColorAnimation>("QtQuick",1,0,"ColorAnimation");
+ qmlRegisterType<QDeclarativeSmoothedAnimation>("QtQuick",1,0,"SmoothedAnimation");
+ qmlRegisterType<QDeclarativeFontLoader>("QtQuick",1,0,"FontLoader");
+ qmlRegisterType<QDeclarativeNumberAnimation>("QtQuick",1,0,"NumberAnimation");
+ qmlRegisterType<QDeclarativePackage>("QtQuick",1,0,"Package");
+ qmlRegisterType<QDeclarativeParallelAnimation>("QtQuick",1,0,"ParallelAnimation");
+ qmlRegisterType<QDeclarativeParentAnimation>("QtQuick",1,0,"ParentAnimation");
+ qmlRegisterType<QDeclarativeParentChange>("QtQuick",1,0,"ParentChange");
+ qmlRegisterType<QDeclarativePauseAnimation>("QtQuick",1,0,"PauseAnimation");
+ qmlRegisterType<QDeclarativePropertyAction>("QtQuick",1,0,"PropertyAction");
+ qmlRegisterType<QDeclarativePropertyAnimation>("QtQuick",1,0,"PropertyAnimation");
+ qmlRegisterType<QDeclarativeRotationAnimation>("QtQuick",1,0,"RotationAnimation");
+ qmlRegisterType<QDeclarativeScriptAction>("QtQuick",1,0,"ScriptAction");
+ qmlRegisterType<QDeclarativeSequentialAnimation>("QtQuick",1,0,"SequentialAnimation");
+ qmlRegisterType<QDeclarativeSpringAnimation>("QtQuick",1,0,"SpringAnimation");
+ qmlRegisterType<QDeclarativeSystemPalette>("QtQuick",1,0,"SystemPalette");
+ qmlRegisterType<QDeclarativeTransition>("QtQuick",1,0,"Transition");
+ qmlRegisterType<QDeclarativeVector3dAnimation>("QtQuick",1,0,"Vector3dAnimation");
+
+ qmlRegisterType<QDeclarativeAnchors>();
+ qmlRegisterType<QDeclarativeStateOperation>();
+ qmlRegisterType<QDeclarativeAnchorSet>();
+
+ qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("QtQuick",1,0,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class"));
+ }
- qmlRegisterType<QDeclarativeAnchorAnimation>("QtQuick",1,0,"AnchorAnimation");
- qmlRegisterType<QDeclarativeAnchorChanges>("QtQuick",1,0,"AnchorChanges");
- qmlRegisterType<QDeclarativeBehavior>("QtQuick",1,0,"Behavior");
qmlRegisterType<QDeclarativeBind>("QtQuick",1,0,"Binding");
- qmlRegisterType<QDeclarativeColorAnimation>("QtQuick",1,0,"ColorAnimation");
qmlRegisterType<QDeclarativeConnections>("QtQuick",1,0,"Connections");
- qmlRegisterType<QDeclarativeSmoothedAnimation>("QtQuick",1,0,"SmoothedAnimation");
- qmlRegisterType<QDeclarativeFontLoader>("QtQuick",1,0,"FontLoader");
- qmlRegisterType<QDeclarativeListElement>("QtQuick",1,0,"ListElement");
- qmlRegisterType<QDeclarativeNumberAnimation>("QtQuick",1,0,"NumberAnimation");
- qmlRegisterType<QDeclarativePackage>("QtQuick",1,0,"Package");
- qmlRegisterType<QDeclarativeParallelAnimation>("QtQuick",1,0,"ParallelAnimation");
- qmlRegisterType<QDeclarativeParentAnimation>("QtQuick",1,0,"ParentAnimation");
- qmlRegisterType<QDeclarativeParentChange>("QtQuick",1,0,"ParentChange");
- qmlRegisterType<QDeclarativePauseAnimation>("QtQuick",1,0,"PauseAnimation");
- qmlRegisterType<QDeclarativePropertyAction>("QtQuick",1,0,"PropertyAction");
- qmlRegisterType<QDeclarativePropertyAnimation>("QtQuick",1,0,"PropertyAnimation");
- qmlRegisterType<QDeclarativeRotationAnimation>("QtQuick",1,0,"RotationAnimation");
- qmlRegisterType<QDeclarativeScriptAction>("QtQuick",1,0,"ScriptAction");
- qmlRegisterType<QDeclarativeSequentialAnimation>("QtQuick",1,0,"SequentialAnimation");
- qmlRegisterType<QDeclarativeSpringAnimation>("QtQuick",1,0,"SpringAnimation");
- qmlRegisterType<QDeclarativeStateChangeScript>("QtQuick",1,0,"StateChangeScript");
+ qmlRegisterType<QDeclarativeTimer>("QtQuick",1,0,"Timer");
qmlRegisterType<QDeclarativeStateGroup>("QtQuick",1,0,"StateGroup");
qmlRegisterType<QDeclarativeState>("QtQuick",1,0,"State");
- qmlRegisterType<QDeclarativeSystemPalette>("QtQuick",1,0,"SystemPalette");
- qmlRegisterType<QDeclarativeTimer>("QtQuick",1,0,"Timer");
- qmlRegisterType<QDeclarativeTransition>("QtQuick",1,0,"Transition");
- qmlRegisterType<QDeclarativeVector3dAnimation>("QtQuick",1,0,"Vector3dAnimation");
+ qmlRegisterType<QDeclarativeStateChangeScript>("QtQuick",1,0,"StateChangeScript");
+ qmlRegisterType<QDeclarativeListElement>("QtQuick",1,0,"ListElement");
#ifdef QT_NO_XMLPATTERNS
qmlRegisterTypeNotAvailable("QtQuick",1,0,"XmlListModel",
qApp->translate("QDeclarativeXmlListModel","Qt was built without support for xmlpatterns"));
@@ -115,46 +124,44 @@ void QDeclarativeUtilModule::defineModule()
qmlRegisterType<QDeclarativeXmlListModel>("QtQuick",1,0,"XmlListModel");
qmlRegisterType<QDeclarativeXmlListModelRole>("QtQuick",1,0,"XmlRole");
#endif
-
- qmlRegisterType<QDeclarativeAnchors>();
- qmlRegisterType<QDeclarativeStateOperation>();
- qmlRegisterType<QDeclarativeAnchorSet>();
-
- qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("QtQuick",1,0,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class"));
-
- qmlRegisterCustomType<QDeclarativeListModel>("QtQuick",1,0,"ListModel", new QDeclarativeListModelParser);
- qmlRegisterCustomType<QDeclarativePropertyChanges>("QtQuick",1,0,"PropertyChanges", new QDeclarativePropertyChangesParser);
qmlRegisterCustomType<QDeclarativeConnections>("QtQuick",1,0,"Connections", new QDeclarativeConnectionsParser);
+ qmlRegisterCustomType<QDeclarativePropertyChanges>("QtQuick",1,0,"PropertyChanges", new QDeclarativePropertyChangesParser);
+ qmlRegisterCustomType<QDeclarativeListModel>("QtQuick",1,0,"ListModel", new QDeclarativeListModelParser);
#ifndef QT_NO_IMPORT_QT47_QML
- qmlRegisterType<QDeclarativeAnchorAnimation>("Qt",4,7,"AnchorAnimation");
- qmlRegisterType<QDeclarativeAnchorChanges>("Qt",4,7,"AnchorChanges");
- qmlRegisterType<QDeclarativeBehavior>("Qt",4,7,"Behavior");
+ if (appType != QApplication::Tty) {
+ qmlRegisterType<QDeclarativeAnchorAnimation>("Qt",4,7,"AnchorAnimation");
+ qmlRegisterType<QDeclarativeAnchorChanges>("Qt",4,7,"AnchorChanges");
+ qmlRegisterType<QDeclarativeBehavior>("Qt",4,7,"Behavior");
+ qmlRegisterType<QDeclarativeColorAnimation>("Qt",4,7,"ColorAnimation");
+ qmlRegisterType<QDeclarativeSmoothedAnimation>("Qt",4,7,"SmoothedAnimation");
+ qmlRegisterType<QDeclarativeFontLoader>("Qt",4,7,"FontLoader");
+ qmlRegisterType<QDeclarativeNumberAnimation>("Qt",4,7,"NumberAnimation");
+ qmlRegisterType<QDeclarativePackage>("Qt",4,7,"Package");
+ qmlRegisterType<QDeclarativeParallelAnimation>("Qt",4,7,"ParallelAnimation");
+ qmlRegisterType<QDeclarativeParentAnimation>("Qt",4,7,"ParentAnimation");
+ qmlRegisterType<QDeclarativeParentChange>("Qt",4,7,"ParentChange");
+ qmlRegisterType<QDeclarativePauseAnimation>("Qt",4,7,"PauseAnimation");
+ qmlRegisterType<QDeclarativePropertyAction>("Qt",4,7,"PropertyAction");
+ qmlRegisterType<QDeclarativePropertyAnimation>("Qt",4,7,"PropertyAnimation");
+ qmlRegisterType<QDeclarativeRotationAnimation>("Qt",4,7,"RotationAnimation");
+ qmlRegisterType<QDeclarativeScriptAction>("Qt",4,7,"ScriptAction");
+ qmlRegisterType<QDeclarativeSequentialAnimation>("Qt",4,7,"SequentialAnimation");
+ qmlRegisterType<QDeclarativeSpringAnimation>("Qt",4,7,"SpringAnimation");
+ qmlRegisterType<QDeclarativeSystemPalette>("Qt",4,7,"SystemPalette");
+ qmlRegisterType<QDeclarativeTransition>("Qt",4,7,"Transition");
+ qmlRegisterType<QDeclarativeVector3dAnimation>("Qt",4,7,"Vector3dAnimation");
+
+ qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("Qt",4,7,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class"));
+ }
+
qmlRegisterType<QDeclarativeBind>("Qt",4,7,"Binding");
- qmlRegisterType<QDeclarativeColorAnimation>("Qt",4,7,"ColorAnimation");
qmlRegisterType<QDeclarativeConnections>("Qt",4,7,"Connections");
- qmlRegisterType<QDeclarativeSmoothedAnimation>("Qt",4,7,"SmoothedAnimation");
- qmlRegisterType<QDeclarativeFontLoader>("Qt",4,7,"FontLoader");
- qmlRegisterType<QDeclarativeListElement>("Qt",4,7,"ListElement");
- qmlRegisterType<QDeclarativeNumberAnimation>("Qt",4,7,"NumberAnimation");
- qmlRegisterType<QDeclarativePackage>("Qt",4,7,"Package");
- qmlRegisterType<QDeclarativeParallelAnimation>("Qt",4,7,"ParallelAnimation");
- qmlRegisterType<QDeclarativeParentAnimation>("Qt",4,7,"ParentAnimation");
- qmlRegisterType<QDeclarativeParentChange>("Qt",4,7,"ParentChange");
- qmlRegisterType<QDeclarativePauseAnimation>("Qt",4,7,"PauseAnimation");
- qmlRegisterType<QDeclarativePropertyAction>("Qt",4,7,"PropertyAction");
- qmlRegisterType<QDeclarativePropertyAnimation>("Qt",4,7,"PropertyAnimation");
- qmlRegisterType<QDeclarativeRotationAnimation>("Qt",4,7,"RotationAnimation");
- qmlRegisterType<QDeclarativeScriptAction>("Qt",4,7,"ScriptAction");
- qmlRegisterType<QDeclarativeSequentialAnimation>("Qt",4,7,"SequentialAnimation");
- qmlRegisterType<QDeclarativeSpringAnimation>("Qt",4,7,"SpringAnimation");
- qmlRegisterType<QDeclarativeStateChangeScript>("Qt",4,7,"StateChangeScript");
+ qmlRegisterType<QDeclarativeTimer>("Qt",4,7,"Timer");
qmlRegisterType<QDeclarativeStateGroup>("Qt",4,7,"StateGroup");
qmlRegisterType<QDeclarativeState>("Qt",4,7,"State");
- qmlRegisterType<QDeclarativeSystemPalette>("Qt",4,7,"SystemPalette");
- qmlRegisterType<QDeclarativeTimer>("Qt",4,7,"Timer");
- qmlRegisterType<QDeclarativeTransition>("Qt",4,7,"Transition");
- qmlRegisterType<QDeclarativeVector3dAnimation>("Qt",4,7,"Vector3dAnimation");
+ qmlRegisterType<QDeclarativeStateChangeScript>("Qt",4,7,"StateChangeScript");
+ qmlRegisterType<QDeclarativeListElement>("Qt",4,7,"ListElement");
#ifdef QT_NO_XMLPATTERNS
qmlRegisterTypeNotAvailable("Qt",4,7,"XmlListModel",
qApp->translate("QDeclarativeXmlListModel","Qt was built without support for xmlpatterns"));
@@ -164,11 +171,8 @@ void QDeclarativeUtilModule::defineModule()
qmlRegisterType<QDeclarativeXmlListModel>("Qt",4,7,"XmlListModel");
qmlRegisterType<QDeclarativeXmlListModelRole>("Qt",4,7,"XmlRole");
#endif
-
- qmlRegisterUncreatableType<QDeclarativeAbstractAnimation>("Qt",4,7,"Animation",QDeclarativeAbstractAnimation::tr("Animation is an abstract class"));
-
- qmlRegisterCustomType<QDeclarativeListModel>("Qt", 4,7, "ListModel", new QDeclarativeListModelParser);
- qmlRegisterCustomType<QDeclarativePropertyChanges>("Qt", 4, 7, "PropertyChanges", new QDeclarativePropertyChangesParser);
qmlRegisterCustomType<QDeclarativeConnections>("Qt", 4, 7, "Connections", new QDeclarativeConnectionsParser);
+ qmlRegisterCustomType<QDeclarativePropertyChanges>("Qt", 4, 7, "PropertyChanges", new QDeclarativePropertyChangesParser);
+ qmlRegisterCustomType<QDeclarativeListModel>("Qt", 4,7, "ListModel", new QDeclarativeListModelParser);
#endif
}
diff --git a/src/declarative/util/qdeclarativeutilmodule_p.h b/src/declarative/util/qdeclarativeutilmodule_p.h
index 62372fe..fd8077d 100644
--- a/src/declarative/util/qdeclarativeutilmodule_p.h
+++ b/src/declarative/util/qdeclarativeutilmodule_p.h
@@ -43,6 +43,7 @@
#define QDECLARATIVEUTILMODULE_H
#include <qdeclarative.h>
+#include <qapplication.h>
QT_BEGIN_HEADER
@@ -53,7 +54,7 @@ QT_MODULE(Declarative)
class QDeclarativeUtilModule
{
public:
- static void defineModule();
+ static void defineModule(QApplication::Type appType);
};
QT_END_NAMESPACE