summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Morris <michael.patrick.morris@gmail.com>2014-09-10 18:53:20 -0400
committerMike Morris <michael.patrick.morris@gmail.com>2014-09-10 18:53:20 -0400
commit15564b81a37e097b52d1751b99dc91d36d37d66e (patch)
tree521a1949a89e55e6dbfb0dd7080e5bcdab1aac95 /src
parent4316d2c40585e3d0dcdb25fa6f2341531025e20e (diff)
parent7a4c914d05cab81ca55ac3cde478997c6d32477e (diff)
downloadqtlocation-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.cpp7
-rw-r--r--src/renderer/painter.cpp19
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()) {