summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2015-09-15 17:48:07 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-09-16 10:04:23 -0700
commitd83be119472704973697b089321b14ce33cd9956 (patch)
tree88d7f21384978244dd4bfaec567eb20e0963c5ad /src
parent620e554f677d05edd0a588b56f343435516c05a8 (diff)
downloadqtlocation-mapboxgl-d83be119472704973697b089321b14ce33cd9956.tar.gz
Don't leak GlyphAtlas textures (fixes #2338)
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/geometry/glyph_atlas.cpp11
-rw-r--r--src/mbgl/geometry/glyph_atlas.hpp1
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,