summaryrefslogtreecommitdiff
path: root/src/mbgl/gl/object_store.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/gl/object_store.cpp')
-rw-r--r--src/mbgl/gl/object_store.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mbgl/gl/object_store.cpp b/src/mbgl/gl/object_store.cpp
index 4139854f61..9ddbaa7c8c 100644
--- a/src/mbgl/gl/object_store.cpp
+++ b/src/mbgl/gl/object_store.cpp
@@ -34,6 +34,11 @@ void VAODeleter::operator()(GLuint id) const {
store->abandonedVAOs.push_back(id);
}
+void FBODeleter::operator()(GLuint id) const {
+ assert(store);
+ store->abandonedFBOs.push_back(id);
+}
+
ObjectStore::~ObjectStore() {
assert(pooledTextures.empty());
assert(abandonedPrograms.empty());
@@ -41,6 +46,7 @@ ObjectStore::~ObjectStore() {
assert(abandonedBuffers.empty());
assert(abandonedTextures.empty());
assert(abandonedVAOs.empty());
+ assert(abandonedFBOs.empty());
}
void ObjectStore::reset() {
@@ -74,6 +80,11 @@ void ObjectStore::performCleanup() {
MBGL_CHECK_ERROR(gl::DeleteVertexArrays(int(abandonedVAOs.size()), abandonedVAOs.data()));
abandonedVAOs.clear();
}
+
+ if (!abandonedFBOs.empty()) {
+ MBGL_CHECK_ERROR(glDeleteFramebuffers(int(abandonedFBOs.size()), abandonedFBOs.data()));
+ abandonedFBOs.clear();
+ }
}
} // namespace gl