]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android/external-libkmsxx.git/blobdiff - libkms++/card.cpp
card: use vectors with get_xxxs() methods
[android/external-libkmsxx.git] / libkms++ / card.cpp
index 34dbc3253a0a65417477c6c468035d523e22cf2c..038d494ee7d7c653e124c6d11530a920ec66f9d9 100644 (file)
@@ -60,17 +60,23 @@ Card::Card()
 
        for (int i = 0; i < res->count_connectors; ++i) {
                uint32_t id = res->connectors[i];
-               m_obmap[id] = new Connector(*this, id, i);
+               auto ob = new Connector(*this, id, i);
+               m_obmap[id] = ob;
+               m_connectors.push_back(ob);
        }
 
        for (int i = 0; i < res->count_crtcs; ++i) {
                uint32_t id = res->crtcs[i];
-               m_obmap[id] = new Crtc(*this, id, i);
+               auto ob = new Crtc(*this, id, i);
+               m_obmap[id] = ob;
+               m_crtcs.push_back(ob);
        }
 
        for (int i = 0; i < res->count_encoders; ++i) {
                uint32_t id = res->encoders[i];
-               m_obmap[id] = new Encoder(*this, id);
+               auto ob = new Encoder(*this, id);
+               m_obmap[id] = ob;
+               m_encoders.push_back(ob);
        }
 
        drmModeFreeResources(res);
@@ -79,7 +85,9 @@ Card::Card()
 
        for (uint i = 0; i < planeRes->count_planes; ++i) {
                uint32_t id = planeRes->planes[i];
-               m_obmap[id] = new Plane(*this, id);
+               auto ob = new Plane(*this, id);
+               m_obmap[id] = ob;
+               m_planes.push_back(ob);
        }
 
        drmModeFreePlaneResources(planeRes);
@@ -94,8 +102,11 @@ Card::Card()
                for (unsigned i = 0; i < props->count_props; ++i) {
                        uint32_t prop_id = props->props[i];
 
-                       if (m_obmap.find(prop_id) == m_obmap.end())
-                               m_obmap[prop_id] = new Property(*this, prop_id);
+                       if (m_obmap.find(prop_id) == m_obmap.end()) {
+                               auto ob = new Property(*this, prop_id);
+                               m_obmap[prop_id] = ob;
+                               m_properties.push_back(ob);
+                       }
                }
 
                drmModeFreeObjectProperties(props);
@@ -171,40 +182,7 @@ DrmObject* Card::get_object(uint32_t id) const
        return m_obmap.at(id);
 }
 
-vector<Connector*> Card::get_connectors() const
-{
-       vector<Connector*> v;
-       for(auto pair : m_obmap) {
-               auto p = dynamic_cast<Connector*>(pair.second);
-               if (p)
-                       v.push_back(p);
-       }
-       return v;
-}
-
-vector<Crtc*> Card::get_crtcs() const
-{
-       vector<Crtc*> v;
-       for(auto pair : m_obmap) {
-               auto p = dynamic_cast<Crtc*>(pair.second);
-               if (p)
-                       v.push_back(p);
-       }
-       return v;
-}
-
-vector<Plane*> Card::get_planes() const
-{
-       vector<Plane*> v;
-       for(auto pair : m_obmap) {
-               auto p = dynamic_cast<Plane*>(pair.second);
-               if (p)
-                       v.push_back(p);
-       }
-       return v;
-}
-
-vector<DrmObject*> Card::get_objects() const
+const vector<DrmObject*> Card::get_objects() const
 {
        vector<DrmObject*> v;
        for(auto pair : m_obmap)
@@ -226,6 +204,7 @@ Connector* Card::get_connector(uint32_t id) const { return dynamic_cast<Connecto
 Crtc* Card::get_crtc(uint32_t id) const { return dynamic_cast<Crtc*>(get_object(id)); }
 Encoder* Card::get_encoder(uint32_t id) const { return dynamic_cast<Encoder*>(get_object(id)); }
 Property* Card::get_prop(uint32_t id) const { return dynamic_cast<Property*>(get_object(id)); }
+Plane* Card::get_plane(uint32_t id) const { return dynamic_cast<Plane*>(get_object(id)); }
 
 std::vector<kms::Pipeline> Card::get_connected_pipelines()
 {