diff options
author | runge <runge> | 2006-11-13 15:33:00 +0000 |
---|---|---|
committer | runge <runge> | 2006-11-13 15:33:00 +0000 |
commit | 4a83f87609b9d53b2983806be58ccd02498a5cd3 (patch) | |
tree | a79c96930a97fb162edd1765adece43425f8db8a /x11vnc/win_utils.c | |
parent | 5f9693d4a2c511f8f2ea069373807c5f36ac1459 (diff) | |
download | libvncserver-4a83f87609b9d53b2983806be58ccd02498a5cd3.zip libvncserver-4a83f87609b9d53b2983806be58ccd02498a5cd3.tar.gz |
x11vnc: Native Mac OS X support.
Diffstat (limited to 'x11vnc/win_utils.c')
-rw-r--r-- | x11vnc/win_utils.c | 35 |
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) { |