Only emit EffectsHandler::windowClosed if Deleted got created

Ensures that Effects cannot ref a window during tear down and then
abort because there is no Deleted for the EffectWindow.
icc-effect-5.14.5
Martin Gräßlin 2015-11-09 16:27:15 +01:00
parent 936c52e263
commit c09f4039d1
2 changed files with 5 additions and 3 deletions

View File

@ -599,10 +599,12 @@ void EffectsHandlerImpl::slotUnmanagedShown(KWin::Toplevel *t)
emit windowAdded(u->effectWindow());
}
void EffectsHandlerImpl::slotWindowClosed(KWin::Toplevel *c)
void EffectsHandlerImpl::slotWindowClosed(KWin::Toplevel *c, KWin::Deleted *d)
{
c->disconnect(this);
emit windowClosed(c->effectWindow());
if (d) {
emit windowClosed(c->effectWindow());
}
}
void EffectsHandlerImpl::slotClientModalityChanged()

View File

@ -245,7 +245,7 @@ protected Q_SLOTS:
void slotClientShown(KWin::Toplevel*);
void slotShellClientShown(KWin::Toplevel*);
void slotUnmanagedShown(KWin::Toplevel*);
void slotWindowClosed(KWin::Toplevel *c);
void slotWindowClosed(KWin::Toplevel *c, KWin::Deleted *d);
void slotClientMaximized(KWin::AbstractClient *c, MaximizeMode maxMode);
void slotOpacityChanged(KWin::Toplevel *t, qreal oldOpacity);
void slotClientModalityChanged();