Try to use XComposite overlay also with XRender.

svn path=/branches/work/kwin_composite/; revision=610137
This commit is contained in:
Luboš Luňák 2006-12-03 13:38:16 +00:00
parent a03b796335
commit a643ff2b00
2 changed files with 17 additions and 5 deletions

View file

@ -261,8 +261,11 @@ void Workspace::setupOverlay( Window w )
{
assert( overlay != None );
XShapeCombineRectangles( display(), overlay, ShapeInput, 0, 0, NULL, 0, ShapeSet, Unsorted );
XShapeCombineRectangles( display(), w, ShapeInput, 0, 0, NULL, 0, ShapeSet, Unsorted );
XMapWindow( display(), w );
if( w != None )
{
XShapeCombineRectangles( display(), w, ShapeInput, 0, 0, NULL, 0, ShapeSet, Unsorted );
XMapWindow( display(), w );
}
XMapRaised( display(), overlay );
}

View file

@ -77,9 +77,17 @@ SceneXrender::SceneXrender( Workspace* ws )
{
// create XRender picture for the root window
format = XRenderFindVisualFormat( display(), DefaultVisual( display(), DefaultScreen( display())));
XRenderPictureAttributes pa;
pa.subwindow_mode = IncludeInferiors;
front = XRenderCreatePicture( display(), rootWindow(), format, CPSubwindowMode, &pa );
if( wspace->createOverlay())
{
wspace->setupOverlay( None );
front = XRenderCreatePicture( display(), wspace->overlayWindow(), format, 0, NULL );
}
else
{
XRenderPictureAttributes pa;
pa.subwindow_mode = IncludeInferiors;
front = XRenderCreatePicture( display(), rootWindow(), format, CPSubwindowMode, &pa );
}
createBuffer();
}
@ -87,6 +95,7 @@ SceneXrender::~SceneXrender()
{
XRenderFreePicture( display(), front );
XRenderFreePicture( display(), buffer );
wspace->destroyOverlay();
for( QMap< Toplevel*, Window >::Iterator it = windows.begin();
it != windows.end();
++it )