#include #include #include #include namespace mbgl { namespace util { void GLObjectStore::abandonVAO(GLuint vao) { assert(ThreadContext::currentlyOn(ThreadType::Map)); abandonedVAOs.emplace_back(vao); } void GLObjectStore::abandonBuffer(GLuint buffer) { assert(ThreadContext::currentlyOn(ThreadType::Map)); abandonedBuffers.emplace_back(buffer); } void GLObjectStore::abandonTexture(GLuint texture) { assert(ThreadContext::currentlyOn(ThreadType::Map)); abandonedTextures.emplace_back(texture); } void GLObjectStore::performCleanup() { assert(ThreadContext::currentlyOn(ThreadType::Map)); if (!abandonedVAOs.empty()) { MBGL_CHECK_ERROR(VertexArrayObject::Delete(static_cast(abandonedVAOs.size()), abandonedVAOs.data())); abandonedVAOs.clear(); } if (!abandonedTextures.empty()) { MBGL_CHECK_ERROR(glDeleteTextures(static_cast(abandonedTextures.size()), abandonedTextures.data())); abandonedTextures.clear(); } if (!abandonedBuffers.empty()) { MBGL_CHECK_ERROR(glDeleteBuffers(static_cast(abandonedBuffers.size()), abandonedBuffers.data())); abandonedBuffers.clear(); } } } }