]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/partcache.cpp
Rework how widget ownership works in Container
[libs/gltk.git] / source / partcache.cpp
index 3b944572a45abb8874b06a7f4313e569fab123dd..560db298e8edca248b42c32bbc0926f370b70e68 100644 (file)
@@ -6,22 +6,6 @@ using namespace std;
 namespace Msp {
 namespace GLtk {
 
-CachedPart::CachedPart():
-       part(0),
-       texture(0),
-       mesh(0)
-{ }
-
-CachedPart::~CachedPart()
-{
-       delete mesh;
-}
-
-
-PartCache::PartCache():
-       rebuilding(false)
-{ }
-
 void PartCache::begin_rebuild()
 {
        if(rebuilding)
@@ -39,12 +23,9 @@ void PartCache::insert_special(const Part &part)
        if(!rebuilding)
                throw logic_error("!rebuilding");
 
-       for(current=next; current!=parts.end(); ++current)
-               if(current->part==&part)
-               {
-                       parts.erase(next, current);
-                       break;
-               }
+       current = find_if(next, parts.end(), [&part](const CachedPart &p){ return p.part==∂ });
+       if(current!=parts.end())
+               parts.erase(next, current);
 
        if(current==parts.end())
                current = parts.insert(next, CachedPart());
@@ -75,7 +56,7 @@ GL::Mesh &PartCache::create_mesh(const Part &part, const GL::Texture2D &tex)
        {
                current = parts.insert(next, CachedPart());
                current->texture = &tex;
-               current->mesh = new GL::Mesh((GL::TEXCOORD2, GL::COLOR4,GL::UNSIGNED_BYTE, GL::VERTEX2));
+               current->mesh = make_unique<GL::Mesh>((GL::TEXCOORD2, GL::COLOR4,GL::UNSIGNED_BYTE, GL::VERTEX2));
        }
        else
                current->mesh->clear();