diff --git a/COMPOSITE_TODO b/COMPOSITE_TODO index 0659378611..8312334471 100644 --- a/COMPOSITE_TODO +++ b/COMPOSITE_TODO @@ -150,8 +150,6 @@ OpenGL TODO XRender TODO ============================== -+ SceneXrender::Window::performPaint() doesn't use brightness - + SceneXrender::paintTransformedScreen() doesn't handle properly extending of painted area in window's pre-paint - see the transformedShape() comment - and currently seems to be generally broken diff --git a/scene_xrender.cpp b/scene_xrender.cpp index 6c9614708b..097155ea51 100644 --- a/scene_xrender.cpp +++ b/scene_xrender.cpp @@ -516,12 +516,18 @@ void SceneXrender::Window::performPaint( int mask, QRegion region, WindowPaintDa { XRenderComposite( display(), PictOpSrc, pic, None, buffer, 0, 0, 0, 0, x, y, width, height); + // fake brightness change by overlaying black + XRenderColor col = { 0, 0, 0, 0xffff * ( 1 - data.brightness ) }; + XRenderFillRectangle( display(), PictOpOver, buffer, &col, x, y, width, height ); } else { Picture alpha = alphaMask( data.opacity ); XRenderComposite( display(), PictOpOver, pic, alpha, buffer, 0, 0, 0, 0, x, y, width, height); + // fake brightness change by overlaying black + XRenderColor col = { 0, 0, 0, 0xffff * ( 1 - data.brightness ) * data.opacity }; + XRenderFillRectangle( display(), PictOpOver, buffer, &col, x, y, width, height ); transformed_shape = QRegion(); } }