summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLStyleLayer.mm.ejs
diff options
context:
space:
mode:
authorJesse Bounds <jesse@rebounds.net>2017-02-14 13:09:49 -0800
committerJesse Bounds <jesse@rebounds.net>2017-02-23 15:07:43 -0800
commite860fa6f0a71805dafd03a1ac02980369b799f9e (patch)
tree812de69002c34a728a6b4a2beddcff5a28542702 /platform/darwin/src/MGLStyleLayer.mm.ejs
parent76b3825360843f3270549a02aca96f9f11892aa1 (diff)
downloadqtlocation-mapboxgl-e860fa6f0a71805dafd03a1ac02980369b799f9e.tar.gz
[ios, macos] Recreate pending and raw layer ref when layer is removed
Diffstat (limited to 'platform/darwin/src/MGLStyleLayer.mm.ejs')
-rw-r--r--platform/darwin/src/MGLStyleLayer.mm.ejs10
1 files changed, 7 insertions, 3 deletions
diff --git a/platform/darwin/src/MGLStyleLayer.mm.ejs b/platform/darwin/src/MGLStyleLayer.mm.ejs
index 4cdec72aa4..7f44a7b4ae 100644
--- a/platform/darwin/src/MGLStyleLayer.mm.ejs
+++ b/platform/darwin/src/MGLStyleLayer.mm.ejs
@@ -150,13 +150,17 @@ namespace mbgl {
- (void)removeFromMapView:(MGLMapView *)mapView
{
- _pendingLayer = nullptr;
- self.rawLayer = nullptr;
-
auto removedLayer = mapView.mbglMap->removeLayer(self.identifier.UTF8String);
if (!removedLayer) {
return;
}
+<% if (type == 'background') { -%>
+ auto originalLayer = std::make_unique<mbgl::style::<%- camelize(type) %>Layer>(self.identifier.UTF8String);
+<% } else { -%>
+ auto originalLayer = std::make_unique<mbgl::style::<%- camelize(type) %>Layer>(self.identifier.UTF8String, self.sourceIdentifier.UTF8String);
+<% } -%>
+ _pendingLayer = std::move(originalLayer);
+ self.rawLayer = _pendingLayer.get();
mbgl::style::<%- camelize(type) %>Layer *layer = dynamic_cast<mbgl::style::<%- camelize(type) %>Layer *>(removedLayer.get());
if (!layer) {