This is an automatically generated e-mail. To reply, visit: http://git.reviewboard.kde.org/r/108151/

Review request for kwin and Martin Gräßlin.
By Thomas Lübking.

Description

I recently started to run into random crashes on the heap and slightly started to fear to have broken sth. on activities...
whatever.
Turned out* that moving BE::Faded to AnimationEffect and for the very first time actually using "animationEnded" to chain animations (fade out -> fade in) would (actually obviously) alter the m_animations list what unfortunately turns our nice little iterators into random junk.

So this patch tracks list manipulations (in this case during the iteration calling animationEnded, being the natural candidate) and when they happen, re-validates the iterators (the map traversion is required due to the internals of QMap/QHash; the list could instead also be accessed by entry->first.at(animationCounter) instead; not sure about performance impact but it would have made the patch much larger ;-)

* I actually figured it because resizing on fullscreen changes always worked like crap because the window gets to resizes in a row (once for the decoration being removed and then the actual resize to the FS geometry) what got me multiplicative traslation/scaling. Chaining this made the crashes pretty reproducible but the result is pretty cool =)

Testing

hehe - i un/fullscreened mplayer about a hundred times the last few minutes.
That crashed nearly *each* time before the patch.

Diffs

  • kwin/libkwineffects/kwinanimationeffect.cpp (e0a6694)

View Diff