plugins/slidingpopups: Always ref window when sliding it offscreen
Imagine the following case: - the window is hidden, slideOut() is called but no deleted reference is created because the window is not deleted - the window is closed, slideOut() won't be called because the window is hidden and SlidingPopupsEffect::slotWindowClosed() ignores closed windows that are already hidden - the window is deleted in meanwhile - the sliding popups effects attempt to delete m_animations[w] entry, but since "w" is a dangling pointer at this point, visibleRef is going to access released memory To fix that, make slideOut() always ref the window.
This commit is contained in:
parent
69f344a439
commit
0c03e7ccfc
1 changed files with 1 additions and 3 deletions
|
@ -553,9 +553,7 @@ void SlidingPopupsEffect::slideOut(EffectWindow *w)
|
|||
}
|
||||
|
||||
Animation &animation = m_animations[w];
|
||||
if (w->isDeleted()) {
|
||||
animation.deletedRef = EffectWindowDeletedRef(w);
|
||||
}
|
||||
animation.deletedRef = EffectWindowDeletedRef(w);
|
||||
animation.visibleRef = EffectWindowVisibleRef(w, EffectWindow::PAINT_DISABLED);
|
||||
animation.kind = AnimationKind::Out;
|
||||
animation.timeLine.setDirection(TimeLine::Backward);
|
||||
|
|
Loading…
Reference in a new issue