diff options
| author | Tom Englund <tomenglund26@gmail.com> | 2025-03-21 20:19:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-21 20:19:53 +0100 |
| commit | ccbdba7ee2ccb835306de89a6023134fa6b8006f (patch) | |
| tree | b58e56658b1616752c21d1152ce239b9a75b0d53 /src/helpers/sync | |
| parent | c7f0519fafbf334a8f5088a8a0fc385732a24036 (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.cpp | 11 | ||||
| -rw-r--r-- | src/helpers/sync/SyncTimeline.hpp | 5 |
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; |
