summaryrefslogtreecommitdiffstats
path: root/x11vnc/win_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/win_utils.c')
-rw-r--r--x11vnc/win_utils.c35
1 files changed, 24 insertions, 11 deletions
diff --git a/x11vnc/win_utils.c b/x11vnc/win_utils.c
index eb147a8..aab05e7 100644
--- a/x11vnc/win_utils.c
+++ b/x11vnc/win_utils.c
@@ -43,7 +43,7 @@ Window parent_window(Window win, char **name) {
old_handler = XSetErrorHandler(trap_xerror);
trapped_xerror = 0;
- rc = XQueryTree(dpy, win, &r, &parent, &list, &nchild);
+ rc = XQueryTree_wr(dpy, win, &r, &parent, &list, &nchild);
XSetErrorHandler(old_handler);
if (! rc || trapped_xerror) {
@@ -53,7 +53,7 @@ Window parent_window(Window win, char **name) {
trapped_xerror = 0;
if (list) {
- XFree(list);
+ XFree_wr(list);
}
if (parent && name) {
XFetchName(dpy, parent, name);
@@ -77,6 +77,11 @@ int valid_window(Window win, XWindowAttributes *attr_ret, int bequiet) {
if (win == None) {
return 0;
}
+#ifdef MACOSX
+ if (! dpy) {
+ return macosx_valid_window(win, attr_ret);
+ }
+#endif
RAWFB_RET(0)
#if NO_X11
nox11_exit(1);
@@ -179,14 +184,16 @@ void snapshot_stack_list(int free_only, double allowed_age) {
stack_list_num = 0;
last_free = now;
+#ifndef MACOSX
RAWFB_RET_VOID
-#if NO_X11
+#endif
+#if NO_X11 && !defined(MACOSX)
return;
#else
X_LOCK;
/* no need to trap error since rootwin */
- rc = XQueryTree(dpy, rootwin, &r, &w, &list, &ui);
+ rc = XQueryTree_wr(dpy, rootwin, &r, &w, &list, &ui);
num = (int) ui;
if (! rc) {
@@ -213,6 +220,12 @@ void snapshot_stack_list(int free_only, double allowed_age) {
j++;
}
for (i=0; i<blackouts; i++) {
+#ifdef MACOSX
+ if (! dpy) {
+ num = num - blackouts;
+ break;
+ }
+#endif
stack_list[j].win = 0x1;
stack_list[j].fetched = 1;
stack_list[j].valid = 1;
@@ -237,7 +250,7 @@ if (0) fprintf(stderr, "blackr: %d %dx%d+%d+%d\n", i,
stack_list_num, stack_list_len);
}
- XFree(list);
+ XFree_wr(list);
X_UNLOCK;
#endif /* NO_X11 */
}
@@ -296,7 +309,7 @@ Window query_pointer(Window start) {
if (start == None) {
start = rootwin;
}
- if (XQueryPointer(dpy, start, &r, &c, &rx, &ry, &wx, &wy, &mask)) {
+ if (XQueryPointer_wr(dpy, start, &r, &c, &rx, &ry, &wx, &wy, &mask)) {
return c;
} else {
return None;
@@ -314,7 +327,7 @@ unsigned int mask_state(void) {
return 0;
#else
- if (XQueryPointer(dpy, rootwin, &r, &c, &rx, &ry, &wx, &wy, &mask)) {
+ if (XQueryPointer_wr(dpy, rootwin, &r, &c, &rx, &ry, &wx, &wy, &mask)) {
return mask;
} else {
return 0;
@@ -462,7 +475,7 @@ Window descend_pointer(int depth, Window start, char *name_info, int len) {
} else {
filled = 1;
}
- XFree(name);
+ XFree_wr(name);
}
}
if (store && classhint && ! filled) {
@@ -492,14 +505,14 @@ Window descend_pointer(int depth, Window start, char *name_info, int len) {
filled = 1;
}
if (classhint->res_class) {
- XFree(classhint->res_class);
+ XFree_wr(classhint->res_class);
}
if (classhint->res_name) {
- XFree(classhint->res_name);
+ XFree_wr(classhint->res_name);
}
}
}
- if (! XQueryPointer(dpy, c, &r, &c, &rx, &ry, &wx, &wy, &m)) {
+ if (! XQueryPointer_wr(dpy, c, &r, &c, &rx, &ry, &wx, &wy, &m)) {
break;
}
if (! c) {