summaryrefslogtreecommitdiff
path: root/src/Window.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-11-04 15:56:31 +0000
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-11-04 15:56:31 +0000
commit206360177fcae23436928542ed860c854b985db4 (patch)
treec60b5cd406d79d14ef3dd88bcf615e7c1734e18b /src/Window.cpp
parent34ad837fd93a55c2a234381c9077fba1c2fd154c (diff)
Multiple animation optimization and xwayland wine fixes
Diffstat (limited to 'src/Window.cpp')
-rw-r--r--src/Window.cpp24
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) {