diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2015-09-15 17:48:07 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2015-09-16 10:04:23 -0700 |
commit | d83be119472704973697b089321b14ce33cd9956 (patch) | |
tree | 88d7f21384978244dd4bfaec567eb20e0963c5ad /src | |
parent | 620e554f677d05edd0a588b56f343435516c05a8 (diff) | |
download | qtlocation-mapboxgl-d83be119472704973697b089321b14ce33cd9956.tar.gz |
Don't leak GlyphAtlas textures (fixes #2338)
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/geometry/glyph_atlas.cpp | 11 | ||||
-rw-r--r-- | src/mbgl/geometry/glyph_atlas.hpp | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/mbgl/geometry/glyph_atlas.cpp b/src/mbgl/geometry/glyph_atlas.cpp index 43ea585531..b90444e582 100644 --- a/src/mbgl/geometry/glyph_atlas.cpp +++ b/src/mbgl/geometry/glyph_atlas.cpp @@ -5,6 +5,8 @@ #include <mbgl/platform/gl.hpp> #include <mbgl/platform/log.hpp> #include <mbgl/platform/platform.hpp> +#include <mbgl/util/gl_object_store.hpp> +#include <mbgl/util/thread_context.hpp> #include <cassert> #include <algorithm> @@ -20,6 +22,15 @@ GlyphAtlas::GlyphAtlas(uint16_t width_, uint16_t height_) dirty(true) { } +GlyphAtlas::~GlyphAtlas() { + assert(util::ThreadContext::currentlyOn(util::ThreadType::Map)); + + if (texture) { + mbgl::util::ThreadContext::getGLObjectStore()->abandonTexture(texture); + texture = 0; + } +} + void GlyphAtlas::addGlyphs(uintptr_t tileUID, const std::u32string& text, const std::string& stackName, diff --git a/src/mbgl/geometry/glyph_atlas.hpp b/src/mbgl/geometry/glyph_atlas.hpp index c5c785994d..1205301835 100644 --- a/src/mbgl/geometry/glyph_atlas.hpp +++ b/src/mbgl/geometry/glyph_atlas.hpp @@ -17,6 +17,7 @@ namespace mbgl { class GlyphAtlas : public util::noncopyable { public: GlyphAtlas(uint16_t width, uint16_t height); + ~GlyphAtlas(); void addGlyphs(uintptr_t tileUID, const std::u32string& text, |