diff --git a/src/desktop/LayerSurface.cpp b/src/desktop/LayerSurface.cpp index 048a3641..135b06a3 100644 --- a/src/desktop/LayerSurface.cpp +++ b/src/desktop/LayerSurface.cpp @@ -221,7 +221,7 @@ void CLayerSurface::onUnmap() { m_realSize->warp(); // make a snapshot and start fade - g_pHyprRenderer->makeLayerSnapshot(m_self.lock()); + g_pHyprRenderer->makeSnapshot(m_self.lock()); startAnimation(false); diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index da1e5263..d9408dbd 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -755,7 +755,7 @@ void Events::listener_unmapWindow(void* owner, void* data) { // Allow the renderer to catch the last frame. if (g_pHyprRenderer->shouldRenderWindow(PWINDOW)) - g_pHyprRenderer->makeWindowSnapshot(PWINDOW); + g_pHyprRenderer->makeSnapshot(PWINDOW); // swallowing if (valid(PWINDOW->m_swallowed)) { diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 67832df1..ecc46a36 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -2381,51 +2381,7 @@ void CHyprRenderer::addWindowToRenderUnfocused(PHLWINDOW window) { m_renderUnfocusedTimer->updateTimeout(std::chrono::milliseconds(1000 / *PFPS)); } -void CHyprRenderer::makeRawWindowSnapshot(PHLWINDOW pWindow, CFramebuffer* pFramebuffer) { - // we trust the window is valid. - const auto PMONITOR = pWindow->m_monitor.lock(); - - if (!PMONITOR || !PMONITOR->m_output || PMONITOR->m_pixelSize.x <= 0 || PMONITOR->m_pixelSize.y <= 0) - return; - - // we need to "damage" the entire monitor - // so that we render the entire window - // this is temporary, doesnt mess with the actual damage - CRegion fakeDamage{0, 0, (int)PMONITOR->m_transformedSize.x, (int)PMONITOR->m_transformedSize.y}; - - makeEGLCurrent(); - - pFramebuffer->alloc(PMONITOR->m_pixelSize.x, PMONITOR->m_pixelSize.y, DRM_FORMAT_ABGR8888); - pFramebuffer->addStencil(g_pHyprOpenGL->m_renderData.pCurrentMonData->stencilTex); - - beginRender(PMONITOR, fakeDamage, RENDER_MODE_FULL_FAKE, nullptr, pFramebuffer); - - g_pHyprOpenGL->clear(CHyprColor(0, 0, 0, 0)); // JIC - - // this is a hack but it works :P - // we need to disable blur or else we will get a black background, as the shader - // will try to copy the bg to apply blur. - // this isn't entirely correct, but like, oh well. - // small todo: maybe make this correct? :P - static auto* const PBLUR = (Hyprlang::INT* const*)(g_pConfigManager->getConfigValuePtr("decoration:blur:enabled")); - const auto BLURVAL = **PBLUR; - **PBLUR = 0; - - // TODO: how can we make this the size of the window? setting it to window's size makes the entire screen render with the wrong res forever more. odd. - glViewport(0, 0, PMONITOR->m_pixelSize.x, PMONITOR->m_pixelSize.y); - - g_pHyprOpenGL->m_renderData.currentFB = pFramebuffer; - - g_pHyprOpenGL->clear(CHyprColor(0, 0, 0, 0)); // JIC - - renderWindow(pWindow, PMONITOR, Time::steadyNow(), false, RENDER_PASS_ALL, true); - - **PBLUR = BLURVAL; - - endRender(); -} - -void CHyprRenderer::makeWindowSnapshot(PHLWINDOW pWindow) { +void CHyprRenderer::makeSnapshot(PHLWINDOW pWindow) { // we trust the window is valid. const auto PMONITOR = pWindow->m_monitor.lock(); @@ -2461,7 +2417,7 @@ void CHyprRenderer::makeWindowSnapshot(PHLWINDOW pWindow) { m_bRenderingSnapshot = false; } -void CHyprRenderer::makeLayerSnapshot(PHLLS pLayer) { +void CHyprRenderer::makeSnapshot(PHLLS pLayer) { // we trust the window is valid. const auto PMONITOR = pLayer->m_monitor.lock(); diff --git a/src/render/Renderer.hpp b/src/render/Renderer.hpp index 77e1fcf0..33a93afd 100644 --- a/src/render/Renderer.hpp +++ b/src/render/Renderer.hpp @@ -83,9 +83,8 @@ class CHyprRenderer { void unsetEGL(); SExplicitSyncSettings getExplicitSyncSettings(SP output); void addWindowToRenderUnfocused(PHLWINDOW window); - void makeWindowSnapshot(PHLWINDOW); - void makeRawWindowSnapshot(PHLWINDOW, CFramebuffer*); - void makeLayerSnapshot(PHLLS); + void makeSnapshot(PHLWINDOW); + void makeSnapshot(PHLLS); void renderSnapshot(PHLWINDOW); void renderSnapshot(PHLLS);