Skip to content

plugins/slidingpopups: Fix a crash on compositing restart

Vlad Zahorodnii requested to merge work/zzag/sliding-popups-teardown-fix into master

The sliding popups effect can be unloaded while there's still an active animation for a closed window.

If that happens, the EffectsHandler::windowDeleted signal may be emitted when the EffectWindowDeletedRef objects are destroyed. It happens after the SlidingPopupsEffect destructor.

The sliding popups effect also has an EffectsHandler::windowDeleted slot.

So, the problem is that m_animationsData gets destroyed first, then m_animations is destroyed next. When m_animations is destroyed, the deleted references will be released and EffectsHandler::windowDeleted will be emitted. SlidingPopupsEffect::slotWindowDeleted will access m_animationsData whose memory has been just released.

In order to prevent crashing, this change ensures that animations are canceled while m_animationsData is still valid.

Edited by Vlad Zahorodnii

Merge request reports