summaryrefslogtreecommitdiffstats
path: root/compton.c
diff options
context:
space:
mode:
authorRichard Grenville <pyxlcy@gmail.com>2012-11-08 19:39:13 +0800
committerRichard Grenville <pyxlcy@gmail.com>2012-11-08 19:45:39 +0800
commitbaed7f4b0c211ea2ff04bf9e009ab6e334dad3e4 (patch)
tree682ca4265a3f8534e2bb8fac33cba599aaccb90e /compton.c
parent798c631e2b3f08fd3d61b766f71507a896bbbe6f (diff)
downloadtdebase-baed7f4b0c211ea2ff04bf9e009ab6e334dad3e4.tar.gz
tdebase-baed7f4b0c211ea2ff04bf9e009ab6e334dad3e4.zip
Bug fix: Shape update of opaque windows not handled correctly
- Fix a bug that causes rendering issues if a opaque window changes shape. - Remove abundant handling code in paint_preprocess() when generating border_size as border_size() is no longer relying on XFixesCreateRegionFromWindow() right now by default. - Add extra code to print backtrace in DEBUG_ALLOC_REG. - Move initialization of fade_time closer to first paint.
Diffstat (limited to 'compton.c')
-rw-r--r--compton.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/compton.c b/compton.c
index 6b25c0fcc..cc0a03c11 100644
--- a/compton.c
+++ b/compton.c
@@ -1428,15 +1428,7 @@ paint_preprocess(Display *dpy, win *list) {
// Fetch bounding region
if (!w->border_size) {
- // Build a border_size ourselves if window is not shaped, to avoid
- // getting an invalid border_size region from X if the window is
- // unmapped/destroyed
- if (!w->bounding_shaped) {
- w->border_size = win_get_region(dpy, w);
- }
- else if (IsUnmapped != w->a.map_state) {
- w->border_size = border_size(dpy, w);
- }
+ w->border_size = border_size(dpy, w);
}
// Fetch window extents
@@ -3220,6 +3212,8 @@ ev_shape_notify(XShapeEvent *ev) {
// Redo bounding shape detection and rounded corner detection
win_update_shape(dpy, w);
+
+ update_reg_ignore_expire(w);
}
/**
@@ -4478,8 +4472,6 @@ main(int argc, char **argv) {
get_cfg(argc, argv);
- fade_time = get_time_ms();
-
dpy = XOpenDisplay(opts.display);
if (!dpy) {
fprintf(stderr, "Can't open display\n");
@@ -4659,6 +4651,8 @@ main(int argc, char **argv) {
reg_ignore_expire = True;
+ fade_time = get_time_ms();
+
t = paint_preprocess(dpy, list);
paint_all(dpy, None, t);