summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml')
-rw-r--r--src/declarative/qml/qdeclarativecompiler.cpp16
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp3
-rw-r--r--src/declarative/qml/qdeclarativeengine_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeexpression.cpp4
-rw-r--r--src/declarative/qml/qdeclarativeexpression_p.h2
-rw-r--r--src/declarative/qml/qdeclarativefastproperties_p.h2
-rw-r--r--src/declarative/qml/qdeclarativemetatype.cpp4
-rw-r--r--src/declarative/qml/qdeclarativevaluetype.cpp12
-rw-r--r--src/declarative/qml/qdeclarativevme.cpp2
-rw-r--r--src/declarative/qml/qdeclarativexmlhttprequest.cpp2
10 files changed, 30 insertions, 19 deletions
diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp
index f73de7f3..ab321203 100644
--- a/src/declarative/qml/qdeclarativecompiler.cpp
+++ b/src/declarative/qml/qdeclarativecompiler.cpp
@@ -662,7 +662,8 @@ void QDeclarativeCompiler::compileTree(QDeclarativeParser::Object *tree)
output->bytecode << init;
// Build global import scripts
- QHash<QString, Object::ScriptBlock> importedScripts;
+ QSet<QString> importedScripts;
+ QList<Object::ScriptBlock> importedScriptList;
QStringList importedScriptIndexes;
foreach (const QDeclarativeTypeData::ScriptReference &script, unit->resolvedScripts()) {
@@ -672,24 +673,23 @@ void QDeclarativeCompiler::compileTree(QDeclarativeParser::Object *tree)
Q_ASSERT(!importedScripts.contains(script.qualifier));
if (!scriptCode.isEmpty()) {
- Object::ScriptBlock &scriptBlock = importedScripts[script.qualifier];
+ importedScripts.insert(script.qualifier);
+ Object::ScriptBlock scriptBlock;
scriptBlock.code = scriptCode;
scriptBlock.file = script.script->finalUrl().toString();
scriptBlock.pragmas = pragmas;
+ importedScriptList.append(scriptBlock);
+ importedScriptIndexes.append(script.qualifier);
}
}
- for (QHash<QString, Object::ScriptBlock>::Iterator iter = importedScripts.begin();
- iter != importedScripts.end(); ++iter) {
-
- importedScriptIndexes.append(iter.key());
-
+ for (int i = 0; i < importedScriptList.count(); ++i) {
QDeclarativeInstruction import;
import.type = QDeclarativeInstruction::StoreImportedScript;
import.line = 0;
import.storeScript.value = output->scripts.count();
- output->scripts << *iter;
+ output->scripts << importedScriptList.at(i);
output->bytecode << import;
}
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index fa7134ed..23bc9aa1 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -114,6 +114,7 @@
#endif
Q_DECLARE_METATYPE(QDeclarativeProperty)
+Q_DECLARE_METATYPE(QScriptValue)
QT_BEGIN_NAMESPACE
@@ -570,7 +571,7 @@ void QDeclarativeEnginePrivate::init()
Q_Q(QDeclarativeEngine);
qRegisterMetaType<QVariant>("QVariant");
qRegisterMetaType<QDeclarativeScriptString>("QDeclarativeScriptString");
- qRegisterMetaType<QScriptValue>("QScriptValue");
+ qRegisterMetaType<QScriptValue>();
qRegisterMetaType<QDeclarativeComponent::Status>("QDeclarativeComponent::Status");
QDeclarativeData::init();
diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h
index cc1d5520..4f22b94d 100644
--- a/src/declarative/qml/qdeclarativeengine_p.h
+++ b/src/declarative/qml/qdeclarativeengine_p.h
@@ -157,7 +157,7 @@ public:
int notifyIndex;
};
bool captureProperties;
- QPODVector<CapturedProperty> capturedProperties;
+ QPODVector<CapturedProperty, 16> capturedProperties;
QDeclarativeContext *rootContext;
bool isDebugging;
diff --git a/src/declarative/qml/qdeclarativeexpression.cpp b/src/declarative/qml/qdeclarativeexpression.cpp
index b52a0748..58897c9e 100644
--- a/src/declarative/qml/qdeclarativeexpression.cpp
+++ b/src/declarative/qml/qdeclarativeexpression.cpp
@@ -460,7 +460,7 @@ QScriptValue QDeclarativeQtScriptExpression::scriptValue(QObject *secondaryScope
QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(context()->engine);
bool lastCaptureProperties = ep->captureProperties;
- QPODVector<QDeclarativeEnginePrivate::CapturedProperty> lastCapturedProperties;
+ QPODVector<QDeclarativeEnginePrivate::CapturedProperty, 16> lastCapturedProperties;
ep->captureProperties = trackChange;
ep->capturedProperties.copyAndClear(lastCapturedProperties);
@@ -539,7 +539,7 @@ QScriptValue QDeclarativeQtScriptExpression::eval(QObject *secondaryScope, bool
}
}
-void QDeclarativeQtScriptExpression::updateGuards(const QPODVector<QDeclarativeEnginePrivate::CapturedProperty> &properties)
+void QDeclarativeQtScriptExpression::updateGuards(const QPODVector<QDeclarativeEnginePrivate::CapturedProperty, 16> &properties)
{
Q_ASSERT(guardObject);
Q_ASSERT(guardObjectNotifyIndex != -1);
diff --git a/src/declarative/qml/qdeclarativeexpression_p.h b/src/declarative/qml/qdeclarativeexpression_p.h
index 6e8df8ae..402ae846 100644
--- a/src/declarative/qml/qdeclarativeexpression_p.h
+++ b/src/declarative/qml/qdeclarativeexpression_p.h
@@ -153,7 +153,7 @@ public:
private:
void clearGuards();
QScriptValue eval(QObject *secondaryScope, bool *isUndefined);
- void updateGuards(const QPODVector<QDeclarativeEnginePrivate::CapturedProperty> &properties);
+ void updateGuards(const QPODVector<QDeclarativeEnginePrivate::CapturedProperty, 16> &properties);
bool trackChange;
diff --git a/src/declarative/qml/qdeclarativefastproperties_p.h b/src/declarative/qml/qdeclarativefastproperties_p.h
index 8747eeba..f0e94779 100644
--- a/src/declarative/qml/qdeclarativefastproperties_p.h
+++ b/src/declarative/qml/qdeclarativefastproperties_p.h
@@ -50,7 +50,7 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
class QObject;
-class QMetaObject;
+struct QMetaObject;
class QDeclarativeNotifierEndpoint;
class QDeclarativeFastProperties
{
diff --git a/src/declarative/qml/qdeclarativemetatype.cpp b/src/declarative/qml/qdeclarativemetatype.cpp
index 09390646..4a771de9 100644
--- a/src/declarative/qml/qdeclarativemetatype.cpp
+++ b/src/declarative/qml/qdeclarativemetatype.cpp
@@ -449,7 +449,7 @@ QObject *QDeclarativeType::create() const
d->m_newFunc(rv);
if (rv && !d->m_metaObjects.isEmpty())
- (void *)new QDeclarativeProxyMetaObject(rv, &d->m_metaObjects);
+ (void)new QDeclarativeProxyMetaObject(rv, &d->m_metaObjects);
return rv;
}
@@ -462,7 +462,7 @@ void QDeclarativeType::create(QObject **out, void **memory, size_t additionalMem
d->m_newFunc(rv);
if (rv && !d->m_metaObjects.isEmpty())
- (void *)new QDeclarativeProxyMetaObject(rv, &d->m_metaObjects);
+ (void)new QDeclarativeProxyMetaObject(rv, &d->m_metaObjects);
*out = rv;
*memory = ((char *)rv) + d->m_allocationSize;
diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp
index 00b9a4de..9043760a 100644
--- a/src/declarative/qml/qdeclarativevaluetype.cpp
+++ b/src/declarative/qml/qdeclarativevaluetype.cpp
@@ -80,9 +80,19 @@ int qmlRegisterValueTypeEnums(const char *uri, int versionMajor, int versionMino
QDeclarativeValueTypeFactory::QDeclarativeValueTypeFactory()
{
+ static int isGuiApp = -1;
+ memset(valueTypes, 0, sizeof(valueTypes));
+ /*FIXME: is there a better way to tell if an app is Gui or not?*/
+ if (isGuiApp == -1)
+ isGuiApp = (int) qApp->inherits("QGuiApplication");
// ### Optimize
- for (unsigned int ii = 0; ii < (QVariant::UserType - 1); ++ii)
+ for (unsigned int ii = 0; ii <= QVariant::LastCoreType; ++ii)
valueTypes[ii] = valueType(ii);
+
+ if (isGuiApp) {
+ for (unsigned int ii = QVariant::LastCoreType + 1; ii < (QVariant::UserType - 1); ++ii)
+ valueTypes[ii] = valueType(ii);
+ }
}
QDeclarativeValueTypeFactory::~QDeclarativeValueTypeFactory()
diff --git a/src/declarative/qml/qdeclarativevme.cpp b/src/declarative/qml/qdeclarativevme.cpp
index 5c875510..49ce35da 100644
--- a/src/declarative/qml/qdeclarativevme.cpp
+++ b/src/declarative/qml/qdeclarativevme.cpp
@@ -283,7 +283,7 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEObjectStack &stack,
{
QObject *o = (QObject *)operator new(instr.createSimple.typeSize +
sizeof(QDeclarativeData));
- ::memset(o, 0, instr.createSimple.typeSize + sizeof(QDeclarativeData));
+ ::memset(static_cast<void *>(o), 0, instr.createSimple.typeSize + sizeof(QDeclarativeData));
instr.createSimple.create(o);
QDeclarativeData *ddata = (QDeclarativeData *)(((const char *)o) + instr.createSimple.typeSize);
diff --git a/src/declarative/qml/qdeclarativexmlhttprequest.cpp b/src/declarative/qml/qdeclarativexmlhttprequest.cpp
index bb16a9c1..dd091ca7 100644
--- a/src/declarative/qml/qdeclarativexmlhttprequest.cpp
+++ b/src/declarative/qml/qdeclarativexmlhttprequest.cpp
@@ -1321,7 +1321,7 @@ void QDeclarativeXMLHttpRequest::readEncoding()
if (header.first == "content-type") {
int separatorIdx = header.second.indexOf(';');
if (separatorIdx == -1) {
- m_mime == header.second;
+ m_mime = header.second;
} else {
m_mime = header.second.mid(0, separatorIdx);
int charsetIdx = header.second.indexOf("charset=");