diff options
Diffstat (limited to 'src/helpers/sync/SyncTimeline.cpp')
| -rw-r--r-- | src/helpers/sync/SyncTimeline.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/helpers/sync/SyncTimeline.cpp b/src/helpers/sync/SyncTimeline.cpp index 46b617bc..d11205bc 100644 --- a/src/helpers/sync/SyncTimeline.cpp +++ b/src/helpers/sync/SyncTimeline.cpp @@ -33,6 +33,13 @@ SP<CSyncTimeline> CSyncTimeline::create(int drmFD_, int drmSyncobjFD) { } CSyncTimeline::~CSyncTimeline() { + for (auto& w : waiters) { + if (w->source) { + wl_event_source_remove(w->source); + w->source = nullptr; + } + } + if (handle == 0) return; @@ -124,6 +131,17 @@ void CSyncTimeline::removeWaiter(SWaiter* w) { std::erase_if(waiters, [w](const auto& e) { return e.get() == w; }); } +void CSyncTimeline::removeAllWaiters() { + for (auto& w : waiters) { + if (w->source) { + wl_event_source_remove(w->source); + w->source = nullptr; + } + } + + waiters.clear(); +} + CFileDescriptor CSyncTimeline::exportAsSyncFileFD(uint64_t src) { int sync = -1; |
