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:
parent
1c01bd3337
commit
c561207946
2 changed files with 3 additions and 5 deletions
|
@ -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 )
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue