summaryrefslogtreecommitdiff
path: root/src/mbgl/sprite
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2016-05-27 18:33:32 +0300
committerBruno de Oliveira Abinader <bruno@mapbox.com>2016-06-01 13:53:39 +0300
commit1b0683b94c070d14bc9f2cf357e551cdbbf3043a (patch)
treeef8557e284a9a0edb860a49ce3565b7bf622de2d /src/mbgl/sprite
parent2038a21cb5d67890acafbd34bc55e365ed0043fe (diff)
downloadqtlocation-mapboxgl-1b0683b94c070d14bc9f2cf357e551cdbbf3043a.tar.gz
[core] Use unique_resource for GL objects
Source: https://github.com/okdshin/unique_resource These replace the complexity of manually handling moveable-RAII objects with a type specific for that purpose. As suggested in https://github.com/mapbox/mapbox-gl-native/pull/5141#issuecomment-221719872.
Diffstat (limited to 'src/mbgl/sprite')
-rw-r--r--src/mbgl/sprite/sprite_atlas.cpp14
-rw-r--r--src/mbgl/sprite/sprite_atlas.hpp2
2 files changed, 8 insertions, 8 deletions
diff --git a/src/mbgl/sprite/sprite_atlas.cpp b/src/mbgl/sprite/sprite_atlas.cpp
index d4d462b339..5d7d01deb3 100644
--- a/src/mbgl/sprite/sprite_atlas.cpp
+++ b/src/mbgl/sprite/sprite_atlas.cpp
@@ -142,9 +142,9 @@ void SpriteAtlas::copy(const Holder& holder, const bool wrap) {
dirty = true;
}
-void SpriteAtlas::upload(gl::ObjectStore& store) {
+void SpriteAtlas::upload(gl::ObjectStore& objectStore) {
if (dirty) {
- bind(false, store);
+ bind(false, objectStore);
}
}
@@ -179,14 +179,14 @@ void SpriteAtlas::updateDirty() {
}
}
-void SpriteAtlas::bind(bool linear, gl::ObjectStore& store) {
+void SpriteAtlas::bind(bool linear, gl::ObjectStore& objectStore) {
if (!data) {
return; // Empty atlas
}
- if (!texture.created()) {
- texture.create(store);
- MBGL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, texture.getID()));
+ if (!texture) {
+ texture = objectStore.createTexture();
+ MBGL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, *texture));
#ifndef GL_ES_VERSION_2_0
MBGL_CHECK_ERROR(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0));
#endif
@@ -196,7 +196,7 @@ void SpriteAtlas::bind(bool linear, gl::ObjectStore& store) {
MBGL_CHECK_ERROR(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE));
fullUploadRequired = true;
} else {
- MBGL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, texture.getID()));
+ MBGL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, *texture));
}
GLuint filter_val = linear ? GL_LINEAR : GL_NEAREST;
diff --git a/src/mbgl/sprite/sprite_atlas.hpp b/src/mbgl/sprite/sprite_atlas.hpp
index 6bbdee190d..249b863c92 100644
--- a/src/mbgl/sprite/sprite_atlas.hpp
+++ b/src/mbgl/sprite/sprite_atlas.hpp
@@ -94,7 +94,7 @@ private:
std::unique_ptr<uint32_t[]> data;
std::atomic<bool> dirty;
bool fullUploadRequired = true;
- gl::TextureHolder texture;
+ mbgl::optional<gl::UniqueTexture> texture;
uint32_t filter = 0;
static const int buffer = 1;
};