don't use remove_if since it can't be used on associative

This commit is contained in:
Stephen Birarda 2015-08-26 14:43:09 -07:00
parent 4039c2e3e0
commit d3b19f36fd

View file

@ -200,7 +200,7 @@ void PacketReceiver::registerVerifiedListener(PacketType type, QObject* object,
qCWarning(networking) << "Registering a packet listener for packet type" << type qCWarning(networking) << "Registering a packet listener for packet type" << type
<< "that will remove a previously registered listener"; << "that will remove a previously registered listener";
} }
// add the mapping // add the mapping
_packetListenerMap[type] = ObjectMethodPair(QPointer<QObject>(object), slot); _packetListenerMap[type] = ObjectMethodPair(QPointer<QObject>(object), slot);
} }
@ -210,10 +210,17 @@ void PacketReceiver::unregisterListener(QObject* listener) {
{ {
QMutexLocker packetListenerLocker(&_packetListenerLock); QMutexLocker packetListenerLocker(&_packetListenerLock);
std::remove_if(std::begin(_packetListenerMap), std::end(_packetListenerMap),
[&listener](const ObjectMethodPair& pair) { // clear any registrations for this listener
return pair.first == listener; auto it = _packetListenerMap.begin();
});
while (it != _packetListenerMap.end()) {
if (it->first == listener) {
it = _packetListenerMap.erase(it);
}
++it;
}
} }
QMutexLocker directConnectSetLocker(&_directConnectSetMutex); QMutexLocker directConnectSetLocker(&_directConnectSetMutex);