return returnValue;
}
+/*! \internal
+ Add the connection \a c to to the list of connections of the sender's object
+ for the specified \a signal
+
+ The signalSlotLock() of the sender and receiver must be locked while calling
+ this function
+
+ Will also add the connection in the sender's list of the receiver.
+ */
void QObjectPrivate::addConnection(int signal, Connection *c)
{
+ Q_ASSERT(c->sender == q_ptr);
if (!connectionLists)
connectionLists = new QObjectConnectionListVector();
if (signal >= connectionLists->count())
connectionList.last = c;
cleanConnectionLists();
+
+ c->prev = &(QObjectPrivate::get(c->receiver)->senders);
+ c->next = *c->prev;
+ *c->prev = c;
+ if (c->next)
+ c->next->prev = &c->next;
+
+ if (signal < 0) {
+ connectedSignals[0] = connectedSignals[1] = ~0;
+ } else if (signal < (int)sizeof(connectedSignals) * 8) {
+ connectedSignals[signal >> 5] |= (1 << (signal & 0x1f));
+ }
}
void QObjectPrivate::cleanConnectionLists()
c->callFunction = callFunction;
QObjectPrivate::get(s)->addConnection(signal_index, c.data());
-
- c->prev = &(QObjectPrivate::get(r)->senders);
- c->next = *c->prev;
- *c->prev = c.data();
- if (c->next)
- c->next->prev = &c->next;
-
- QObjectPrivate *const sender_d = QObjectPrivate::get(s);
- if (signal_index < 0) {
- sender_d->connectedSignals[0] = sender_d->connectedSignals[1] = ~0;
- } else if (signal_index < (int)sizeof(sender_d->connectedSignals) * 8) {
- sender_d->connectedSignals[signal_index >> 5] |= (1 << (signal_index & 0x1f));
- }
-
return c.take();
}
computeOffsets(senderMetaObject, &signalOffset, &methodOffset);
signal_index += signalOffset;
- // duplicated from QMetaObjectPrivate::connect
QObject *s = const_cast<QObject *>(sender);
QObject *r = const_cast<QObject *>(receiver);
}
QObjectPrivate::get(s)->addConnection(signal_index, c.data());
-
- c->prev = &(QObjectPrivate::get(r)->senders);
- c->next = *c->prev;
- *c->prev = c.data();
- if (c->next)
- c->next->prev = &c->next;
-
- QObjectPrivate *const sender_d = QObjectPrivate::get(s);
- if (signal_index < 0) {
- sender_d->connectedSignals[0] = sender_d->connectedSignals[1] = ~0;
- } else if (signal_index < (int)sizeof(sender_d->connectedSignals) * 8) {
- sender_d->connectedSignals[signal_index >> 5] |= (1 << (signal_index & 0x1f));
- }
-
return QMetaObject::Connection(c.take());
}