summaryrefslogtreecommitdiff
path: root/include/mbgl
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-08-27 12:08:21 +0200
committerKonstantin Käfer <mail@kkaefer.com>2014-08-27 12:08:21 +0200
commitc3cb4582250fc9f6bc125cfa11729a502b7d7a04 (patch)
tree5e14e4559629a58c14d160fdf8dd57e454016e36 /include/mbgl
parent67629d7f869e603517bd7c97c2fb8ff21dd57bc6 (diff)
downloadqtlocation-mapboxgl-c3cb4582250fc9f6bc125cfa11729a502b7d7a04.tar.gz
make ElementGroup and VertexArrayObject movable to avoid using unique_ptrs
Diffstat (limited to 'include/mbgl')
-rw-r--r--include/mbgl/geometry/elements_buffer.hpp5
-rw-r--r--include/mbgl/geometry/vao.hpp10
-rw-r--r--include/mbgl/renderer/fill_bucket.hpp4
-rw-r--r--include/mbgl/renderer/line_bucket.hpp4
-rw-r--r--include/mbgl/renderer/symbol_bucket.hpp4
5 files changed, 21 insertions, 6 deletions
diff --git a/include/mbgl/geometry/elements_buffer.hpp b/include/mbgl/geometry/elements_buffer.hpp
index 44b5c71dd2..56080e29fe 100644
--- a/include/mbgl/geometry/elements_buffer.hpp
+++ b/include/mbgl/geometry/elements_buffer.hpp
@@ -20,6 +20,11 @@ struct ElementGroup : public util::noncopyable {
: vertex_length(vertex_length),
elements_length(elements_length) {
}
+
+ ElementGroup(ElementGroup &&rhs) noexcept
+ : array(std::move(rhs.array)),
+ vertex_length(rhs.vertex_length),
+ elements_length(rhs.elements_length) {};
};
class TriangleElementsBuffer : public Buffer<
diff --git a/include/mbgl/geometry/vao.hpp b/include/mbgl/geometry/vao.hpp
index 3d32ed28a8..bb1f571fff 100644
--- a/include/mbgl/geometry/vao.hpp
+++ b/include/mbgl/geometry/vao.hpp
@@ -12,6 +12,16 @@ namespace mbgl {
#if GL_ARB_vertex_array_object
class VertexArrayObject : public util::noncopyable {
public:
+ inline VertexArrayObject() {};
+
+ inline VertexArrayObject(VertexArrayObject &&rhs) noexcept
+ : vao(rhs.vao),
+ bound_shader(rhs.bound_shader),
+ bound_shader_name(rhs.bound_shader_name),
+ bound_vertex_buffer(rhs.bound_vertex_buffer),
+ bound_elements_buffer(rhs.bound_elements_buffer),
+ bound_offset(rhs.bound_offset) {};
+
template <typename Shader, typename VertexBuffer>
inline void bind(Shader& shader, VertexBuffer &vertexBuffer, char *offset) {
bindVertexArrayObject();
diff --git a/include/mbgl/renderer/fill_bucket.hpp b/include/mbgl/renderer/fill_bucket.hpp
index 0cd756318c..15868e4092 100644
--- a/include/mbgl/renderer/fill_bucket.hpp
+++ b/include/mbgl/renderer/fill_bucket.hpp
@@ -34,8 +34,8 @@ class FillBucket : public Bucket {
static void *realloc(void *data, void *ptr, unsigned int size);
static void free(void *userData, void *ptr);
- typedef std::unique_ptr<ElementGroup<2>> triangle_group_type;
- typedef std::unique_ptr<ElementGroup<1>> line_group_type;
+ typedef ElementGroup<2> triangle_group_type;
+ typedef ElementGroup<1> line_group_type;
public:
FillBucket(FillVertexBuffer& vertexBuffer,
diff --git a/include/mbgl/renderer/line_bucket.hpp b/include/mbgl/renderer/line_bucket.hpp
index 55fe8c4862..c7e375a0a1 100644
--- a/include/mbgl/renderer/line_bucket.hpp
+++ b/include/mbgl/renderer/line_bucket.hpp
@@ -20,8 +20,8 @@ class LinejoinShader;
struct pbf;
class LineBucket : public Bucket {
- typedef std::unique_ptr<ElementGroup<1>> triangle_group_type;
- typedef std::unique_ptr<ElementGroup<1>> point_group_type;
+ typedef ElementGroup<1> triangle_group_type;
+ typedef ElementGroup<1> point_group_type;
public:
LineBucket(LineVertexBuffer& vertexBuffer,
diff --git a/include/mbgl/renderer/symbol_bucket.hpp b/include/mbgl/renderer/symbol_bucket.hpp
index fccb2924da..fb1678fc8b 100644
--- a/include/mbgl/renderer/symbol_bucket.hpp
+++ b/include/mbgl/renderer/symbol_bucket.hpp
@@ -50,8 +50,8 @@ typedef std::vector<Symbol> Symbols;
class SymbolBucket : public Bucket {
- typedef std::unique_ptr<ElementGroup<1>> TextElementGroup;
- typedef std::unique_ptr<ElementGroup<1>> IconElementGroup;
+ typedef ElementGroup<1> TextElementGroup;
+ typedef ElementGroup<1> IconElementGroup;
public:
SymbolBucket(const StyleBucketSymbol &properties, Collision &collision);