diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-09-15 18:03:04 +0300 |
---|---|---|
committer | Ivo van Dongen <ivovandongen@users.noreply.github.com> | 2017-09-22 23:33:56 +0300 |
commit | bda6ed26c65b541b0633fcdf824f2baef30aa0cc (patch) | |
tree | 22f4e3ca1356d5f92bfcc79c8d359925eac1897d /src/mbgl/renderer/layers | |
parent | 67285f3a95f74966324fc59f271ba8b6b763b2b5 (diff) | |
download | qtlocation-mapboxgl-bda6ed26c65b541b0633fcdf824f2baef30aa0cc.tar.gz |
[core] send signal to RenderCustomLayer when gl context has been lost
- Prevents cleaning up of GL resources that no longer exist, resulting in a crash
Diffstat (limited to 'src/mbgl/renderer/layers')
-rw-r--r-- | src/mbgl/renderer/layers/render_custom_layer.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/renderer/layers/render_custom_layer.hpp | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/mbgl/renderer/layers/render_custom_layer.cpp b/src/mbgl/renderer/layers/render_custom_layer.cpp index ae0c4b026b..3d19f5ef46 100644 --- a/src/mbgl/renderer/layers/render_custom_layer.cpp +++ b/src/mbgl/renderer/layers/render_custom_layer.cpp @@ -16,7 +16,7 @@ RenderCustomLayer::RenderCustomLayer(Immutable<style::CustomLayer::Impl> _impl) RenderCustomLayer::~RenderCustomLayer() { assert(BackendScope::exists()); - if (initialized && impl().deinitializeFn) { + if (initialized && !contextDestroyed && impl().deinitializeFn) { impl().deinitializeFn(impl().context); } } diff --git a/src/mbgl/renderer/layers/render_custom_layer.hpp b/src/mbgl/renderer/layers/render_custom_layer.hpp index d8e9d93811..32ed9da8da 100644 --- a/src/mbgl/renderer/layers/render_custom_layer.hpp +++ b/src/mbgl/renderer/layers/render_custom_layer.hpp @@ -19,8 +19,13 @@ public: const style::CustomLayer::Impl& impl() const; + void markContextDestroyed() { + contextDestroyed = true; + }; + private: bool initialized = false; + bool contextDestroyed = false; }; template <> |