summaryrefslogtreecommitdiff
path: root/src/mbgl/gl/gl_object_store.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/gl/gl_object_store.hpp')
-rw-r--r--src/mbgl/gl/gl_object_store.hpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/mbgl/gl/gl_object_store.hpp b/src/mbgl/gl/gl_object_store.hpp
index be25728660..6c7f3c92f2 100644
--- a/src/mbgl/gl/gl_object_store.hpp
+++ b/src/mbgl/gl/gl_object_store.hpp
@@ -36,6 +36,21 @@ public:
void reset();
};
+class ShaderHolder : public GLHolder {
+public:
+ ShaderHolder(GLenum type_) : type(type_) {}
+ ~ShaderHolder() { reset(); }
+
+ ShaderHolder(ShaderHolder&& o) noexcept : GLHolder(std::move(o)), type(o.type) {}
+ ShaderHolder& operator=(ShaderHolder&& o) noexcept { GLHolder::operator=(std::move(o)); type = o.type; return *this; }
+
+ void create();
+ void reset();
+
+private:
+ GLenum type = 0;
+};
+
class GLObjectStore : private util::noncopyable {
public:
// Mark OpenGL objects for deletion