diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-04-22 12:36:50 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-04-22 12:36:54 +0100 |
| commit | 1911e4262baed82c3d7b7354ae52155a5839594d (patch) | |
| tree | 61f6bae00c6f358d2b55df9628749cb708844f96 /src/Window.cpp | |
| parent | d366fc48b825b9a0a14fdf4b03bf5d1919554fdc (diff) | |
renderer: skip rendering bottom layers on fullscreen opaque
Diffstat (limited to 'src/Window.cpp')
| -rw-r--r-- | src/Window.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/Window.cpp b/src/Window.cpp index 87bf2d21..1392650b 100644 --- a/src/Window.cpp +++ b/src/Window.cpp @@ -668,3 +668,18 @@ void CWindow::updateGroupOutputs() { Vector2D CWindow::middle() { return m_vRealPosition.goalv() + m_vRealSize.goalv() / 2.f; } + +bool CWindow::opaque() { + if (m_bIsX11) + return !m_uSurface.xwayland->has_alpha; + + if (m_uSurface.xdg->surface->opaque) + return true; + + const auto EXTENTS = pixman_region32_extents(&m_uSurface.xdg->surface->opaque_region); + if (EXTENTS->x2 - EXTENTS->x1 >= m_uSurface.xdg->surface->current.buffer_width + && EXTENTS->y2 - EXTENTS->y1 >= m_uSurface.xdg->surface->current.buffer_height) + return true; + + return false; +} |
