diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-09-12 10:47:02 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-09-12 11:24:12 +0000 |
commit | 248ab8c8740de3e0adb203dd207862b35cfc69fe (patch) | |
tree | beb15a490d986a515cae72c34e034267b21bc03d /sources/pyside2/libpyside/globalreceiver.cpp | |
parent | 0187d2b17dd5d35d645b70a2cf08c7100c0d6a14 (diff) |
libpyside: Fix contains()/value() antipattern
Use iterators instead, avoiding repeated lookups of hashes and maps.
Change-Id: I3b430bdf0ceef1980baeca45849880d35538e89b
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/pyside2/libpyside/globalreceiver.cpp')
-rw-r--r-- | sources/pyside2/libpyside/globalreceiver.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/sources/pyside2/libpyside/globalreceiver.cpp b/sources/pyside2/libpyside/globalreceiver.cpp index 9f0eea4f8..78382f5a4 100644 --- a/sources/pyside2/libpyside/globalreceiver.cpp +++ b/sources/pyside2/libpyside/globalreceiver.cpp @@ -207,8 +207,9 @@ GlobalReceiver::~GlobalReceiver() void GlobalReceiver::connectNotify(QObject* source, int slotId) { - if (m_slotReceivers.contains(slotId)) { - DynamicSlotData* data = m_slotReceivers[slotId]; + const auto it = m_slotReceivers.constFind(slotId); + if (it != m_slotReceivers.cend()) { + DynamicSlotData* data = it.value(); if (!data->hasRefTo(source)) QObject::connect(source, SIGNAL(destroyed(QObject*)), this, "1" RECEIVER_DESTROYED_SLOT_NAME); data->addRef(source); @@ -217,8 +218,9 @@ void GlobalReceiver::connectNotify(QObject* source, int slotId) void GlobalReceiver::disconnectNotify(QObject* source, int slotId) { - if (m_slotReceivers.contains(slotId)) { - DynamicSlotData *data = m_slotReceivers[slotId]; + const auto it = m_slotReceivers.constFind(slotId); + if (it != m_slotReceivers.cend()) { + DynamicSlotData* data = it.value(); data->decRef(source); if (data->refCount() == 0) removeSlot(slotId); @@ -237,7 +239,7 @@ int GlobalReceiver::addSlot(const char* slot, PyObject* callback) { int slotId = m_metaObject.addSlot(slot); if (!m_slotReceivers.contains(slotId)) - m_slotReceivers[slotId] = new DynamicSlotData(slotId, callback, this); + m_slotReceivers.insert(slotId, new DynamicSlotData(slotId, callback, this)); bool isShortCircuit = true; for (int i = 0; slot[i]; ++i) { @@ -256,8 +258,10 @@ int GlobalReceiver::addSlot(const char* slot, PyObject* callback) void GlobalReceiver::removeSlot(int slotId) { - if (m_slotReceivers.contains(slotId)) { - delete m_slotReceivers.take(slotId); + auto it = m_slotReceivers.find(slotId); + if (it != m_slotReceivers.end()) { + delete it.value(); + m_slotReceivers.erase(it); m_metaObject.removeSlot(slotId); m_shortCircuitSlots.remove(slotId); } |