diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-11-04 15:56:31 +0000 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-11-04 15:56:31 +0000 |
| commit | 206360177fcae23436928542ed860c854b985db4 (patch) | |
| tree | c60b5cd406d79d14ef3dd88bcf615e7c1734e18b /src/Window.cpp | |
| parent | 34ad837fd93a55c2a234381c9077fba1c2fd154c (diff) | |
Multiple animation optimization and xwayland wine fixes
Diffstat (limited to 'src/Window.cpp')
| -rw-r--r-- | src/Window.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/Window.cpp b/src/Window.cpp index 03ca39ad..21dac460 100644 --- a/src/Window.cpp +++ b/src/Window.cpp @@ -3,7 +3,7 @@ #include "render/decorations/CHyprDropShadowDecoration.hpp" CWindow::CWindow() { - m_vRealPosition.create(AVARTYPE_VECTOR, g_pConfigManager->getAnimationPropertyConfig("windowsIn"), (void*) this, AVARDAMAGE_ENTIRE); + m_vRealPosition.create(AVARTYPE_VECTOR, g_pConfigManager->getAnimationPropertyConfig("windowsIn"), (void*)this, AVARDAMAGE_ENTIRE); m_vRealSize.create(AVARTYPE_VECTOR, g_pConfigManager->getAnimationPropertyConfig("windowsIn"), (void*)this, AVARDAMAGE_ENTIRE); m_cRealBorderColor.create(AVARTYPE_COLOR, g_pConfigManager->getAnimationPropertyConfig("border"), (void*)this, AVARDAMAGE_BORDER); m_fAlpha.create(AVARTYPE_FLOAT, g_pConfigManager->getAnimationPropertyConfig("fadeIn"), (void*)this, AVARDAMAGE_ENTIRE); @@ -245,9 +245,31 @@ void CWindow::removeDecorationByType(eDecorationType type) { updateWindowDecos(); } +void unregisterVar(void* ptr) { + ((CAnimatedVariable*)ptr)->unregister(); +} + void CWindow::onUnmap() { if (g_pCompositor->m_pLastWindow == this) g_pCompositor->m_pLastWindow = nullptr; + + m_vRealPosition.setCallbackOnEnd(unregisterVar); + m_vRealSize.setCallbackOnEnd(unregisterVar); + m_cRealBorderColor.setCallbackOnEnd(unregisterVar); + m_fActiveInactiveAlpha.setCallbackOnEnd(unregisterVar); + m_fAlpha.setCallbackOnEnd(unregisterVar); + m_cRealShadowColor.setCallbackOnEnd(unregisterVar); + m_fDimPercent.setCallbackOnEnd(unregisterVar); +} + +void CWindow::onMap() { + m_vRealPosition.registerVar(); + m_vRealSize.registerVar(); + m_cRealBorderColor.registerVar(); + m_fActiveInactiveAlpha.registerVar(); + m_fAlpha.registerVar(); + m_cRealShadowColor.registerVar(); + m_fDimPercent.registerVar(); } void CWindow::setHidden(bool hidden) { |
