summaryrefslogtreecommitdiff
path: root/src/protocols/DRMSyncobj.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocols/DRMSyncobj.cpp')
-rw-r--r--src/protocols/DRMSyncobj.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/protocols/DRMSyncobj.cpp b/src/protocols/DRMSyncobj.cpp
index bedec422..0896b904 100644
--- a/src/protocols/DRMSyncobj.cpp
+++ b/src/protocols/DRMSyncobj.cpp
@@ -199,8 +199,18 @@ bool CDRMSyncobjManagerResource::good() {
return m_resource->resource();
}
-CDRMSyncobjProtocol::CDRMSyncobjProtocol(const wl_interface* iface, const int& ver, const std::string& name) :
- IWaylandProtocol(iface, ver, name), m_drmFD(g_pCompositor->m_drmFD) {}
+CDRMSyncobjProtocol::CDRMSyncobjProtocol(const wl_interface* iface, const int& ver, const std::string& name) : IWaylandProtocol(iface, ver, name) {
+ if (g_pCompositor->m_drmRenderNode.syncObjSupport)
+ m_drmFD = g_pCompositor->m_drmRenderNode.fd;
+ else if (g_pCompositor->m_drm.syncobjSupport)
+ m_drmFD = g_pCompositor->m_drm.fd;
+ else {
+ LOGM(ERR, "CDRMSyncobjProtocol: no nodes support explicit sync?");
+ return;
+ }
+
+ LOGM(LOG, "CDRMSyncobjProtocol: using fd {}", m_drmFD);
+}
void CDRMSyncobjProtocol::bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id) {
const auto& RESOURCE = m_managers.emplace_back(makeUnique<CDRMSyncobjManagerResource>(makeUnique<CWpLinuxDrmSyncobjManagerV1>(client, ver, id)));