From 3c0973b75a8ea8ac3339ec00f7d4c09f0ae8983f Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Mon, 14 May 2012 13:01:29 +1000 Subject: [PATCH] Remove non-templated qobject module api registration function Previously, both templated and non-templated qobject module api registration functions were provided as public API. The non-templated version is identical to the templated version, except that bindings which access properties of module apis registered with that function cannot be optimized with v4. This commit removes the non-templated version of the function. Change-Id: Ic417aa241f1172bf6d055bdc7f528d7e9304097b Reviewed-by: Martin Jones --- src/qml/doc/src/qtqml.qdoc | 9 -------- src/qml/qml/qqml.h | 14 ------------- src/qml/qml/qqmlmetatype.cpp | 3 --- .../data/moduleapi/qobjectModuleApiLegacy.qml | 13 ------------ tests/auto/qml/qqmlecmascript/testtypes.cpp | 1 - .../auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp | 11 ---------- tests/benchmarks/qml/holistic/testtypes.cpp | 24 +++++++++------------- tests/benchmarks/qml/holistic/testtypes.h | 2 +- 8 files changed, 11 insertions(+), 66 deletions(-) delete mode 100644 tests/auto/qml/qqmlecmascript/data/moduleapi/qobjectModuleApiLegacy.qml diff --git a/src/qml/doc/src/qtqml.qdoc b/src/qml/doc/src/qtqml.qdoc index 7bd797e..915f54e 100644 --- a/src/qml/doc/src/qtqml.qdoc +++ b/src/qml/doc/src/qtqml.qdoc @@ -279,15 +279,6 @@ */ /*! - \internal - \fn int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMinor, QObject *(*callback)(QQmlEngine *, QJSEngine *)) - \deprecated - - Any uses of a module API in a binding where that module API was registered with this - function instead of the template version will result in suboptimal binding generation. - */ - -/*! \fn template int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMinor, QObject *(*callback)(QQmlEngine *, QJSEngine *)) \relates QQmlEngine diff --git a/src/qml/qml/qqml.h b/src/qml/qml/qqml.h index fedd0e4..c7092a6 100644 --- a/src/qml/qml/qqml.h +++ b/src/qml/qml/qqml.h @@ -416,20 +416,6 @@ inline int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMi return QQmlPrivate::qmlregister(QQmlPrivate::ModuleApiRegistration, &api); } -inline int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMinor, - QObject *(*callback)(QQmlEngine *, QJSEngine *)) -{ - QQmlPrivate::RegisterModuleApi api = { - 0, - - uri, versionMajor, versionMinor, - - 0, callback, 0 // unknown QObject instance type - }; - - return QQmlPrivate::qmlregister(QQmlPrivate::ModuleApiRegistration, &api); -} - template inline int qmlRegisterModuleApi(const char *uri, int versionMajor, int versionMinor, QObject *(*callback)(QQmlEngine *, QJSEngine *)) diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp index 416caa9..80fb3ed 100644 --- a/src/qml/qml/qqmlmetatype.cpp +++ b/src/qml/qml/qqmlmetatype.cpp @@ -909,9 +909,6 @@ int registerModuleApi(const QQmlPrivate::RegisterModuleApi &api) import.qobject = api.qobjectApi; import.instanceMetaObject = (api.qobjectApi && api.version >= 1) ? api.instanceMetaObject : 0; // BC with version 0. - if (import.qobject && !import.instanceMetaObject) // BC - check import.iMO rather than api.iMO. - qWarning() << "qmlRegisterModuleApi(): sub-optimal: use the templated version of this function instead!"; - int index = data->moduleApiCount++; QQmlMetaTypeData::ModuleApiList *apiList = data->moduleApis.value(uri); diff --git a/tests/auto/qml/qqmlecmascript/data/moduleapi/qobjectModuleApiLegacy.qml b/tests/auto/qml/qqmlecmascript/data/moduleapi/qobjectModuleApiLegacy.qml deleted file mode 100644 index e282ad6..0000000 --- a/tests/auto/qml/qqmlecmascript/data/moduleapi/qobjectModuleApiLegacy.qml +++ /dev/null @@ -1,13 +0,0 @@ -import QtQuick 2.0 - -import Qt.test.legacyModuleApi 1.0 as ModApi // was registered with non-templated function - -QtObject { - property int legacyModulePropertyTest: ModApi.qobjectTestProperty - property int legacyModuleMethodTest - - Component.onCompleted: { - legacyModuleMethodTest = ModApi.qobjectTestMethod(); - } -} - diff --git a/tests/auto/qml/qqmlecmascript/testtypes.cpp b/tests/auto/qml/qqmlecmascript/testtypes.cpp index 8fd1605..f192cbc 100644 --- a/tests/auto/qml/qqmlecmascript/testtypes.cpp +++ b/tests/auto/qml/qqmlecmascript/testtypes.cpp @@ -218,7 +218,6 @@ void registerTypes() qmlRegisterModuleApi("Qt.test.qobjectApi",1,3,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, minor version set qmlRegisterModuleApi("Qt.test.qobjectApi",2,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, major version set qmlRegisterModuleApi("Qt.test.qobjectApiParented",1,0,qobject_api_engine_parent); // register (parented qobject) module API for a uri which doesn't contain elements - qmlRegisterModuleApi("Qt.test.legacyModuleApi", 1, 0, qobject_api); // this registration function doesn't provide type information. qRegisterMetaType("MyEnum2"); qRegisterMetaType("Qt::MouseButtons"); diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index 2db8967..9f4a857 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -3606,17 +3606,6 @@ void tst_qqmlecmascript::moduleApi_data() << QVariantList() << QStringList() << QVariantList(); - - QTest::newRow("legacy module api registration") - << testFileUrl("moduleapi/qobjectModuleApiLegacy.qml") - << QString() - << QStringList() // warning doesn't occur in the test, but in registerTypes() - << (QStringList() << "legacyModulePropertyTest" << "legacyModuleMethodTest") - << (QVariantList() << 20 << 2) - << QStringList() - << QVariantList() - << QStringList() - << QVariantList(); } void tst_qqmlecmascript::moduleApi() diff --git a/tests/benchmarks/qml/holistic/testtypes.cpp b/tests/benchmarks/qml/holistic/testtypes.cpp index 65d3ee8..bf9ff5f 100644 --- a/tests/benchmarks/qml/holistic/testtypes.cpp +++ b/tests/benchmarks/qml/holistic/testtypes.cpp @@ -39,33 +39,30 @@ ** ****************************************************************************/ #include "testtypes.h" -#include -#include #include -#include -static QScriptValue script_api(QQmlEngine *engine, QScriptEngine *scriptEngine) +static QJSValue script_api(QQmlEngine *engine, QJSEngine *scriptEngine) { Q_UNUSED(engine) Q_UNUSED(scriptEngine) static int testProperty = 13; - QScriptValue v = scriptEngine->newObject(); + QJSValue v = scriptEngine->newObject(); v.setProperty("scriptTestProperty", testProperty++); return v; } -static QObject *qobject_api(QQmlEngine *engine, QScriptEngine *scriptEngine) +static QObject *qobject_api(QQmlEngine *engine, QJSEngine *scriptEngine) { Q_UNUSED(engine) Q_UNUSED(scriptEngine) - testQObjectApi *o = new testQObjectApi(); + testQObjectApi *o = new testQObjectApi; o->setQObjectTestProperty(20); return o; } -static QObject *qobject_api_engine_parent(QQmlEngine *engine, QScriptEngine *scriptEngine) +static QObject *qobject_api_engine_parent(QQmlEngine *engine, QJSEngine *scriptEngine) { Q_UNUSED(scriptEngine) @@ -80,19 +77,18 @@ void registerTypes() qmlRegisterType("Qt.test", 1,0, "MyQmlObjectAlias"); qmlRegisterType("Qt.test", 1,0, "MyQmlObject"); - qmlRegisterType("Qt.test",1,0,"QPlainTextEdit"); qRegisterMetaType("MyQmlObject::MyType"); qmlRegisterType("Qt.test", 1,0, "MyScarceResourceProvider"); qmlRegisterType("Qt.test", 1,0, "MyArbitraryVariantProvider"); qmlRegisterModuleApi("Qt.test",1,0,script_api); // register (script) module API for an existing uri which contains elements - qmlRegisterModuleApi("Qt.test",1,0,qobject_api); // register (qobject) for an existing uri for which another module API was previously regd. Should replace! + qmlRegisterModuleApi("Qt.test",1,0,qobject_api); // register (qobject) for an existing uri for which another module API was previously regd. Should replace! qmlRegisterModuleApi("Qt.test.scriptApi",1,0,script_api); // register (script) module API for a uri which doesn't contain elements - qmlRegisterModuleApi("Qt.test.qobjectApi",1,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements - qmlRegisterModuleApi("Qt.test.qobjectApi",1,3,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, minor version set - qmlRegisterModuleApi("Qt.test.qobjectApi",2,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, major version set - qmlRegisterModuleApi("Qt.test.qobjectApiParented",1,0,qobject_api_engine_parent); // register (parented qobject) module API for a uri which doesn't contain elements + qmlRegisterModuleApi("Qt.test.qobjectApi",1,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements + qmlRegisterModuleApi("Qt.test.qobjectApi",1,3,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, minor version set + qmlRegisterModuleApi("Qt.test.qobjectApi",2,0,qobject_api); // register (qobject) module API for a uri which doesn't contain elements, major version set + qmlRegisterModuleApi("Qt.test.qobjectApiParented",1,0,qobject_api_engine_parent); // register (parented qobject) module API for a uri which doesn't contain elements } //#include "testtypes.moc" diff --git a/tests/benchmarks/qml/holistic/testtypes.h b/tests/benchmarks/qml/holistic/testtypes.h index 66d755d..85885cf 100644 --- a/tests/benchmarks/qml/holistic/testtypes.h +++ b/tests/benchmarks/qml/holistic/testtypes.h @@ -53,7 +53,7 @@ #include #include #include -#include +#include #include #include -- 2.7.4