summaryrefslogtreecommitdiff
path: root/src/Window.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-22 12:36:50 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-22 12:36:54 +0100
commit1911e4262baed82c3d7b7354ae52155a5839594d (patch)
tree61f6bae00c6f358d2b55df9628749cb708844f96 /src/Window.cpp
parentd366fc48b825b9a0a14fdf4b03bf5d1919554fdc (diff)
renderer: skip rendering bottom layers on fullscreen opaque
Diffstat (limited to 'src/Window.cpp')
-rw-r--r--src/Window.cpp15
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;
+}