summaryrefslogtreecommitdiff
path: root/recordmydesktop/src/poll_damage.c
diff options
context:
space:
mode:
Diffstat (limited to 'recordmydesktop/src/poll_damage.c')
-rw-r--r--recordmydesktop/src/poll_damage.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/recordmydesktop/src/poll_damage.c b/recordmydesktop/src/poll_damage.c
index 09de911..d03f78d 100644
--- a/recordmydesktop/src/poll_damage.c
+++ b/recordmydesktop/src/poll_damage.c
@@ -27,6 +27,21 @@
#include <recordmydesktop.h>
+int rmdErrorHandler( Display *dpy, XErrorEvent *e )
+{
+ char error_desc[1024];
+ XGetErrorText(dpy,e->error_code,error_desc,sizeof(error_desc));
+ fprintf(stderr,"X Error: %s\n",error_desc);
+ fflush(stderr);
+ if((e->error_code==BadWindow)&&(e->request_code==X_GetWindowAttributes)){
+ fprintf(stderr,"BadWindow on XGetWindowAttributes.\nIgnoring...");
+ fflush(stderr);
+ return 0;
+ }
+ else
+ exit(1);
+}
+
void *PollDamage(ProgData *pdata){
Window root_return,
parent_return,
@@ -36,6 +51,8 @@ void *PollDamage(ProgData *pdata){
inserts=0;
XEvent event;
+ XSetErrorHandler(rmdErrorHandler);
+
XSelectInput (pdata->dpy,pdata->specs.root, SubstructureNotifyMask);
XQueryTree (pdata->dpy,
@@ -52,7 +69,7 @@ void *PollDamage(ProgData *pdata){
XDamageCreate (pdata->dpy, children[i],XDamageReportRawRectangles);
}
}
-
+ XFree(children);
XDamageCreate( pdata->dpy, pdata->brwin.windowid, XDamageReportRawRectangles);
© All Rights Reserved