renderer: fixup some missing fadeout cases with special

fixes some fadeout missing cases:

- closing last window
- closing above fs
- closing in general

fixes #10283
This commit is contained in:
Vaxry
2025-06-11 17:52:16 +02:00
parent 8329de1ab5
commit 412c7dc7f7
4 changed files with 47 additions and 29 deletions

View File

@@ -21,6 +21,7 @@
#include "../render/Renderer.hpp"
#include "../managers/EventManager.hpp"
#include "../managers/LayoutManager.hpp"
#include "../managers/AnimationManager.hpp"
#include "../managers/input/InputManager.hpp"
#include "sync/SyncTimeline.hpp"
#include "time/Time.hpp"
@@ -47,7 +48,8 @@ static int ratHandler(void* data) {
}
CMonitor::CMonitor(SP<Aquamarine::IOutput> output_) : m_state(this), m_output(output_) {
;
g_pAnimationManager->createAnimation(0.f, m_specialFade, g_pConfigManager->getAnimationPropertyConfig("specialWorkspaceIn"), AVARDAMAGE_NONE);
m_specialFade->setUpdateCallback([this](auto) { g_pHyprRenderer->damageMonitor(m_self.lock()); });
}
CMonitor::~CMonitor() {
@@ -1222,6 +1224,9 @@ void CMonitor::setSpecialWorkspace(const PHLWORKSPACE& pWorkspace) {
if (m_activeSpecialWorkspace == pWorkspace)
return;
m_specialFade->setConfig(g_pConfigManager->getAnimationPropertyConfig(pWorkspace ? "specialWorkspaceIn" : "specialWorkspaceOut"));
*m_specialFade = pWorkspace ? 1.F : 0.F;
g_pHyprRenderer->damageMonitor(m_self.lock());
if (!pWorkspace) {