[effects/blur] Disable cached blur for deleted windows

This is a kind of workaround for the flicker of fading out windows.
When a window is faded out it is a deleted and can by that be used
as a sufficient solution to work around the problem.

BUG: 307112
FIXED-IN: 5.2.0
REVIEW: 121909
This commit is contained in:
Martin Gräßlin 2015-01-08 08:44:47 +01:00
parent f61d3ade84
commit ca1354e8af

View file

@ -296,7 +296,7 @@ void BlurEffect::prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int t
const QRegion blurArea = blurRegion(w).translated(w->pos()) & screen; const QRegion blurArea = blurRegion(w).translated(w->pos()) & screen;
const QRegion expandedBlur = expand(blurArea) & screen; const QRegion expandedBlur = expand(blurArea) & screen;
if (m_shouldCache) { if (m_shouldCache && !w->isDeleted()) {
// we are caching the horizontally blurred background texture // we are caching the horizontally blurred background texture
// if a window underneath the blurred area is damaged we have to // if a window underneath the blurred area is damaged we have to
@ -403,7 +403,7 @@ void BlurEffect::drawWindow(EffectWindow *w, int mask, QRegion region, WindowPai
} }
if (!shape.isEmpty()) { if (!shape.isEmpty()) {
if (m_shouldCache && !translated) { if (m_shouldCache && !translated && !w->isDeleted()) {
doCachedBlur(w, region, data.opacity()); doCachedBlur(w, region, data.opacity());
} else { } else {
doBlur(shape, screen, data.opacity()); doBlur(shape, screen, data.opacity());