diff --git a/x11vnc/8to24.c b/x11vnc/8to24.c index 19061e6..b07e468 100644 --- a/x11vnc/8to24.c +++ b/x11vnc/8to24.c @@ -4,6 +4,7 @@ #include "scan.h" #include "util.h" #include "win_utils.h" +#include "xwrappers.h" int multivis_count = 0; int multivis_24count = 0; diff --git a/x11vnc/README b/x11vnc/README index 152561d..d1e44a6 100644 --- a/x11vnc/README +++ b/x11vnc/README @@ -1,5 +1,5 @@ -x11vnc README file Date: Thu Dec 28 00:14:27 EST 2006 +x11vnc README file Date: Thu Dec 28 10:42:34 EST 2006 The following information is taken from these URLs: diff --git a/x11vnc/connections.c b/x11vnc/connections.c index fd44018..50cf6cf 100644 --- a/x11vnc/connections.c +++ b/x11vnc/connections.c @@ -17,6 +17,7 @@ #include "xwrappers.h" #include "xevents.h" #include "macosxCG.h" +#include "userinput.h" /* * routines for handling incoming, outgoing, etc connections diff --git a/x11vnc/cursor.c b/x11vnc/cursor.c index 0f3b2c6..ab9218c 100644 --- a/x11vnc/cursor.c +++ b/x11vnc/cursor.c @@ -1227,6 +1227,8 @@ unsigned long get_cursor_serial(int mode) { return last_cursor; } else if (mode == 1) { return (unsigned long) last_index; + } else { + return (unsigned long) last_index; } } @@ -1320,7 +1322,7 @@ fprintf(stderr, "sc: %d %d/%d %d - %d %d\n", serial, w, h, cbpp, xhot, yhot); oldest = i; oldtime = curs_times[i]; } - if (serial == curs_index[i]) { + if (serial == (int) curs_index[i]) { /* * got a hit with an existing cursor, * use that one. diff --git a/x11vnc/gui.c b/x11vnc/gui.c index f5b8a8a..28f4109 100644 --- a/x11vnc/gui.c +++ b/x11vnc/gui.c @@ -267,7 +267,9 @@ if (0) fprintf(stderr, "run_gui: %s -- %d %d\n", gui_xdisplay, connect_to_x11vnc initialize_x11vnc_remote_prop(); } +#ifdef MACOSX macjump: +#endif signal(SIGUSR1, sigusr1); got_sigusr1 = 0; @@ -630,7 +632,9 @@ void do_gui(char *opts, int sleep) { } XCloseDisplay_wr(test_dpy); +#ifdef MACOSX startit: +#endif if (start_x11vnc) { diff --git a/x11vnc/keyboard.c b/x11vnc/keyboard.c index aedc021..a13a1b0 100644 --- a/x11vnc/keyboard.c +++ b/x11vnc/keyboard.c @@ -14,6 +14,7 @@ #include "v4l.h" #include "linuxfb.h" #include "uinput.h" +#include "macosx.h" void get_keystate(int *keystate); void clear_modifiers(int init); diff --git a/x11vnc/macosx.c b/x11vnc/macosx.c index 86833b9..ccea8df 100644 --- a/x11vnc/macosx.c +++ b/x11vnc/macosx.c @@ -48,12 +48,15 @@ void macosx_event_loop(void) { return; } char *macosx_console_guess(char *str, int *fd) { + if (!str || !fd) {} return NULL; } void macosx_key_command(rfbBool down, rfbKeySym keysym, rfbClientPtr client) { + if (!down || !keysym || !client) {} return; } void macosx_pointer_command(int mask, int x, int y, rfbClientPtr client) { + if (!mask || !x || !y || !client) {} return; } char *macosx_get_fb_addr(void) { @@ -63,35 +66,45 @@ int macosx_get_cursor(void) { return 0; } int macosx_get_cursor_pos(int *x, int *y) { + if (!x || !y) {} return 0; } void macosx_send_sel(char * str, int len) { + if (!str || !len) {} return; } void macosx_set_sel(char * str, int len) { + if (!str || !len) {} return; } int macosx_valid_window(Window w, XWindowAttributes* a) { + if (!w || !a) {} return 0; } Status macosx_xquerytree(Window w, Window *root_return, Window *parent_return, Window **children_return, unsigned int *nchildren_return) { + if (!w || !root_return || !parent_return || !children_return || !nchildren_return) {} return (Status) 0; } void macosx_add_mapnotify(Window win, int level, int map) { + if (!win || !level || !map) {} return; } void macosx_add_create(Window win, int level) { + if (!win || !level) {} return; } void macosx_add_destroy(Window win, int level) { + if (!win || !level) {} return; } void macosx_add_visnotify(Window win, int level, int obscured) { + if (!win || !level || !obscured) {} return; } int macosx_checkevent(XEvent *ev) { + if (!ev) {} return 0; } diff --git a/x11vnc/macosxCG.c b/x11vnc/macosxCG.c index b7dd2e8..81175a4 100644 --- a/x11vnc/macosxCG.c +++ b/x11vnc/macosxCG.c @@ -6,6 +6,8 @@ * will not work!! */ +void macosxCG_dummy(void) {} + #if (defined(__MACH__) && defined(__APPLE__)) #include diff --git a/x11vnc/pointer.c b/x11vnc/pointer.c index df7064b..d550160 100644 --- a/x11vnc/pointer.c +++ b/x11vnc/pointer.c @@ -15,6 +15,7 @@ #include "linuxfb.h" #include "uinput.h" #include "scan.h" +#include "macosx.h" int pointer_queued_sent = 0; diff --git a/x11vnc/scan.c b/x11vnc/scan.c index 1251742..633917f 100644 --- a/x11vnc/scan.c +++ b/x11vnc/scan.c @@ -13,6 +13,7 @@ #include "unixpw.h" #include "screen.h" #include "macosx.h" +#include "userinput.h" /* * routines for scanning and reading the X11 display for changes, and @@ -2351,7 +2352,6 @@ static void blackout_regions(void) { * are other issues... use -fs 1.0 to disable. */ int copy_screen(void) { - int pixelsize = bpp/8; char *fbp; int i, y, block_size; @@ -2462,7 +2462,7 @@ static void snap_all_rawfb(void) { } int copy_snap(void) { - int db = 1, pixelsize = bpp/8; + int db = 1; char *fbp; int i, y, block_size; double dt; @@ -2872,7 +2872,9 @@ if (ncache > 0) { } } else { #if !NO_X11 - if (XCheckTypedEvent(dpy, MapNotify, &ev)) { + if (raw_fb_str) { + ; + } else if (XCheckTypedEvent(dpy, MapNotify, &ev)) { gotone = 1; } else if (XCheckTypedEvent(dpy, UnmapNotify, &ev)) { gotone = 2; @@ -2995,7 +2997,7 @@ int scan_for_updates(int count_only) { double frac2 = 0.35; /* or 3rd */ double frac3 = 0.02; /* do scan_display() again after copy_tiles() */ static double last_poll = 0.0; - double dtmp; + double dtmp = 0.0; if (unixpw_in_progress) return 0; @@ -3190,9 +3192,14 @@ int scan_for_updates(int count_only) { } if (unixpw_in_progress) return 0; + /* XXX Y */ if (0 && tile_count > 20) print_tiles(); -//dtmp = dnow(); +#if 0 +dtmp = dnow(); +#else +dtmp = 0.0; +#endif if (old_copy_tile) { tile_diffs = copy_all_tiles(); @@ -3200,7 +3207,10 @@ if (0 && tile_count > 20) print_tiles(); tile_diffs = copy_all_tile_runs(); } SCAN_FATAL(tile_diffs); -//if (tile_count) fprintf(stderr, "XX copytile: %.4f tile_count: %d\n", dnow() - dtmp, tile_count); + +#if 0 +if (tile_count) fprintf(stderr, "XX copytile: %.4f tile_count: %d\n", dnow() - dtmp, tile_count); +#endif /* * This backward pass for upward and left tiles complements what diff --git a/x11vnc/screen.c b/x11vnc/screen.c index 7b583fa..f61a866 100644 --- a/x11vnc/screen.c +++ b/x11vnc/screen.c @@ -701,7 +701,6 @@ void free_old_fb(void) { void do_new_fb(int reset_mem) { XImage *fb; - int i; /* for threaded we really should lock libvncserver out. */ if (use_threads) { diff --git a/x11vnc/solid.c b/x11vnc/solid.c index f43d69d..a2bb3cf 100644 --- a/x11vnc/solid.c +++ b/x11vnc/solid.c @@ -4,6 +4,7 @@ #include "win_utils.h" #include "xwrappers.h" #include "connections.h" +#include "cleanup.h" char *guess_desktop(void); void solid_bg(int restore); diff --git a/x11vnc/user.c b/x11vnc/user.c index 7349c8b..cf7cbe4 100644 --- a/x11vnc/user.c +++ b/x11vnc/user.c @@ -980,7 +980,7 @@ void check_new_passwds(int force) { } rfbBool custom_passwd_check(rfbClientPtr cl, const char *response, int len) { - char *input, *q, *cmd; + char *input, *cmd; char num[16]; int j, i, n, rc; diff --git a/x11vnc/userinput.c b/x11vnc/userinput.c index 31f1864..14605b3 100644 --- a/x11vnc/userinput.c +++ b/x11vnc/userinput.c @@ -18,6 +18,8 @@ #include "unixpw.h" #include "macosx.h" #include "macosxCGS.h" +#include "cursor.h" +#include "screen.h" /* * user input handling heuristics @@ -57,6 +59,9 @@ int fb_update_sent(int *count); int check_user_input(double dt, double dtr, int tile_diffs, int *cnt); void do_copyregion(sraRegionPtr region, int dx, int dy, int mode); +int check_ncache(int reset, int mode); +int find_rect(int idx, int x, int y, int w, int h); + static void get_client_regions(int *req, int *mod, int *cpy, int *num) ; static void parse_scroll_copyrect_str(char *scr); static void parse_wireframe_str(char *wf); @@ -1825,7 +1830,7 @@ if (debug_scroll > 1) fprintf(stderr, "<<<-rfbDoCopyRect req: %d mod: %d cpy: %d iter = sraRgnGetReverseIterator(region, dx < 0, dy < 0); while(sraRgnIteratorNext(iter, &rect)) { - int j, c, t, Dx, Dy; + int j, c, t; x1 = rect.x1; y1 = rect.y1; @@ -1962,7 +1967,6 @@ void batch_copyregion(sraRegionPtr* region, int *dx, int *dy, int ncr, double de rfbClientIteratorPtr i; rfbClientPtr cl; int k, direct, mode, nrects = 0; - int hid_cursor = 0; /* XXX Y */ @@ -3178,7 +3182,7 @@ fprintf(stderr, "bo: %d/%lx\n", k, swin); continue; } #endif - if (boff <= swin && swin < boff + bwin) { + if (boff <= (int) swin && (int) swin < boff + bwin) { ; /* blackouts */ } else if (! stack_list[k].fetched || stack_list[k].time > tm + 2.0) { @@ -3556,7 +3560,7 @@ void clear_win_events(void) { trapped_xerror = 0; } XSetErrorHandler(old_handler); - fprintf(stderr, " 0x%x\n", NPP_nwin); + fprintf(stderr, " 0x%x\n", (unsigned int) NPP_nwin); } #endif } @@ -3627,6 +3631,7 @@ void ncache_pre_portions(Window orig_frame, Window frame, int *nidx_in, int try_ int orig_x, int orig_y, int orig_w, int orig_h, int x, int y, int w, int h, double ntim) { int nidx, np = ncache_pad; + if (!ntim) {} *use_batch = 0; *nidx_in = -1; NPP_nreg = 0; @@ -3754,7 +3759,7 @@ void ncache_pre_portions(Window orig_frame, Window frame, int *nidx_in, int try_ } } -ncache_post_portions(int nidx, int use_batch, int orig_x, int orig_y, int orig_w, int orig_h, +void ncache_post_portions(int nidx, int use_batch, int orig_x, int orig_y, int orig_w, int orig_h, int x, int y, int w, int h, double batch_delay, double ntim) { int np = ncache_pad; @@ -3957,7 +3962,7 @@ ncache_post_portions(int nidx, int use_batch, int orig_x, int orig_y, int orig_w sraRgnDestroy(batch_reg[k]); } fprintf(stderr, "FB_COPY: %.4f XX did batch 0x%x %3d su: %dx%d+%d+%d bs: %dx%d+%d+%d\n", dnow() - ntim, - cache_list[nidx].win, nidx, su_w, su_h, su_x, su_y, bs_w, bs_h, bs_x, bs_y); + (unsigned int) cache_list[nidx].win, nidx, su_w, su_h, su_x, su_y, bs_w, bs_h, bs_x, bs_y); } cache_list[nidx].x = x + np; cache_list[nidx].y = y + np; @@ -3994,7 +3999,7 @@ fprintf(stderr, "FB_COPY: %.4f XX did batch 0x%x %3d su: %dx%d+%d+%d bs: %dx%d+ void do_copyrect_drag_move(Window orig_frame, Window frame, int *nidx, int try_batch, int now_x, int now_y, int orig_w, int orig_h, int x, int y, int w, int h, double batch_delay) { - int sent_copyrect, obscured; + int sent_copyrect = 1, obscured = 0; int dx, dy; int use_batch = 0; double ntim = dnow(); @@ -4028,7 +4033,6 @@ fprintf(stderr, "FB_COPY: %.4f 3) FAILED.\n", dnow() - ntim); } sraRgnDestroy(r0); sraRgnDestroy(r1); - sent_copyrect = 1; if (sent_copyrect) { if (use_batch) { @@ -4098,6 +4102,8 @@ fprintf(stderr, "FAW orig_frame unmapped.\n"); } check_ncache(0, 2); } +#else + if (!orig_frame || !frame || !flush) {} #endif } @@ -4153,7 +4159,7 @@ int check_wireframe(void) { int frame_changed = 0, drew_box = 0, got_2nd_pointer = 0; int try_copyrect_drag = 1, do_copyrect_drag = -1; - int now_x, now_y, nidx = -1; + int now_x = 0, now_y = 0, nidx = -1; double copyrect_drag_delay = -1.0; int try_batch = 1; /* XXX Y */ int mac_skip = 0; @@ -4170,7 +4176,6 @@ int check_wireframe(void) { double max_spin = wireframe_t3; double min_draw = wireframe_t4; int try_it = 0; - Window desc[6]; DB_SET if (unixpw_in_progress) return 0; @@ -4376,15 +4381,15 @@ if (db) fprintf(stderr, "INTERIOR\n"); rfbCFD(1000); } if (bdown0 == 2) { - int freq = 1; /* * This is to just update display_button_mask * which will also update got_local_pointer_input. */ - int px, py, x, y, w, h; - Window frame; check_x11_pointer(); #if 0 + /* what was this for? */ + Window frame; + int px, py, x, y, w, h; #ifdef MACOSX if (macosx_console) { macosx_get_cursor_pos(&x, &y); @@ -4604,10 +4609,9 @@ fprintf(stderr, "*** NO GPI DRAW_BOX\n"); } if (idx >= 0) { if (cache_list[idx].su_time > 0.0) { - double min_draw0 = min_draw; + /* XXX Y */ min_draw *= 0.66; do_copyrect_drag = 1; -//fprintf(stderr, "min_draw: %.4f -> %.4f\n", min_draw0, min_draw); } nidx = idx; } @@ -4710,7 +4714,6 @@ if (db || db2) fprintf(stderr, "NO button_mask\n"); } else { int spin_ms = (int) (spin * 1000 * 1000); int obscured, sent_copyrect = 0; - int np = ncache_pad; int nidx = -1; int use_batch = 0; @@ -4732,11 +4735,11 @@ fprintf(stderr, "\nSEND_COPYRECT %.4f %.4f\n", dnowx(), dnow() - ntim); if (! fb_push_wait(0.15, FB_COPY|FB_MOD)) { -fprintf(stderr, "FB_COPY failed, try one more...", dnow() - ntim); +fprintf(stderr, "FB_COPY failed, try one more... %.4f", dnow() - ntim); if (! fb_push_wait(0.15, FB_COPY|FB_MOD)) { -fprintf(stderr, "FB_COPY failed again!", dnow() - ntim); +fprintf(stderr, "FB_COPY failed again! %.4f", dnow() - ntim); } } @@ -5450,12 +5453,15 @@ fprintf(stderr, "check_wireframe: 1\n"); #if defined(NO_NCACHE) || (NO_X11 && !defined(MACOSX)) int check_ncache(int a, int b) { + if (!a || !b) {} return; } int lookup_win_index(Window win) { + if (!win) {} return -1; } int find_rect(int idx, int x, int y, int w, int h) { + if (!idx || !x || !y || !w || !h) {} return 0; } #else @@ -5620,7 +5626,7 @@ int lookup_win_index(Window win) { } } if (idx < 0) { -fprintf(stderr, "recentC(fail): %d 0x%x\n", idx, win); +fprintf(stderr, "recentC(fail): %d 0x%x\n", idx, (unsigned int) win); s3++; } if (s1 + s2 + s3 >= 100) { @@ -5840,9 +5846,7 @@ int fr_FAILt = 0; void expire_rects1(int idx, int w, int h, int *x_hit, int *y_hit, int big1, int big2, int cram) { sraRegionPtr r1, r2, r3; - sraRectangleIterator *iter; - sraRect rt; - int x, y, n; + int x = -1, y = -1, n; if (*x_hit < 0) { int i, k, old[10], N = 4; @@ -5901,7 +5905,7 @@ void expire_rects1(int idx, int w, int h, int *x_hit, int *y_hit, int big1, int int k_h = cache_list[ik].bs_h; fprintf(stderr, ">>**--**>> found rect via EXPIRE: %d 0x%x -- %dx%d+%d+%d %d %d -- %dx%d+%d+%d A: %d/%d\n", - ik, cache_list[ik].win, w, h, x, y, *x_hit, *y_hit, k_w, k_h, k_x, k_y, k_w * k_h, w * h); + ik, (unsigned int) cache_list[ik].win, w, h, x, y, *x_hit, *y_hit, k_w, k_h, k_x, k_y, k_w * k_h, w * h); free_rect(ik); fr_EXPIRE++; @@ -5994,7 +5998,7 @@ fprintf(stderr, ">>**--**>> found rect via FORCE: %dx%d+%d+%d -- %d %d\n", w, h, void expire_rects2(int idx, int w, int h, int *x_hit, int *y_hit, int big1, int big2, int cram) { sraRegionPtr r1, r2, r3; - int x, y, n, i, j, k; + int x = -1, y = -1, n, i, j, k; int nwgt_max = 128, nwgt = 0; int type[128]; int val[4][128]; @@ -6075,7 +6079,6 @@ fprintf(stderr, "Expire[%02d] %9.5f age=%9.4f area=%8d need=%8d\n", nwgt, 1 if (do_force) { int corner_x, corner_y; int x0, y0; - double nfac = 1.0; for (n = 1; n < ncache; n += 2) { if (big1 && ncache > 2 && n == 1) { @@ -6198,7 +6201,7 @@ fprintf(stderr, "j=%2d acc=%.6f r=%.6f\n", j, norm, r); int k_h = cache_list[ik].bs_h; fprintf(stderr, ">>**--**>> found rect [%d] via RAN EXPIRE: %d 0x%x -- %dx%d+%d+%d %d %d -- %dx%d+%d+%d A: %d/%d\n", - get_bs_n(*y_hit), ik, cache_list[ik].win, w, h, x, y, *x_hit, *y_hit, k_w, k_h, k_x, k_y, k_w * k_h, w * h); + get_bs_n(*y_hit), ik, (unsigned int) cache_list[ik].win, w, h, x, y, *x_hit, *y_hit, k_w, k_h, k_x, k_y, k_w * k_h, w * h); free_rect(ik); fr_EXPIRE++; @@ -6264,7 +6267,7 @@ void expire_rects(int idx, int w, int h, int *x_hit, int *y_hit, int big1, int b } int find_rect(int idx, int x, int y, int w, int h) { - sraRegionPtr r1, r2, r3; + sraRegionPtr r1, r2; sraRectangleIterator *iter; sraRect rt; int n, x_hit = -1, y_hit = -1; @@ -6544,6 +6547,8 @@ int valid_wr(int idx, Window win, XWindowAttributes *attr) { return valid_window(win, attr, 1); } } +#else + if (!idx) {} #endif return valid_window(win, attr, 1); } @@ -6562,11 +6567,11 @@ int bs_save(int idx, int *nbatch) { w1 = cache_list[idx].width; h1 = cache_list[idx].height; -fprintf(stderr, "backingstore save: 0x%x %3d \n", win, idx); +fprintf(stderr, "backingstore save: 0x%x %3d \n", (unsigned int) win, idx); X_LOCK; if (! valid_wr(idx, win, &attr)) { -fprintf(stderr, "bs_save: not a valid X window: 0x%x\n", win); +fprintf(stderr, "bs_save: not a valid X window: 0x%x\n", (unsigned int) win); /* XXX Y */ // DELETE(idx); X_UNLOCK; @@ -6644,7 +6649,7 @@ int su_save(int idx, int *nbatch) { int dx, dy, rc = 1; sraRegionPtr r, r0; -fprintf(stderr, "save-unders save: 0x%x %3d \n", win, idx); +fprintf(stderr, "save-unders save: 0x%x %3d \n", (unsigned int) win, idx); x1 = cache_list[idx].x; y1 = cache_list[idx].y; @@ -6653,7 +6658,7 @@ fprintf(stderr, "save-unders save: 0x%x %3d \n", win, idx); X_LOCK; if (! valid_wr(idx, win, &attr)) { -fprintf(stderr, "su_save: not a valid X window: 0x%x\n", win); +fprintf(stderr, "su_save: not a valid X window: 0x%x\n", (unsigned int) win); /* XXX Y */ // DELETE(idx); X_UNLOCK; @@ -6730,7 +6735,7 @@ int bs_restore(int idx, int *nbatch, int nopad) { int dx, dy; sraRegionPtr r, r0; -fprintf(stderr, "backingstore restore: 0x%x %3d \n", win, idx); +fprintf(stderr, "backingstore restore: 0x%x %3d \n", (unsigned int) win, idx); x1 = cache_list[idx].x; y1 = cache_list[idx].y; @@ -6739,7 +6744,7 @@ fprintf(stderr, "backingstore restore: 0x%x %3d \n", win, idx); X_LOCK; if (! valid_wr(idx, win, &attr)) { -fprintf(stderr, "BS_restore: not a valid X window: 0x%x\n", win); +fprintf(stderr, "BS_restore: not a valid X window: 0x%x\n", (unsigned int) win); DELETE(idx); X_UNLOCK; return 0; @@ -6821,7 +6826,7 @@ int su_restore(int idx, int *nbatch, int nopad) { sraRegionPtr r, r0; int invalid = 0; -fprintf(stderr, "save-unders restore: 0x%x %3d \n", win, idx); +fprintf(stderr, "save-unders restore: 0x%x %3d \n", (unsigned int) win, idx); x1 = cache_list[idx].x; y1 = cache_list[idx].y; @@ -6830,7 +6835,7 @@ fprintf(stderr, "save-unders restore: 0x%x %3d \n", win, idx); X_LOCK; if (! valid_wr(idx, win, &attr)) { -fprintf(stderr, "SU_restore: not a valid X window: 0x%x\n", win); +fprintf(stderr, "SU_restore: not a valid X window: 0x%x\n", (unsigned int) win); invalid = 1; x2 = x1; y2 = y1; @@ -6931,7 +6936,7 @@ void check_zero_rects(void) { } void block_stats(void) { - int n, k, area, s1, s2; + int n, k, s1, s2; static int t = -1; int vcnt, icnt, tcnt, vtot = 0, itot = 0, ttot = 0; t++; @@ -6946,7 +6951,7 @@ void block_stats(void) { int y = cache_list[k].bs_y; int w = cache_list[k].bs_w; int h = cache_list[k].bs_h; - int rc; + int rc = 0; Window win = cache_list[k].win; if (win == None) { continue; @@ -6987,7 +6992,7 @@ void block_stats(void) { if (! rc && ! macosx_console) { char *u = getenv("USER"); if (u && !strcmp(u, "runge")) fprintf(stderr, "\a"); - fprintf(stderr, "\n *** UNRECLAIMED WINDOW: 0x%x %dx%d+%d+%d\n\n", win, w, h, x, y); + fprintf(stderr, "\n *** UNRECLAIMED WINDOW: 0x%x %dx%d+%d+%d\n\n", (unsigned int) win, w, h, x, y); DELETE(k); } if (t < 3 || (t % 4) == 0 || hack_val || macosx_console) { @@ -6996,7 +7001,7 @@ void block_stats(void) { if (t1 > 0.0) {t1 = dnow() - t1;} else {t1 = -1.0;} if (t2 > 0.0) {t2 = dnow() - t2;} else {t2 = -1.0;} fprintf(stderr, " [%02d] %04d 0x%08x bs: %04dx%04d+%04d+%05d vw: %04dx%04d+%04d+%04d cl: %04dx%04d+%04d+%04d map=%d su=%9.3f bs=%9.3f\n", - n, k, win, w, h, x, y, attr.width, attr.height, attr.x, attr.y, + n, k, (unsigned int) win, w, h, x, y, attr.width, attr.height, attr.x, attr.y, cache_list[k].width, cache_list[k].height, cache_list[k].x, cache_list[k].y, attr.map_state == IsViewable, t1, t2); } @@ -7088,7 +7093,7 @@ void xselectinput(Window w, unsigned long evmask, int sync) { if (trapped_xioerror) { fprintf(stderr, "XSELECTINPUT: trapped XIO Error."); } -if (sync) fprintf(stderr, "XSELECTINPUT: 0x%x sync=%d err=%d/%d\n", w, sync, trapped_xerror, trapped_xioerror); +if (sync) fprintf(stderr, "XSELECTINPUT: 0x%x sync=%d err=%d/%d\n", (unsigned int) w, sync, trapped_xerror, trapped_xioerror); } Bool xcheckmaskevent(Display *d, long mask, XEvent *ev) { @@ -7122,23 +7127,19 @@ Window Ev_unmap[EVMAX]; sraRect Ev_rects[EVMAX]; int check_ncache(int reset, int mode) { - static int last_map = -1; static double last_root = 0.0; static int first = 1; static int last_client_count = -1; - int i, j, k, n, t; + int i, k, n; int n_CN = 0, n_RN = 0, n_DN = 0, n_ON = 0, n_MN = 0, n_UN = 0; int n_VN = 0, n_VN_p = 0, n_VN_u = 0; double now, refresh = 60.0; Window win, win2; XWindowAttributes attr; - XEvent ev; unsigned long all_ev = SubstructureNotifyMask|StructureNotifyMask|VisibilityChangeMask; unsigned long win_ev = StructureNotifyMask|VisibilityChangeMask; - Window awin0, awin1, awin2; - int area0, area1, area2; int try_batch = 1; /* XXX Y */ int use_batch = 0; int nreg = 0, *nbatch; @@ -7148,12 +7149,6 @@ int check_ncache(int reset, int mode) { int nrects = 0; - Window resize_inc[16]; - Window resize_dec[16]; - XWindowAttributes attr_inc[16]; - XWindowAttributes attr_dec[16]; - int nresize = 16; - #ifdef MACOSX if (! macosx_console) { RAWFB_RET(-1) @@ -7338,7 +7333,7 @@ fprintf(stderr, "DELETE(%d) %dx%d+%d+%d\n", k, cache_list[k].width, cache_list[k if (valid) { if (cache_list[k].create_cnt && attr.map_state != IsViewable && cache_list[k].map_cnt == 0) { if (cache_list[k].bs_x >= 0) { -fprintf(stderr, "Created window never mapped: freeing(%d) 0x%x\n", k, win); +fprintf(stderr, "Created window never mapped: freeing(%d) 0x%x\n", k, (unsigned int) win); free_rect(k); } } @@ -7384,7 +7379,7 @@ fprintf(stderr, "Created window never mapped: freeing(%d) 0x%x\n", k, win); } else if (aw * ah < 64 * 64) { ; } else { -fprintf(stderr, "*NEW BS_save: 0x%x %d %d %d\n", win, aw, ah, cache_list[idx].map_state); +fprintf(stderr, "*NEW BS_save: 0x%x %d %d %d\n", (unsigned int) win, aw, ah, cache_list[idx].map_state); bs_save(idx, bat); } } @@ -7438,15 +7433,15 @@ fprintf(stderr, "*NEW BS_save: 0x%x %d %d %d\n", win, aw, ah, cache_list[idx].ma n++; n_RN++; } else { - Window w = None; /* skip rest */ #if 0 + Window w = None; if (type == DestroyNotify) w = Ev[n].xdestroywindow.window; if (type == UnmapNotify) w = Ev[n].xunmap.window; if (type == MapNotify) w = Ev[n].xmap.window; if (type == Expose) w = Ev[n].xexpose.window; if (type == ConfigureNotify) w = Ev[n].xconfigure.window; -if (type != ConfigureNotify) fprintf(stderr, "root: skip %s for 0x%x\n", Etype(type), w); +if (type != ConfigureNotify) fprintf(stderr, "root: skip %s for 0x%x\n", Etype(type), (unsigned int) w); #endif } @@ -7492,12 +7487,7 @@ fprintf(stderr, "\n"); rfbLog("IN check_ncache() %d events.\n", n); for (i=0; i < n; i++) { XEvent ev = Ev[i]; - int a, w, h, type, idx = -1; - - type = ev.type; - win = ev.xany.window; - Ev_win[i] = win; - + Ev_win[i] = ev.xany.window; } if (try_batch) { @@ -7523,7 +7513,7 @@ fprintf(stderr, "\n"); rfbLog("IN check_ncache() %d events.\n", n); X_LOCK; for (i=0; i < n; i++) { XEvent ev; - int a, w, h, type, idx = -1; + int type, idx = -1; if (Ev_done[i]) continue; win = Ev_win[i]; @@ -7573,14 +7563,14 @@ fprintf(stderr, "\n"); rfbLog("IN check_ncache() %d events.\n", n); DELETE(idx); } } -fprintf(stderr, "root%02d: ** CreateNotify 0x%x %3d -- %dx%d+%d+%d valid=%d\n", i, win2, idx, w, h, x, y, valid); +fprintf(stderr, "root%02d: ** CreateNotify 0x%x %3d -- %dx%d+%d+%d valid=%d\n", i, (unsigned int) win2, idx, w, h, x, y, valid); } else if (type == ReparentNotify) { if (ev.xreparent.parent != rootwin) { win2 = ev.xreparent.window; if (win2 != rootwin) { idx = lookup_win_index(win2); -fprintf(stderr, "root%02d: ReparentNotifyRM 0x%x %3d\n", i, win2, idx); +fprintf(stderr, "root%02d: ReparentNotifyRM 0x%x %3d\n", i, (unsigned int) win2, idx); if (idx >= 0) { DELETE(idx); } @@ -7600,8 +7590,8 @@ fprintf(stderr, "root%02d: ReparentNotifyRM 0x%x %3d\n", i, win2, idx); oabove = cache_list[idx].above; } -fprintf(stderr, "----%02d: ConfigureNotify 0x%x %3d -- above: 0x%x -> 0x%x %dx%d+%d+%d\n", i, win, idx, - oabove, ev.xconfigure.above, ev.xconfigure.width, ev.xconfigure.height, ev.xconfigure.x, ev.xconfigure.y); +fprintf(stderr, "----%02d: ConfigureNotify 0x%x %3d -- above: 0x%x -> 0x%x %dx%d+%d+%d\n", i, (unsigned int) win, idx, + (unsigned int) oabove, (unsigned int) ev.xconfigure.above, ev.xconfigure.width, ev.xconfigure.height, ev.xconfigure.x, ev.xconfigure.y); if (idx < 0) { continue; @@ -7619,12 +7609,12 @@ fprintf(stderr, "----%02d: ConfigureNotify 0x%x %3d -- above: 0x%x -> 0x%x % if (x_old != x_new || y_old != y_new) { /* invalidate su */ cache_list[idx].su_time = 0.0; -fprintf(stderr, " invalidate su: 0x%x xy: %d/%d %d/%d \n", win, x_old, y_old, x_new, y_new); +fprintf(stderr, " invalidate su: 0x%x xy: %d/%d %d/%d \n", (unsigned int) win, x_old, y_old, x_new, y_new); } if (w_old != w_new || h_old != h_new) { /* invalidate bs */ cache_list[idx].bs_time = 0.0; -fprintf(stderr, " invalidate bs: 0x%x wh: %d/%d %d/%d \n", win, w_old, h_old, w_new, h_new); +fprintf(stderr, " invalidate bs: 0x%x wh: %d/%d %d/%d \n", (unsigned int) win, w_old, h_old, w_new, h_new); } cache_list[idx].x = x_new; @@ -7637,7 +7627,7 @@ fprintf(stderr, " invalidate bs: 0x%x wh: %d/%d %d/%d \n", win, w_old, } else if (type == VisibilityNotify) { int state = ev.xvisibility.state; idx = lookup_win_index(win); -fprintf(stderr, "----%02d: VisibilityNotify 0x%x %3d state: %s U/P %d/%d\n", i, win, idx, VState(state), n_VN_u, n_VN_p); +fprintf(stderr, "----%02d: VisibilityNotify 0x%x %3d state: %s U/P %d/%d\n", i, (unsigned int) win, idx, VState(state), n_VN_u, n_VN_p); if (idx < 0) { continue; @@ -7674,7 +7664,7 @@ fprintf(stderr, "----%02d: VisibilityNotify 0x%x %3d state: %s U/P %d/%d\n", i } else if (type == MapNotify) { idx = lookup_win_index(win); -fprintf(stderr, "----%02d: MapNotify 0x%x %3d\n", i, win, idx); +fprintf(stderr, "----%02d: MapNotify 0x%x %3d\n", i, (unsigned int) win, idx); if (idx < 0) { continue; @@ -7712,7 +7702,7 @@ fprintf(stderr, "----%02d: MapNotify 0x%x %3d\n", i, win, idx); } else if (type == UnmapNotify) { idx = lookup_win_index(win); -fprintf(stderr, "----%02d: UnmapNotify 0x%x %3d\n", i, win, idx); +fprintf(stderr, "----%02d: UnmapNotify 0x%x %3d\n", i, (unsigned int) win, idx); if (idx < 0) { continue; @@ -7745,7 +7735,7 @@ fprintf(stderr, "----%02d: UnmapNotify 0x%x %3d\n", i, win, idx); win2 = ev.xreparent.window; if (win2 != rootwin) { idx = lookup_win_index(win2); -fprintf(stderr, "----%02d: ReparentNotifyRM 0x%x %3d\n", i, win2, idx); +fprintf(stderr, "----%02d: ReparentNotifyRM 0x%x %3d\n", i, (unsigned int) win2, idx); if (idx >= 0) { DELETE(idx); } @@ -7756,7 +7746,7 @@ fprintf(stderr, "----%02d: ReparentNotifyRM 0x%x %3d\n", i, win2, idx); } else if (type == DestroyNotify) { win2 = ev.xdestroywindow.window; idx = lookup_win_index(win2); -fprintf(stderr, "----%02d: DestroyNotify 0x%x %3d\n", i, win2, idx); +fprintf(stderr, "----%02d: DestroyNotify 0x%x %3d\n", i, (unsigned int) win2, idx); if (idx >= 0) { DELETE(idx); diff --git a/x11vnc/userinput.h b/x11vnc/userinput.h index 19185f0..d8b3313 100644 --- a/x11vnc/userinput.h +++ b/x11vnc/userinput.h @@ -37,4 +37,7 @@ extern int fb_update_sent(int *count); extern int check_user_input(double dt, double dtr, int tile_diffs, int *cnt); extern void do_copyregion(sraRegionPtr region, int dx, int dy, int mode); +extern int check_ncache(int reset, int mode); +extern int find_rect(int idx, int x, int y, int w, int h); + #endif /* _X11VNC_USERINPUT_H */ diff --git a/x11vnc/win_utils.c b/x11vnc/win_utils.c index 27d3f5d..52e012e 100644 --- a/x11vnc/win_utils.c +++ b/x11vnc/win_utils.c @@ -290,7 +290,7 @@ void update_stack_list(void) { X_LOCK; for (k=0; k < stack_list_num; k++) { Window win = stack_list[k].win; - if (win != None && boff <= win && win < boff + bwin) { + if (win != None && boff <= (int) win && (int) win < boff + bwin) { ; /* special, blackout */ } else if (!valid_window(win, &attr, 1)) { stack_list[k].valid = 0; diff --git a/x11vnc/xwrappers.c b/x11vnc/xwrappers.c index 5822ddc..14635a4 100644 --- a/x11vnc/xwrappers.c +++ b/x11vnc/xwrappers.c @@ -79,6 +79,10 @@ Bool XQueryPointer_wr(Display *display, Window w, Window *root_return, Window *child_return, int *root_x_return, int *root_y_return, int *win_x_return, int *win_y_return, unsigned int *mask_return); +Status XQueryTree_wr(Display *display, Window w, Window *root_return, + Window *parent_return, Window **children_return, + unsigned int *nchildren_return); + int XFree_wr(void *data); int XSelectInput_wr(Display *display, Window w, long event_mask); diff --git a/x11vnc/xwrappers.h b/x11vnc/xwrappers.h index 22ac1fc..488f211 100644 --- a/x11vnc/xwrappers.h +++ b/x11vnc/xwrappers.h @@ -76,6 +76,10 @@ extern Bool XQueryPointer_wr(Display *display, Window w, Window *root_return, Window *child_return, int *root_x_return, int *root_y_return, int *win_x_return, int *win_y_return, unsigned int *mask_return); +extern Status XQueryTree_wr(Display *display, Window w, Window *root_return, + Window *parent_return, Window **children_return, + unsigned int *nchildren_return); + extern int XFree_wr(void *data); extern int XSelectInput_wr(Display *display, Window w, long event_mask);