Don't call metaObject() several times

It's sufficient to call it once per invokeMethod.

Change-Id: I1db826027eca87c799f216d65e27c801a23e64e2
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
bb10
Kent Hansen 2012-02-17 21:48:52 +01:00 committed by Qt by Nokia
parent 44ab16f93d
commit 3d2c8d76ec
1 changed files with 6 additions and 5 deletions

View File

@ -1151,18 +1151,19 @@ bool QMetaObject::invokeMethod(QObject *obj,
sig[sig.size() - 1] = ')';
sig.append('\0');
int idx = obj->metaObject()->indexOfMethod(sig.constData());
const QMetaObject *meta = obj->metaObject();
int idx = meta->indexOfMethod(sig.constData());
if (idx < 0) {
QByteArray norm = QMetaObject::normalizedSignature(sig.constData());
idx = obj->metaObject()->indexOfMethod(norm.constData());
idx = meta->indexOfMethod(norm.constData());
}
if (idx < 0 || idx >= obj->metaObject()->methodCount()) {
if (idx < 0 || idx >= meta->methodCount()) {
qWarning("QMetaObject::invokeMethod: No such method %s::%s",
obj->metaObject()->className(), sig.constData());
meta->className(), sig.constData());
return false;
}
QMetaMethod method = obj->metaObject()->method(idx);
QMetaMethod method = meta->method(idx);
return method.invoke(obj, type, ret,
val0, val1, val2, val3, val4, val5, val6, val7, val8, val9);
}