diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-04-10 18:25:45 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-04-10 18:25:45 +0200 |
| commit | 2cf4480969c05153fe9c2f3ca16812d61e14b0c0 (patch) | |
| tree | f81b63200c9f46523c5d01dc97b92548b72f853e /src | |
| parent | 71916ee09ada62e6d75bc801501e69252820bfd1 (diff) | |
fix fadeout blinking transparent windows
Diffstat (limited to 'src')
| -rw-r--r-- | src/config/ConfigManager.cpp | 12 | ||||
| -rw-r--r-- | src/config/ConfigManager.hpp | 3 | ||||
| -rw-r--r-- | src/render/OpenGL.cpp | 10 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 70267f10..59d9566a 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -407,6 +407,18 @@ std::string CConfigManager::getString(std::string v) { return getConfigValueSafe(v).strValue; } +void CConfigManager::setInt(std::string v, int val) { + configValues[v].intValue = val; +} + +void CConfigManager::setFloat(std::string v, float val) { + configValues[v].floatValue = val; +} + +void CConfigManager::setString(std::string v, std::string val) { + configValues[v].strValue = val; +} + SMonitorRule CConfigManager::getMonitorRuleFor(std::string name) { SMonitorRule* found = nullptr; diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp index 4537c4b8..663480d4 100644 --- a/src/config/ConfigManager.hpp +++ b/src/config/ConfigManager.hpp @@ -43,6 +43,9 @@ public: int getInt(std::string); float getFloat(std::string); std::string getString(std::string); + void setFloat(std::string, float); + void setInt(std::string, int); + void setString(std::string, std::string); SMonitorRule getMonitorRuleFor(std::string); diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index acc5096f..020f398d 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -481,8 +481,18 @@ void CHyprOpenGLImpl::makeWindowSnapshot(CWindow* pWindow) { timespec now; clock_gettime(CLOCK_MONOTONIC, &now); + // 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 + const auto BLURVAL = g_pConfigManager->getInt("decoration:blur"); + g_pConfigManager->setInt("decoration:blur", 0); + g_pHyprRenderer->renderWindow(pWindow, PMONITOR, &now, !pWindow->m_bX11DoesntWantBorders); + g_pConfigManager->setInt("decoration:blur", BLURVAL); + // restore original fb glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_iCurrentOutputFb); glViewport(0, 0, g_pHyprOpenGL->m_RenderData.pMonitor->vecSize.x, g_pHyprOpenGL->m_RenderData.pMonitor->vecSize.y); |
