From 1911e4262baed82c3d7b7354ae52155a5839594d Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sat, 22 Apr 2023 12:36:50 +0100 Subject: renderer: skip rendering bottom layers on fullscreen opaque --- src/Window.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/Window.cpp') 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; +} -- cgit v1.2.3