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>
This commit is contained in:
parent
10384778d1
commit
df9e8ab9d6
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user