diff options
| author | Lee Bousfield <ljbousfield@gmail.com> | 2025-03-22 17:06:02 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-22 23:06:02 +0100 |
| commit | fdb7ca6c8fa3611ab04eccf129a515efd9852c73 (patch) | |
| tree | 2aa8ab45056a777515b81d366d5e61d93db107fa /src/protocols | |
| parent | 6ab5a0befb45e90eb45b8d6582e68d13147297dc (diff) | |
core/compositor: Fix dropping cursor buffer data early (#9700)
Diffstat (limited to 'src/protocols')
| -rw-r--r-- | src/protocols/core/Compositor.cpp | 4 | ||||
| -rw-r--r-- | src/protocols/core/Seat.cpp | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/protocols/core/Compositor.cpp b/src/protocols/core/Compositor.cpp index 5462fbe9..2dd374a8 100644 --- a/src/protocols/core/Compositor.cpp +++ b/src/protocols/core/Compositor.cpp @@ -12,6 +12,7 @@ #include "../DRMSyncobj.hpp" #include "../../render/Renderer.hpp" #include "config/ConfigValue.hpp" +#include "protocols/types/SurfaceRole.hpp" #include "render/Texture.hpp" #include <cstring> @@ -445,7 +446,8 @@ void CWLSurfaceResource::commitPendingState(SSurfaceState& state) { // release the buffer if it's synchronous (SHM) as update() has done everything thats needed // so we can let the app know we're done. - if (current.buffer && current.buffer->buffer && current.buffer->buffer->isSynchronous()) + // if it doesn't have a role, we can't release it yet, in case it gets turned into a cursor. + if (current.buffer && current.buffer->buffer && current.buffer->buffer->isSynchronous() && role->role() != SURFACE_ROLE_UNASSIGNED) dropCurrentBuffer(); } diff --git a/src/protocols/core/Seat.cpp b/src/protocols/core/Seat.cpp index 1f07a15e..5bdb95f0 100644 --- a/src/protocols/core/Seat.cpp +++ b/src/protocols/core/Seat.cpp @@ -124,7 +124,7 @@ CWLPointerResource::CWLPointerResource(SP<CWlPointer> resource_, SP<CWLSeatResou return; } - if (surfResource) { + if (surfResource && surfResource->role->role() != SURFACE_ROLE_CURSOR) { surfResource->role = makeShared<CCursorSurfaceRole>(); surfResource->updateCursorShm(); } |
