summaryrefslogtreecommitdiffstats
path: root/src/corelib/statemachine
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-07-12 22:06:21 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-13 12:09:42 +0200
commitdf9e8ab9d6c0da757bad4c1815e9705c92cc5345 (patch)
treed1974a7230b36e577dec9970d5415be300c02d7b /src/corelib/statemachine
parent10384778d1422b2491f39c6e07ccf7cb9ebbf576 (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.cpp8
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);