From b2ea6b010c36fa3c6a374af4e555eba5df32947e Mon Sep 17 00:00:00 2001 From: Dominick DiMaggio Date: Tue, 11 Nov 2025 07:18:15 -0500 Subject: renderer: Allow DS for surfaces with inert subsurfaces (#12133) --- src/desktop/Window.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src/desktop/Window.cpp') 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 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; -- cgit v1.2.3