[Xfce4-commits] [xfce/xfwm4] 02/02: compositor: fix clipping region with zooming
noreply at xfce.org
noreply at xfce.org
Fri Dec 8 20:01:14 CET 2017
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 <fourdan at 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 <fourdan at 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.
More information about the Xfce4-commits
mailing list