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/desktop/Window.cpp | |
| parent | 0b1d690676589503f0addece30e936a240733699 (diff) | |
renderer: Allow DS for surfaces with inert subsurfaces (#12133)
Diffstat (limited to 'src/desktop/Window.cpp')
| -rw-r--r-- | src/desktop/Window.cpp | 19 |
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; |
