mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 21:40:05 +00:00
Fix boost::containers::stable_vector memory leak in MapWidget by local variable
This commit is contained in:
parent
0fff5f9e4d
commit
61ac1e5612
1 changed files with 8 additions and 10 deletions
|
|
@ -1,3 +1,4 @@
|
||||||
|
#include <ranges>
|
||||||
#include <scwx/qt/map/map_widget.hpp>
|
#include <scwx/qt/map/map_widget.hpp>
|
||||||
#include <scwx/qt/gl/gl.hpp>
|
#include <scwx/qt/gl/gl.hpp>
|
||||||
#include <scwx/qt/manager/font_manager.hpp>
|
#include <scwx/qt/manager/font_manager.hpp>
|
||||||
|
|
@ -204,8 +205,7 @@ public:
|
||||||
const std::vector<MapStyle> emptyStyles_ {};
|
const std::vector<MapStyle> emptyStyles_ {};
|
||||||
std::vector<MapStyle> customStyles_ {
|
std::vector<MapStyle> customStyles_ {
|
||||||
MapStyle {.name_ {"Custom"}, .url_ {}, .drawBelow_ {}}};
|
MapStyle {.name_ {"Custom"}, .url_ {}, .drawBelow_ {}}};
|
||||||
QStringList styleLayers_;
|
QStringList styleLayers_;
|
||||||
types::LayerVector customLayers_;
|
|
||||||
|
|
||||||
boost::uuids::uuid customStyleUrlChangedCallbackId_ {};
|
boost::uuids::uuid customStyleUrlChangedCallbackId_ {};
|
||||||
boost::uuids::uuid customStyleDrawBelowChangedCallbackId_ {};
|
boost::uuids::uuid customStyleDrawBelowChangedCallbackId_ {};
|
||||||
|
|
@ -1185,22 +1185,20 @@ void MapWidgetImpl::AddLayers()
|
||||||
layerList_.clear();
|
layerList_.clear();
|
||||||
genericLayers_.clear();
|
genericLayers_.clear();
|
||||||
placefileLayers_.clear();
|
placefileLayers_.clear();
|
||||||
customLayers_.clear();
|
|
||||||
customLayers_.shrink_to_fit();
|
|
||||||
|
|
||||||
// Update custom layer list from model
|
// Update custom layer list from model
|
||||||
customLayers_ = model::LayerModel::Instance()->GetLayers();
|
types::LayerVector customLayers = model::LayerModel::Instance()->GetLayers();
|
||||||
|
|
||||||
// Start by drawing layers before any style-defined layers
|
// Start by drawing layers before any style-defined layers
|
||||||
std::string before = styleLayers_.front().toStdString();
|
std::string before = styleLayers_.front().toStdString();
|
||||||
|
|
||||||
// Loop through each custom layer in reverse order
|
// Loop through each custom layer in reverse order
|
||||||
for (auto it = customLayers_.crbegin(); it != customLayers_.crend(); ++it)
|
for (const auto & customLayer : std::ranges::reverse_view(customLayers))
|
||||||
{
|
{
|
||||||
if (it->type_ == types::LayerType::Map)
|
if (customLayer.type_ == types::LayerType::Map)
|
||||||
{
|
{
|
||||||
// Style-defined map layers
|
// Style-defined map layers
|
||||||
switch (std::get<types::MapLayer>(it->description_))
|
switch (std::get<types::MapLayer>(customLayer.description_))
|
||||||
{
|
{
|
||||||
// Subsequent layers are drawn underneath the map symbology layer
|
// Subsequent layers are drawn underneath the map symbology layer
|
||||||
case types::MapLayer::MapUnderlay:
|
case types::MapLayer::MapUnderlay:
|
||||||
|
|
@ -1216,10 +1214,10 @@ void MapWidgetImpl::AddLayers()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (it->displayed_[id_])
|
else if (customLayer.displayed_[id_])
|
||||||
{
|
{
|
||||||
// If the layer is displayed for the current map, add it
|
// If the layer is displayed for the current map, add it
|
||||||
AddLayer(it->type_, it->description_, before);
|
AddLayer(customLayer.type_, customLayer.description_, before);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue