diff options
author | Richard Grenville <[email protected]> | 2013-05-01 22:08:43 +0800 |
---|---|---|
committer | Richard Grenville <[email protected]> | 2013-05-01 22:08:43 +0800 |
commit | c742c97a8c68dc168cca8b135609eb1501ac3225 (patch) | |
tree | 312c46bd16fc302c3962bcc34463bd5b5a3c3f48 /compton.c | |
parent | e94746bbbb104fd11dec9c0a218b0d8f9f5c9252 (diff) | |
download | tdebase-c742c97a8c68dc168cca8b135609eb1501ac3225.tar.gz tdebase-c742c97a8c68dc168cca8b135609eb1501ac3225.zip |
Misc: Validate wallpaper pixmap & Documentation update
- Split Pixmap validation out to validate_pixmap(). Validate wallpaper
Pixmap as well.
- Update README.md and man page.
Diffstat (limited to 'compton.c')
-rw-r--r-- | compton.c | 28 |
1 files changed, 4 insertions, 24 deletions
@@ -670,30 +670,6 @@ win_rounded_corners(session_t *ps, win *w) { } /** - * Validate pixmap of a window, and destroy pixmap and picture if invalid. - */ -static void -win_validate_pixmap(session_t *ps, win *w) { - if (!w->paint.pixmap) - return; - - // Detect whether the pixmap is valid with XGetGeometry. Well, maybe there - // are better ways. - bool invalid = false; - { - Window rroot = None; - int rx = 0, ry = 0; - unsigned rwid = 0, rhei = 0, rborder = 0, rdepth = 0; - invalid = (!XGetGeometry(ps->dpy, w->paint.pixmap, &rroot, &rx, &ry, - &rwid, &rhei, &rborder, &rdepth) || !rwid || !rhei); - } - - // Destroy pixmap and picture, if invalid - if (invalid) - free_paint(ps, &w->paint); -} - -/** * Add a pattern to a condition linked list. */ static bool @@ -840,6 +816,10 @@ get_root_tile(session_t *ps) { free_winprop(&prop); } + // Make sure the pixmap we got is valid + if (pixmap && !validate_pixmap(ps, pixmap)) + pixmap = None; + // Create a pixmap if there isn't any if (!pixmap) { pixmap = XCreatePixmap(ps->dpy, ps->root, 1, 1, ps->depth); |