diff options
author | Mike Morris <michael.patrick.morris@gmail.com> | 2014-09-10 18:53:20 -0400 |
---|---|---|
committer | Mike Morris <michael.patrick.morris@gmail.com> | 2014-09-10 18:53:20 -0400 |
commit | 15564b81a37e097b52d1751b99dc91d36d37d66e (patch) | |
tree | 521a1949a89e55e6dbfb0dd7080e5bcdab1aac95 /src | |
parent | 4316d2c40585e3d0dcdb25fa6f2341531025e20e (diff) | |
parent | 7a4c914d05cab81ca55ac3cde478997c6d32477e (diff) | |
download | qtlocation-mapboxgl-15564b81a37e097b52d1751b99dc91d36d37d66e.tar.gz |
Merge branch 'fix-context-shutdown-merge' into libuv-0.10-fix-context-shutdown
Conflicts:
src/map/map.cpp
Diffstat (limited to 'src')
-rw-r--r-- | src/map/map.cpp | 7 | ||||
-rw-r--r-- | src/renderer/painter.cpp | 19 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/map/map.cpp b/src/map/map.cpp index 1399b97ee2..6da514d163 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -114,6 +114,8 @@ void Map::run() { prepare(); render(); } + + view.make_inactive(); } void Map::rerender() { @@ -151,6 +153,11 @@ void Map::cleanup(uv_async_t *async, int status) { map->painter.cleanup(); } +void Map::terminate() { + view.make_active(); + painter.terminate(); +} + void Map::render(uv_async_t *async, int status) { Map *map = static_cast<Map *>(async->data); diff --git a/src/renderer/painter.cpp b/src/renderer/painter.cpp index c1705cd7cf..b1522a56b5 100644 --- a/src/renderer/painter.cpp +++ b/src/renderer/painter.cpp @@ -82,9 +82,28 @@ void Painter::setupShaders() { if (!gaussianShader) gaussianShader = std::make_unique<GaussianShader>(); } +void Painter::deleteShaders() { + plainShader = nullptr; + outlineShader = nullptr; + lineShader = nullptr; + linejoinShader = nullptr; + patternShader = nullptr; + iconShader = nullptr; + rasterShader = nullptr; + textShader = nullptr; + dotShader = nullptr; + compositeShader = nullptr; + gaussianShader = nullptr; +} + void Painter::cleanup() { } +void Painter::terminate() { + cleanup(); + deleteShaders(); +} + void Painter::resize() { const TransformState &state = map.getState(); if (gl_viewport != state.getFramebufferDimensions()) { |