diff options
| author | vaxerski <vaxry@vaxry.net> | 2022-12-28 15:39:17 +0100 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2022-12-28 15:39:17 +0100 |
| commit | a6699ef30c0a7f66c4b1ff6e38ea836b8e898015 (patch) | |
| tree | 243d0d0e5a5ce2efc5448f8c5f5ab8c1e912672e /src/render/OpenGL.cpp | |
| parent | b5f5c26be3074a16556c2b7982029fbfcf502b16 (diff) | |
added dimaround
Diffstat (limited to 'src/render/OpenGL.cpp')
| -rw-r--r-- | src/render/OpenGL.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 8853c69b..b51ec7aa 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -1102,6 +1102,8 @@ void CHyprOpenGLImpl::makeWindowSnapshot(CWindow* pWindow) { begin(PMONITOR, &fakeDamage, true); + g_pHyprRenderer->m_bRenderingSnapshot = true; + clear(CColor(0, 0, 0, 0)); // JIC timespec now; @@ -1141,6 +1143,8 @@ void CHyprOpenGLImpl::makeWindowSnapshot(CWindow* pWindow) { pixman_region32_fini(&fakeDamage); + g_pHyprRenderer->m_bRenderingSnapshot = false; + wlr_output_rollback(PMONITOR->output); } @@ -1158,6 +1162,8 @@ void CHyprOpenGLImpl::makeLayerSnapshot(SLayerSurface* pLayer) { begin(PMONITOR, &fakeDamage, true); + g_pHyprRenderer->m_bRenderingSnapshot = true; + const auto PFRAMEBUFFER = &m_mLayerFramebuffers[pLayer]; glViewport(0, 0, g_pHyprOpenGL->m_RenderData.pMonitor->vecPixelSize.x, g_pHyprOpenGL->m_RenderData.pMonitor->vecPixelSize.y); @@ -1188,9 +1194,10 @@ void CHyprOpenGLImpl::makeLayerSnapshot(SLayerSurface* pLayer) { #else glBindFramebuffer(GL_FRAMEBUFFER, m_iCurrentOutputFb); #endif - end(); + g_pHyprRenderer->m_bRenderingSnapshot = false; + pixman_region32_fini(&fakeDamage); wlr_output_rollback(PMONITOR->output); @@ -1202,9 +1209,11 @@ void CHyprOpenGLImpl::onWindowResizeEnd(CWindow* pWindow) {} void CHyprOpenGLImpl::renderSnapshot(CWindow** pWindow) { RASSERT(m_RenderData.pMonitor, "Tried to render snapshot rect without begin()!"); - const auto PWINDOW = *pWindow; + const auto PWINDOW = *pWindow; + + static auto* const PDIMAROUND = &g_pConfigManager->getConfigValuePtr("decoration:dim_around")->floatValue; - auto it = m_mWindowFramebuffers.begin(); + auto it = m_mWindowFramebuffers.begin(); for (; it != m_mWindowFramebuffers.end(); it++) { if (it->first == PWINDOW) { break; @@ -1230,6 +1239,11 @@ void CHyprOpenGLImpl::renderSnapshot(CWindow** pWindow) { pixman_region32_t fakeDamage; pixman_region32_init_rect(&fakeDamage, 0, 0, PMONITOR->vecTransformedSize.x, PMONITOR->vecTransformedSize.y); + if (*PDIMAROUND && (*pWindow)->m_sAdditionalConfigData.dimAround) { + wlr_box monbox = {0, 0, g_pHyprOpenGL->m_RenderData.pMonitor->vecPixelSize.x, g_pHyprOpenGL->m_RenderData.pMonitor->vecPixelSize.y}; + g_pHyprOpenGL->renderRect(&monbox, CColor(0, 0, 0, *PDIMAROUND * PWINDOW->m_fAlpha.fl())); + } + m_bEndFrame = true; renderTextureInternalWithDamage(it->second.m_cTex, &windowBox, PWINDOW->m_fAlpha.fl(), &fakeDamage, 0); |
