~smspillaz/compiz-animation-plugin/compiz-animation-plugion.fix_940603

Viewing all changes in revision 396.

  • Committer: smspillaz
  • Date: 2012-04-10 06:16:32 UTC
  • Revision ID: sam.spilsbury@canonical.com-20120410061632-4h6dynmmfd1ei4u4
Don't increment the destroy ref count of a window unless an animation is active.

It doesn't make any sense to increase the destroy reference count of a window
on CompWindowNotifyBeforeDestroy based on whether or not an an animation for
that window "could" be allowed - CompWindowNotifyBeforeDestroyed is called
on CompWindow::destroy (which under sane circumstances, should only ever be called
when the window is either reparented away from its parent or the root window
or when the window is destroyed).

In this case, we deregister all events on the window so it isn't possible to determine
through any normal means that a close animation is going to activate on the window. And
in any event, the unmap which causes close animations always comes before the DestroyNotify
or ReparentNotify anyways.

Even if the CompWindowNotifyClose were to somehow come after the window received a ReparentNotify
or DestroyNotify, the tradeoff then comes between not playing animations for those corner case
windows or keeping ghost windows on screen because we kept a destroy reference and never
got rid of it. In this case, it is more sane to do the former.

Fix LP #940603

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: