diff --git a/src/SharedDefs.hpp b/src/SharedDefs.hpp index ccde8d11..53a9850a 100644 --- a/src/SharedDefs.hpp +++ b/src/SharedDefs.hpp @@ -20,4 +20,6 @@ enum eRenderStage RENDER_LAST_MOMENT, /* Last moment to render with the gl context */ RENDER_POST, /* After rendering is finished, gl context not available anymore */ RENDER_POST_MIRROR, /* After rendering a mirror */ + RENDER_PRE_WINDOW, /* Before rendering a window (any pass) Note some windows (e.g. tiled) may have 2 passes (main & popup) */ + RENDER_POST_WINDOW, /* After rendering a window (any pass) */ }; \ No newline at end of file diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 932736b6..a3c1973d 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -282,6 +282,8 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec* g_pHyprOpenGL->m_pCurrentWindow = pWindow; + EMIT_HOOK_EVENT("render", RENDER_PRE_WINDOW); + if (*PDIMAROUND && pWindow->m_sAdditionalConfigData.dimAround && !m_bRenderingSnapshot && mode != RENDER_PASS_POPUP) { wlr_box monbox = {0, 0, g_pHyprOpenGL->m_RenderData.pMonitor->vecTransformedSize.x, g_pHyprOpenGL->m_RenderData.pMonitor->vecTransformedSize.y}; g_pHyprOpenGL->renderRect(&monbox, CColor(0, 0, 0, *PDIMAROUND * renderdata.alpha * renderdata.fadeAlpha)); @@ -369,6 +371,8 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec* } } + EMIT_HOOK_EVENT("render", RENDER_POST_WINDOW); + g_pHyprOpenGL->m_pCurrentWindow = nullptr; g_pHyprOpenGL->m_RenderData.clipBox = {0, 0, 0, 0}; }