From 1dd73826f941d2034d763e47280e527e5c731309 Mon Sep 17 00:00:00 2001 From: Richard Grenville Date: Sat, 3 Nov 2012 10:30:32 +0800 Subject: Bug fix: A XserverRegion leak - Fix a XserverRegion leak introduced in b78ab316fd. I hope this is the reason of the slowdowns many users reported. Thanks to xrestop! - Cache the screen region as a variable. - Add debugging code for region allocation. --- compton.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'compton.h') diff --git a/compton.h b/compton.h index d78e64fe1..3bed918a4 100644 --- a/compton.h +++ b/compton.h @@ -89,6 +89,26 @@ #include #endif +#ifdef DEBUG_ALLOC_REG +static inline XserverRegion +XFixesCreateRegion_(Display *dpy, XRectangle *p, int n, + const char *func, int line) { + XserverRegion reg = XFixesCreateRegion(dpy, p, n); + printf("%#010lx: XFixesCreateRegion() in %s():%d\n", reg, func, line); + return reg; +} + +static inline void +XFixesDestroyRegion_(Display *dpy, XserverRegion reg, + const char *func, int line) { + XFixesDestroyRegion(dpy, reg); + printf("%#010lx: XFixesDestroyRegion() in %s():%d\n", reg, func, line); +} + +#define XFixesCreateRegion(dpy, p, n) XFixesCreateRegion_(dpy, p, n, __func__, __LINE__) +#define XFixesDestroyRegion(dpy, reg) XFixesDestroyRegion_(dpy, reg, __func__, __LINE__) +#endif + // === Constants === #if !(COMPOSITE_MAJOR > 0 || COMPOSITE_MINOR >= 2) #error libXcomposite version unsupported -- cgit v1.2.1