summaryrefslogtreecommitdiff
path: root/src/helpers/sync
diff options
context:
space:
mode:
authorTom Englund <tomenglund26@gmail.com>2025-03-21 20:19:53 +0100
committerGitHub <noreply@github.com>2025-03-21 20:19:53 +0100
commitccbdba7ee2ccb835306de89a6023134fa6b8006f (patch)
treeb58e56658b1616752c21d1152ce239b9a75b0d53 /src/helpers/sync
parentc7f0519fafbf334a8f5088a8a0fc385732a24036 (diff)
syncobj: refactor point timelines (#9689)
no need to store the resource, just store the csynctimeline as a shared pointer and make the timeline own the syncobj fd.
Diffstat (limited to 'src/helpers/sync')
-rw-r--r--src/helpers/sync/SyncTimeline.cpp11
-rw-r--r--src/helpers/sync/SyncTimeline.hpp5
2 files changed, 9 insertions, 7 deletions
diff --git a/src/helpers/sync/SyncTimeline.cpp b/src/helpers/sync/SyncTimeline.cpp
index d11205bc..224b2c0f 100644
--- a/src/helpers/sync/SyncTimeline.cpp
+++ b/src/helpers/sync/SyncTimeline.cpp
@@ -19,12 +19,13 @@ SP<CSyncTimeline> CSyncTimeline::create(int drmFD_) {
return timeline;
}
-SP<CSyncTimeline> CSyncTimeline::create(int drmFD_, int drmSyncobjFD) {
- auto timeline = SP<CSyncTimeline>(new CSyncTimeline);
- timeline->drmFD = drmFD_;
- timeline->self = timeline;
+SP<CSyncTimeline> CSyncTimeline::create(int drmFD_, CFileDescriptor&& drmSyncobjFD) {
+ auto timeline = SP<CSyncTimeline>(new CSyncTimeline);
+ timeline->drmFD = drmFD_;
+ timeline->syncobjFd = std::move(drmSyncobjFD);
+ timeline->self = timeline;
- if (drmSyncobjFDToHandle(drmFD_, drmSyncobjFD, &timeline->handle)) {
+ if (drmSyncobjFDToHandle(drmFD_, timeline->syncobjFd.get(), &timeline->handle)) {
Debug::log(ERR, "CSyncTimeline: failed to create a drm syncobj from fd??");
return nullptr;
}
diff --git a/src/helpers/sync/SyncTimeline.hpp b/src/helpers/sync/SyncTimeline.hpp
index bfd70416..a2422149 100644
--- a/src/helpers/sync/SyncTimeline.hpp
+++ b/src/helpers/sync/SyncTimeline.hpp
@@ -17,7 +17,7 @@ struct wl_event_source;
class CSyncTimeline {
public:
static SP<CSyncTimeline> create(int drmFD_);
- static SP<CSyncTimeline> create(int drmFD_, int drmSyncobjFD);
+ static SP<CSyncTimeline> create(int drmFD_, Hyprutils::OS::CFileDescriptor&& drmSyncobjFD);
~CSyncTimeline();
struct SWaiter {
@@ -40,7 +40,8 @@ class CSyncTimeline {
bool transfer(SP<CSyncTimeline> from, uint64_t fromPoint, uint64_t toPoint);
void signal(uint64_t point);
- int drmFD = -1;
+ int drmFD = -1;
+ Hyprutils::OS::CFileDescriptor syncobjFd;
uint32_t handle = 0;
WP<CSyncTimeline> self;