summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qobject.cpp
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2025-09-21 02:53:32 +0300
committerAhmad Samir <a.samirh78@gmail.com>2025-09-30 21:56:49 +0300
commite5de4d790603fdcc7dce80aee3463fe1c9009e21 (patch)
tree46ca6ed95c630841a571b3ddc209005fcfccf0dd /src/corelib/kernel/qobject.cpp
parentc0fb2f62f15acc56f8e536ac85691f062e5f413a (diff)
QObject: disconnect(): rearrange the code for better readability
De-duplicating the code in a couple of places. This also helps make the next patch in this series more focused. Change-Id: Ia0435c43ae9eaa55c3d3e77f8a4f4c7be677cbf2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
-rw-r--r--src/corelib/kernel/qobject.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 0c84b53fe88..4c99a8ae470 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -3339,13 +3339,17 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
QByteArray pinnedSignal;
bool signal_found = false;
+ const QMetaObject *smeta = sender->metaObject();
+ Q_ASSERT(QMetaObjectPrivate::get(smeta)->revision >= 7);
+ QByteArrayView signalName;
+ QArgumentTypeArray signalTypes;
if (signal) {
QT_TRY {
pinnedSignal = QMetaObject::normalizedSignature(signal);
signal = pinnedSignal.constData();
} QT_CATCH (const std::bad_alloc &) {
// if the signal is already normalized, we can continue.
- if (sender->metaObject()->indexOfSignal(signal) == -1)
+ if (smeta->indexOfSignal(signal) == -1)
QT_RETHROW;
}
}
@@ -3363,13 +3367,17 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
QByteArray pinnedMethod;
bool method_found = false;
+ const QMetaObject *rmeta = receiver ? receiver->metaObject() : nullptr;
+ Q_ASSERT(!rmeta || QMetaObjectPrivate::get(rmeta)->revision >= 7);
+ QByteArrayView methodName;
+ QArgumentTypeArray methodTypes;
if (method) {
QT_TRY {
pinnedMethod = QMetaObject::normalizedSignature(method);
method = pinnedMethod.constData();
} QT_CATCH(const std::bad_alloc &) {
// if the method is already normalized, we can continue.
- if (receiver->metaObject()->indexOfMethod(method) == -1)
+ if (rmeta->indexOfMethod(method) == -1)
QT_RETHROW;
}
}
@@ -3379,15 +3387,8 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
* and slots with the same signature.
*/
bool res = false;
- const QMetaObject *smeta = sender->metaObject();
- QByteArrayView signalName;
- QArgumentTypeArray signalTypes;
- Q_ASSERT(QMetaObjectPrivate::get(smeta)->revision >= 7);
if (signal)
signalName = QMetaObjectPrivate::decodeMethodSignature(signal, signalTypes);
- QByteArrayView methodName;
- QArgumentTypeArray methodTypes;
- Q_ASSERT(!receiver || QMetaObjectPrivate::get(receiver->metaObject())->revision >= 7);
if (method)
methodName = QMetaObjectPrivate::decodeMethodSignature(method, methodTypes);
do {
@@ -3405,7 +3406,6 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
if (!method) {
res |= QMetaObjectPrivate::disconnect(sender, signal_index, smeta, receiver, -1, nullptr);
} else {
- const QMetaObject *rmeta = receiver->metaObject();
do {
int method_index = getMethodIndex(membcode, rmeta, methodName, methodTypes);
if (method_index >= 0)