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.
This commit is contained in:
Richard Grenville
2012-11-03 10:30:32 +08:00
parent a0b0ff5d0a
commit 9fb62874c1
2 changed files with 38 additions and 1 deletions

View File

@ -89,6 +89,26 @@
#include <GL/glx.h>
#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