diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 495e772e..e62db718 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -31,8 +31,8 @@ CMonitor::~CMonitor() { void CMonitor::onConnect(bool noRule) { if (output->supportsExplicit) { - inTimeline = CSyncTimeline::create(g_pCompositor->m_iDRMFD); - outTimeline = CSyncTimeline::create(g_pCompositor->m_iDRMFD); + inTimeline = CSyncTimeline::create(output->getBackend()->drmFD()); + outTimeline = CSyncTimeline::create(output->getBackend()->drmFD()); } listeners.frame = output->events.frame.registerListener([this](std::any d) { Events::listener_monitorFrame(this, nullptr); }); diff --git a/src/helpers/sync/SyncTimeline.cpp b/src/helpers/sync/SyncTimeline.cpp index 1a7286e0..d3c1b416 100644 --- a/src/helpers/sync/SyncTimeline.cpp +++ b/src/helpers/sync/SyncTimeline.cpp @@ -176,7 +176,10 @@ bool CSyncTimeline::importFromSyncFileFD(uint64_t dst, int fd) { } bool CSyncTimeline::transfer(SP from, uint64_t fromPoint, uint64_t toPoint) { - ASSERT(from->drmFD == drmFD); + if (drmFD != from->drmFD) { + Debug::log(ERR, "CSyncTimeline::transfer: cannot transfer timelines between gpus"); + return false; + } if (drmSyncobjTransfer(drmFD, handle, toPoint, from->handle, fromPoint, 0)) { Debug::log(ERR, "CSyncTimeline::transfer: drmSyncobjTransfer failed");