summaryrefslogtreecommitdiff
path: root/src/desktop/Window.cpp
diff options
context:
space:
mode:
authorDominick DiMaggio <ddimaggio324@gmail.com>2025-11-11 07:18:15 -0500
committerGitHub <noreply@github.com>2025-11-11 12:18:15 +0000
commitb2ea6b010c36fa3c6a374af4e555eba5df32947e (patch)
treec8f79b921bdb7cb7170a9a843583194ad4dbf87c /src/desktop/Window.cpp
parent0b1d690676589503f0addece30e936a240733699 (diff)
renderer: Allow DS for surfaces with inert subsurfaces (#12133)
Diffstat (limited to 'src/desktop/Window.cpp')
-rw-r--r--src/desktop/Window.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/desktop/Window.cpp b/src/desktop/Window.cpp
index fbf63243..8671c003 100644
--- a/src/desktop/Window.cpp
+++ b/src/desktop/Window.cpp
@@ -1927,13 +1927,18 @@ SP<CWLSurfaceResource> CWindow::getSolitaryResource() {
if (res->m_subsurfaces.size() == 0)
return res;
- if (res->m_subsurfaces.size() == 1) {
- if (res->m_subsurfaces[0].expired() || res->m_subsurfaces[0]->m_surface.expired())
- return nullptr;
- auto surf = res->m_subsurfaces[0]->m_surface.lock();
- if (!surf || surf->m_subsurfaces.size() != 0 || surf->extends() != res->extends() || !surf->m_current.texture || !surf->m_current.texture->m_opaque)
- return nullptr;
- return surf;
+ if (res->m_subsurfaces.size() >= 1) {
+ if (!res->hasVisibleSubsurface())
+ return res;
+
+ if (res->m_subsurfaces.size() == 1) {
+ if (res->m_subsurfaces[0].expired() || res->m_subsurfaces[0]->m_surface.expired())
+ return nullptr;
+ auto surf = res->m_subsurfaces[0]->m_surface.lock();
+ if (!surf || surf->m_subsurfaces.size() != 0 || surf->extends() != res->extends() || !surf->m_current.texture || !surf->m_current.texture->m_opaque)
+ return nullptr;
+ return surf;
+ }
}
return nullptr;