Do not release the bound pixmap every time the decoration get's updated. That is the reason why effects were slow when active client changed. Additional do a XSync when the decoration pixmap is painted. That ensures that the pixmap is painted before the texture from pixmap is done.

BUG: 191694

svn path=/trunk/KDE/kdebase/workspace/; revision=969647
This commit is contained in:
Martin Gräßlin 2009-05-18 16:42:23 +00:00
parent 1c01bd3337
commit c561207946
2 changed files with 3 additions and 5 deletions

View file

@ -512,6 +512,8 @@ void Client::ensureDecorationPixmapsPainted()
XFreeGC( display(), gc ); XFreeGC( display(), gc );
} }
} }
else
XSync( display(), false );
} }
void Client::repaintDecorationPixmap( QPixmap& pix, const QRect& r, const QPixmap& src, QRegion reg ) void Client::repaintDecorationPixmap( QPixmap& pix, const QRect& r, const QPixmap& src, QRegion reg )

View file

@ -1530,12 +1530,8 @@ void SceneOpenGL::Window::paintDecoration( const QPixmap* decoration, TextureTyp
} }
else else
{ {
if( decorationTexture->texture() != None )
decorationTexture->release();
bool success = decorationTexture->load( decoration->handle(), decoration->size(), decoration->depth() ); bool success = decorationTexture->load( decoration->handle(), decoration->size(), decoration->depth() );
if( success ) if( !success )
toplevel->resetDamage( rect );
else
{ {
kDebug( 1212 ) << "Failed to bind decoartion"; kDebug( 1212 ) << "Failed to bind decoartion";
return; return;