XRender backend: do not process invalid shadow data

This commit is contained in:
Jacopo De Simoi 2011-05-09 11:13:05 -04:00
parent f5ad33789c
commit 2573bec755

View file

@ -732,7 +732,7 @@ void SceneXrender::Window::performPaint(int mask, QRegion region, WindowPaintDat
} }
//shadow //shadow
if (m_shadow && !(mask & PAINT_DECORATION_ONLY)) { if (m_shadow && !(m_shadow->shadowRegion().isEmpty()) && !(mask & PAINT_DECORATION_ONLY)) {
QRect stlr, str, strr, srr, sbrr, sbr, sblr, slr; QRect stlr, str, strr, srr, sbrr, sbr, sblr, slr;
SceneXRenderShadow* m_xrenderShadow = static_cast<SceneXRenderShadow*>(m_shadow); SceneXRenderShadow* m_xrenderShadow = static_cast<SceneXRenderShadow*>(m_shadow);
m_xrenderShadow->layoutShadowRects(str, strr, srr, sbrr, sbr, sblr, slr, stlr); m_xrenderShadow->layoutShadowRects(str, strr, srr, sbrr, sbr, sblr, slr, stlr);
@ -1092,6 +1092,10 @@ void SceneXRenderShadow::buildQuads()
{ {
Shadow::buildQuads(); Shadow::buildQuads();
if (shadowQuads().count() == 0) {
return;
}
QRect stlr, str, strr, srr, sbrr, sbr, sblr, slr; QRect stlr, str, strr, srr, sbrr, sbr, sblr, slr;
layoutShadowRects(str, strr, srr, sbrr, sbr, sblr, slr, stlr); layoutShadowRects(str, strr, srr, sbrr, sbr, sblr, slr, stlr);