From 9c9b74179c3f3288266cedb7c31c16e12efff16c Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Fri, 26 May 2023 13:07:45 +0200 Subject: [PATCH] pluginapi: add separate window render events --- src/SharedDefs.hpp | 2 ++ src/render/Renderer.cpp | 4 ++++ 2 files changed, 6 insertions(+) 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}; }