This is an automated email from the git hooks/post-receive script. o l i v i e r p u s h e d a c o m m i t t o b r a n c h m a s t e r in repository xfce/xfwm4.
commit a7db4b7d82ce46d3d5e55ad3e86b48e42ef6c809 Author: Olivier Fourdan <four...@xfce.org> Date: Fri Dec 8 19:59:14 2017 +0100 compositor: fix clipping region with zooming When using xpresent as vblank method, the clipping region would not match the zoom level causing artifacts. Signed-off-by: Olivier Fourdan <four...@xfce.org> --- src/compositor.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/compositor.c b/src/compositor.c index 94e177f..91cb9f1 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -2122,8 +2122,7 @@ paint_all (ScreenInfo *screen_info, XserverRegion region, gushort buffer) 0.0 /* blue */); } XFixesIntersectRegion (dpy, cw->borderClip, cw->borderClip, cw->borderSize); - XFixesSetPictureClipRegion (dpy, paint_buffer, - 0, 0, cw->borderClip); + XFixesSetPictureClipRegion (dpy, paint_buffer, 0, 0, cw->borderClip); paint_win (cw, paint_region, paint_buffer, FALSE); } @@ -2140,9 +2139,7 @@ paint_all (ScreenInfo *screen_info, XserverRegion region, gushort buffer) } TRACE ("Copying data back to screen"); - /* Set clipping back to the given region */ - XFixesSetPictureClipRegion (dpy, screen_info->rootBuffer[buffer], - 0, 0, region); +#ifdef HAVE_EPOXY if (screen_info->use_glx) { if (screen_info->zoomed) @@ -2150,14 +2147,25 @@ paint_all (ScreenInfo *screen_info, XserverRegion region, gushort buffer) paint_cursor (screen_info, region, screen_info->rootBuffer[buffer]); } + /* Set clipping back to the given region */ + XFixesSetPictureClipRegion (dpy, screen_info->rootBuffer[buffer], 0, 0, region); + } else +#endif /* HAVE_EPOXY */ { if (screen_info->zoomed) { paint_cursor (screen_info, region, paint_buffer); - XFixesSetPictureClipRegion (dpy, paint_buffer, - 0, 0, None); + /* Fixme: copy back whole screen if zoomed + It would be better to scale the clipping region if possible. */ + XFixesSetPictureClipRegion (dpy, screen_info->rootBuffer[buffer], 0, 0, None); + XFixesSetPictureClipRegion (dpy, paint_buffer, 0, 0, None); + } + else + { + /* Set clipping back to the given region */ + XFixesSetPictureClipRegion (dpy, screen_info->rootBuffer[buffer], 0, 0, region); } } -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits