diff options
| author | Dominick DiMaggio <ddimaggio324@gmail.com> | 2025-11-11 07:18:15 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-11 12:18:15 +0000 |
| commit | b2ea6b010c36fa3c6a374af4e555eba5df32947e (patch) | |
| tree | c8f79b921bdb7cb7170a9a843583194ad4dbf87c /src/protocols/core | |
| parent | 0b1d690676589503f0addece30e936a240733699 (diff) | |
renderer: Allow DS for surfaces with inert subsurfaces (#12133)
Diffstat (limited to 'src/protocols/core')
| -rw-r--r-- | src/protocols/core/Compositor.cpp | 13 | ||||
| -rw-r--r-- | src/protocols/core/Compositor.hpp | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/protocols/core/Compositor.cpp b/src/protocols/core/Compositor.cpp index 06a4587f..ed36b1f9 100644 --- a/src/protocols/core/Compositor.cpp +++ b/src/protocols/core/Compositor.cpp @@ -602,6 +602,19 @@ void CWLSurfaceResource::sortSubsurfaces() { } } +bool CWLSurfaceResource::hasVisibleSubsurface() { + for (auto const& subsurface : m_subsurfaces) { + if (!subsurface || !subsurface->m_surface) + continue; + + const auto& surf = subsurface->m_surface; + if (surf->m_current.size.x > 0 && surf->m_current.size.y > 0) + return true; + } + + return false; +} + void CWLSurfaceResource::updateCursorShm(CRegion damage) { if (damage.empty()) return; diff --git a/src/protocols/core/Compositor.hpp b/src/protocols/core/Compositor.hpp index c024a3eb..0dc03cf4 100644 --- a/src/protocols/core/Compositor.hpp +++ b/src/protocols/core/Compositor.hpp @@ -128,6 +128,7 @@ class CWLSurfaceResource { void commitState(SSurfaceState& state); NColorManagement::SImageDescription getPreferredImageDescription(); void sortSubsurfaces(); + bool hasVisibleSubsurface(); // returns a pair: found surface (null if not found) and surface local coords. // localCoords param is relative to 0,0 of this surface |
