summaryrefslogtreecommitdiff
path: root/src/render/OpenGL.cpp
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2022-12-28 15:39:17 +0100
committervaxerski <vaxry@vaxry.net>2022-12-28 15:39:17 +0100
commita6699ef30c0a7f66c4b1ff6e38ea836b8e898015 (patch)
tree243d0d0e5a5ce2efc5448f8c5f5ab8c1e912672e /src/render/OpenGL.cpp
parentb5f5c26be3074a16556c2b7982029fbfcf502b16 (diff)
added dimaround
Diffstat (limited to 'src/render/OpenGL.cpp')
-rw-r--r--src/render/OpenGL.cpp20
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);