diff options
Diffstat (limited to 'src/protocols/DRMSyncobj.cpp')
| -rw-r--r-- | src/protocols/DRMSyncobj.cpp | 14 |
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))); |
