]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/part.cpp
Improve widget part caching
[libs/gltk.git] / source / part.cpp
index f0ee4b920a226bd2108bd946523ae92cf4550447..7c98545c87a49ea5442b88a4463bfaf1c18c620b 100644 (file)
@@ -23,20 +23,14 @@ const Graphic *Part::get_graphic(State state) const
        return graphic[state];
 }
 
-void Part::build(const Geometry &parent, State state, CachedPart &cache) const
+void Part::build(const Geometry &parent, State state, PartCache &cache) const
 {
-       if(!graphic[state])
-       {
-               cache.texture = 0;
+       if(!graphic[state] || !graphic[state]->get_texture())
                return;
-       }
-
-       cache.texture = graphic[state]->get_texture();
-       cache.clear_mesh();
 
        Geometry rgeom = geom;
        align.apply(rgeom, parent, margin);
-       GL::MeshBuilder bld(*cache.mesh);
+       GL::MeshBuilder bld(cache.create_mesh(*this, *graphic[state]->get_texture()));
        bld.matrix() *= GL::Matrix::translation(rgeom.x, rgeom.y, 0);
        graphic[state]->build(rgeom.w, rgeom.h, bld);
 }