]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/partcache.h
Rework how widget ownership works in Container
[libs/gltk.git] / source / partcache.h
index 8099676f95d177ecc3855bf00006db2a3aa11263..a10efdd084e2a9b5c463fd3ac555886635bb7c36 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_GLTK_PARTCACHE_H_
 #define MSP_GLTK_PARTCACHE_H_
 
+#include <memory>
 #include <msp/gl/mesh.h>
 #include <msp/gl/texture2d.h>
 #include "mspgltk_api.h"
@@ -14,12 +15,7 @@ struct CachedPart
 {
        const Part *part = nullptr;
        const GL::Texture2D *texture = nullptr;
-       GL::Mesh *mesh = nullptr;
-
-       CachedPart() = default;
-       CachedPart(CachedPart &&);
-       CachedPart &operator=(CachedPart &&);
-       ~CachedPart();
+       std::unique_ptr<GL::Mesh> mesh;
 };
 
 class MSPGLTK_API PartCache
@@ -35,13 +31,11 @@ public:
                ~Rebuild() { cache.end_rebuild(); }
        };
 
-       typedef std::list<CachedPart> PartList;
-
 private:
        bool rebuilding = false;
-       PartList parts;
-       PartList::iterator next;
-       PartList::iterator current;
+       std::vector<CachedPart> parts;
+       std::vector<CachedPart>::iterator next;
+       std::vector<CachedPart>::iterator current;
 
 public:
        void begin_rebuild();
@@ -49,7 +43,7 @@ public:
        GL::Mesh &create_mesh(const Part &, const GL::Texture2D &);
        void end_rebuild();
 
-       const PartList &get_parts() const { return parts; }
+       const std::vector<CachedPart> &get_parts() const { return parts; }
 };
 
 } // namespace GLtk