From 3c4b74cd14a686dd0bfa9b4c4f29896330f54a25 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Sun, 30 Oct 2016 16:39:59 +0200 Subject: [PATCH] Fix frame listener errors for player markers --- apps/openmw/mwmp/DedicatedPlayer.cpp | 2 +- apps/openmw/mwmp/PlayerMarkerCollection.cpp | 12 ++++++++++-- apps/openmw/mwmp/PlayerMarkerCollection.hpp | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwmp/DedicatedPlayer.cpp b/apps/openmw/mwmp/DedicatedPlayer.cpp index df0cca045..0c2c6e2c3 100644 --- a/apps/openmw/mwmp/DedicatedPlayer.cpp +++ b/apps/openmw/mwmp/DedicatedPlayer.cpp @@ -468,7 +468,7 @@ void DedicatedPlayer::updateMarker() GUIController *gui = Main::get().getGUIController(); - if (gui->mPlayerMarkers.isExistent(marker)) + if (gui->mPlayerMarkers.contains(marker)) { gui->mPlayerMarkers.deleteMarker(marker); marker = gui->CreateMarker(guid); diff --git a/apps/openmw/mwmp/PlayerMarkerCollection.cpp b/apps/openmw/mwmp/PlayerMarkerCollection.cpp index 815dd4c65..f0aa602b1 100644 --- a/apps/openmw/mwmp/PlayerMarkerCollection.cpp +++ b/apps/openmw/mwmp/PlayerMarkerCollection.cpp @@ -73,7 +73,15 @@ size_t PlayerMarkerCollection::size() const return mMarkers.size(); } -bool PlayerMarkerCollection::isExistent(const ESM::CustomMarker &marker) +bool PlayerMarkerCollection::contains(const ESM::CustomMarker &marker) { - return mMarkers.find(marker.mCell) != mMarkers.end(); + std::pair range = mMarkers.equal_range(marker.mCell); + + for (ContainerType::iterator it = range.first; it != range.second; ++it) + { + if (it->second == marker) + return true; + } + + return false; } diff --git a/apps/openmw/mwmp/PlayerMarkerCollection.hpp b/apps/openmw/mwmp/PlayerMarkerCollection.hpp index bba976975..de17062d5 100644 --- a/apps/openmw/mwmp/PlayerMarkerCollection.hpp +++ b/apps/openmw/mwmp/PlayerMarkerCollection.hpp @@ -39,7 +39,7 @@ namespace mwmp typedef MyGUI::delegates::CMultiDelegate0 EventHandle_Void; EventHandle_Void eventMarkersChanged; - bool isExistent(const ESM::CustomMarker &marker); + bool contains(const ESM::CustomMarker &marker); private: ContainerType mMarkers; };