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
parent
44ab16f93d
commit
3d2c8d76ec
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue