diff options
author | Vaxry <[email protected]> | 2024-08-07 17:04:43 +0200 |
---|---|---|
committer | Vaxry <[email protected]> | 2024-08-07 17:04:49 +0200 |
commit | ea728315410e220d73a993f17c83ae9dc9be9015 (patch) | |
tree | a491dbf70628ff777a3a7aad5441f5d2ec21cdde /src | |
parent | a399f98c68d017152883fbf81d67624ac3254073 (diff) | |
download | Hyprland-ea728315410e220d73a993f17c83ae9dc9be9015.tar.gz Hyprland-ea728315410e220d73a993f17c83ae9dc9be9015.zip |
wayland/compositor: introduce client commit events
Diffstat (limited to 'src')
-rw-r--r-- | src/protocols/DRMSyncobj.cpp | 2 | ||||
-rw-r--r-- | src/protocols/core/Compositor.cpp | 2 | ||||
-rw-r--r-- | src/protocols/core/Compositor.hpp | 5 |
3 files changed, 6 insertions, 3 deletions
diff --git a/src/protocols/DRMSyncobj.cpp b/src/protocols/DRMSyncobj.cpp index 37e6d0f1..9a48b99a 100644 --- a/src/protocols/DRMSyncobj.cpp +++ b/src/protocols/DRMSyncobj.cpp @@ -75,7 +75,7 @@ CDRMSyncobjSurfaceResource::CDRMSyncobjSurfaceResource(SP<CWpLinuxDrmSyncobjSurf pending.acquireTimeline->timeline->addWaiter([this]() { surface->unlockPendingState(); }, pending.acquirePoint, DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE); }); - listeners.surfaceCommit = surface->events.commit.registerListener([this](std::any d) { + listeners.surfaceCommit = surface->events.roleCommit.registerListener([this](std::any d) { // apply timelines if new ones have been attached, otherwise don't touch // the current ones if (pending.releaseTimeline) { diff --git a/src/protocols/core/Compositor.cpp b/src/protocols/core/Compositor.cpp index 656433d3..a767dd52 100644 --- a/src/protocols/core/Compositor.cpp +++ b/src/protocols/core/Compositor.cpp @@ -432,6 +432,8 @@ void CWLSurfaceResource::commitPendingState() { pending.bufferDamage.clear(); pending.newBuffer = false; + events.roleCommit.emit(); + if (syncobj && syncobj->current.releaseTimeline && syncobj->current.releaseTimeline->timeline && current.buffer && current.buffer->buffer) current.buffer->releaser = makeShared<CSyncReleaser>(syncobj->current.releaseTimeline->timeline, syncobj->current.releasePoint); diff --git a/src/protocols/core/Compositor.hpp b/src/protocols/core/Compositor.hpp index af0dfa58..a3245399 100644 --- a/src/protocols/core/Compositor.hpp +++ b/src/protocols/core/Compositor.hpp @@ -75,8 +75,9 @@ class CWLSurfaceResource { Vector2D sourceSize(); struct { - CSignal precommit; - CSignal commit; + CSignal precommit; // before commit + CSignal roleCommit; // commit for role objects, before regular commit + CSignal commit; // after commit CSignal map; CSignal unmap; CSignal newSubsurface; |