kwin: Optimize shadow quad selection

Loop over the window quad list once instead of eight times when
selecting the shadow quads.
This commit is contained in:
Fredrik Höglund 2013-05-29 17:49:53 +02:00
parent c8e3d670e7
commit 49e78a3507

View file

@ -1220,17 +1220,29 @@ void SceneOpenGL::Window::paintDecoration(GLTexture *texture, TextureType decora
void SceneOpenGL::Window::paintShadow(const QRegion &region, const WindowPaintData &data, bool hardwareClipping)
{
WindowQuadList quads = data.quads.select(WindowQuadShadowTopLeft);
quads.append(data.quads.select(WindowQuadShadowTop));
quads.append(data.quads.select(WindowQuadShadowTopRight));
quads.append(data.quads.select(WindowQuadShadowRight));
quads.append(data.quads.select(WindowQuadShadowBottomRight));
quads.append(data.quads.select(WindowQuadShadowBottom));
quads.append(data.quads.select(WindowQuadShadowBottomLeft));
quads.append(data.quads.select(WindowQuadShadowLeft));
if (quads.isEmpty()) {
return;
WindowQuadList quads;
foreach (const WindowQuad &quad, data.quads) {
switch (quad.type()) {
case WindowQuadShadowTopLeft:
case WindowQuadShadowTop:
case WindowQuadShadowTopRight:
case WindowQuadShadowLeft:
case WindowQuadShadowRight:
case WindowQuadShadowBottomLeft:
case WindowQuadShadowBottom:
case WindowQuadShadowBottomRight:
quads.append(quad);
break;
default:
break;
}
}
if (quads.isEmpty())
return;
GLTexture *texture = static_cast<SceneOpenGLShadow*>(m_shadow)->shadowTexture();
if (!texture) {
return;