AC_DEFINE(X11, 1, [Define if you want to use X11])
AC_DEFINE(HAVE_X11, 1, [Define if you have X11])
AM_CONDITIONAL(BUILD_X11, true)
+ AC_CHECK_LIB(Xdamage, XDamageQueryExtension, [AC_DEFINE([HAVE_XDAMAGE], 1, [Xdamage]) LIBS="$LIBS -lXdamage"], [AC_MSG_ERROR([something went wrong when checking for Xdamage])])
if test $dah != "no"; then
AC_DEFINE(DOUBLE_BUFFER, 1, [Define if you want support for the DBE extension])
AC_CHECK_LIB(Xext, XdbeQueryExtension, [AC_DEFINE([HAVE_XDBE], 1, [Xdbe]) LIBS="$LIBS -lXext"],
#include <sys/time.h>
#ifdef X11
#include <X11/Xutil.h>
+#include <X11/extensions/Xdamage.h>
#endif /* X11 */
#include <sys/types.h>
#include <sys/stat.h>
#ifdef X11
Region region = XCreateRegion();
+ int event_base, error_base;
+ if (!XDamageQueryExtension (display, &event_base, &error_base)) {
+ ERR("Xdamage extension unavailable");
+ }
+ Window root = RootWindow(display, screen);
+ Damage damage = XDamageCreate(display, root, XDamageReportRawRectangles);
+/* XserverRegion region2 = XFixesCreateRegion(display, 0, 0);
+ XserverRegion part = XFixesCreateRegion(display, 0, 0);*/
+ XserverRegion region2 = XFixesCreateRegionFromWindow(display, window.window, 0);
+ XserverRegion part = XFixesCreateRegionFromWindow(display, window.window, 0);
#endif /* X11 */
info.looped = 0;
#endif
#ifdef X11
+ XDamageSubtract(display, damage, region2, None);
+ XFixesSetRegion(display, region2, 0, 0);
XFlush(display);
/* wait for X event or timeout */
#endif
default:
+ if (ev.type == event_base + XDamageNotify) {
+ XDamageNotifyEvent *dev = (XDamageNotifyEvent *) &ev;
+ XFixesSetRegion(display, part, &dev->area, 1);
+ XFixesUnionRegion(display, region2, region2, part);
+ }
break;
}
}