diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-07-12 22:06:21 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-13 12:09:42 +0200 |
commit | df9e8ab9d6c0da757bad4c1815e9705c92cc5345 (patch) | |
tree | d1974a7230b36e577dec9970d5415be300c02d7b /src/corelib/statemachine | |
parent | 10384778d1422b2491f39c6e07ccf7cb9ebbf576 (diff) |
statemachine: Micro-optimization for signal transition connect
It's silly to call one virtual function plus one function that
walks the inheritance chain, on every signal transition connect
and disconnect, when the method offset of the internal
QSignalEventGenerator class cannot change.
Change-Id: Ic4e83bdc6ab445ea8ca00f3d8da3031250621e2f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Diffstat (limited to 'src/corelib/statemachine')
-rw-r--r-- | src/corelib/statemachine/qstatemachine.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp index de056aac8f..3ab108a92b 100644 --- a/src/corelib/statemachine/qstatemachine.cpp +++ b/src/corelib/statemachine/qstatemachine.cpp @@ -1746,8 +1746,8 @@ void QStateMachinePrivate::registerSignalTransition(QSignalTransition *transitio if (connectedSignalIndexes.at(signalIndex) == 0) { if (!signalEventGenerator) signalEventGenerator = new QSignalEventGenerator(q); - bool ok = QMetaObject::connect(sender, signalIndex, signalEventGenerator, - signalEventGenerator->metaObject()->methodOffset()); + static const int generatorMethodOffset = QSignalEventGenerator::staticMetaObject.methodOffset(); + bool ok = QMetaObject::connect(sender, signalIndex, signalEventGenerator, generatorMethodOffset); if (!ok) { #ifdef QSTATEMACHINE_DEBUG qDebug() << q << ": FAILED to add signal transition from" << transition->sourceState() @@ -1787,8 +1787,8 @@ void QStateMachinePrivate::unregisterSignalTransition(QSignalTransition *transit Q_ASSERT(connectedSignalIndexes.at(signalIndex) != 0); if (--connectedSignalIndexes[signalIndex] == 0) { Q_ASSERT(signalEventGenerator != 0); - QMetaObject::disconnect(sender, signalIndex, signalEventGenerator, - signalEventGenerator->metaObject()->methodOffset()); + static const int generatorMethodOffset = QSignalEventGenerator::staticMetaObject.methodOffset(); + QMetaObject::disconnect(sender, signalIndex, signalEventGenerator, generatorMethodOffset); int sum = 0; for (int i = 0; i < connectedSignalIndexes.size(); ++i) sum += connectedSignalIndexes.at(i); |