diff --git a/libkms++/card.cpp b/libkms++/card.cpp
index d5b823fd27be48ae4274d8f7dfe776fd9e8dcd02..23a6840b30a40cf32724adf3d2d39a51882ac0d0 100644 (file)
--- a/libkms++/card.cpp
+++ b/libkms++/card.cpp
for (int i = 0; i < res->count_encoders; ++i) {
uint32_t id = res->encoders[i];
- auto ob = new Encoder(*this, id);
+ auto ob = new Encoder(*this, id, i);
m_obmap[id] = ob;
m_encoders.push_back(ob);
}
for (uint i = 0; i < planeRes->count_planes; ++i) {
uint32_t id = planeRes->planes[i];
- auto ob = new Plane(*this, id);
+ auto ob = new Plane(*this, id, i);
m_obmap[id] = ob;
m_planes.push_back(ob);
}
close(m_fd);
}
+void Card::drop_master()
+{
+ drmDropMaster(fd());
+}
+
void Card::restore_modes()
{
for (auto conn : get_connectors())
DrmObject* Card::get_object(uint32_t id) const
{
- return m_obmap.at(id);
+ auto iter = m_obmap.find(id);
+ if (iter != m_obmap.end())
+ return iter->second;
+ return nullptr;
}
const vector<DrmObject*> Card::get_objects() const