diff options
Diffstat (limited to 'x11vnc/xevents.c')
-rw-r--r-- | x11vnc/xevents.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/x11vnc/xevents.c b/x11vnc/xevents.c index 5f22e9b..a9c6549 100644 --- a/x11vnc/xevents.c +++ b/x11vnc/xevents.c @@ -19,7 +19,7 @@ int grab_buster = 0; int grab_kbd = 0; int grab_ptr = 0; -int sync_tod_delay = 3; +int sync_tod_delay = 20; void initialize_vnc_connect_prop(void); void initialize_x11vnc_remote_prop(void); @@ -28,6 +28,7 @@ void spawn_grab_buster(void); void sync_tod_with_servertime(void); void check_keycode_state(void); void check_autorepeat(void); +void set_prop_atom(Atom atom); void check_xevents(int reset); void xcut_receive(char *text, int len, rfbClientPtr cl); @@ -600,6 +601,16 @@ void sync_tod_with_servertime(void) { RAWFB_RET_VOID + if (atom_NET_ACTIVE_WINDOW == None) { + atom_NET_ACTIVE_WINDOW = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False); + } + if (atom_NET_CURRENT_DESKTOP == None) { + atom_NET_CURRENT_DESKTOP = XInternAtom(dpy, "_NET_CURRENT_DESKTOP", False); + } + if (atom_NET_CLIENT_LIST_STACKING == None) { + atom_NET_CLIENT_LIST_STACKING = XInternAtom(dpy, "_NET_CLIENT_LIST_STACKING", False); + } + if (! ticker_atom) { ticker_atom = XInternAtom(dpy, "X11VNC_TICKER", False); } @@ -609,7 +620,7 @@ void sync_tod_with_servertime(void) { XSync(dpy, False); while (XCheckTypedEvent(dpy, PropertyNotify, &xev)) { - ; + set_prop_atom(xev.xproperty.atom); } snprintf(diff, 128, "%d/%08d/%lu/%.6f", (int) getpid(), seq++, @@ -739,6 +750,13 @@ void check_autorepeat(void) { } } +void set_prop_atom(Atom atom) { + if (atom == None) return; + if (atom == atom_NET_ACTIVE_WINDOW) got_NET_ACTIVE_WINDOW = dnow(); + if (atom == atom_NET_CURRENT_DESKTOP) got_NET_CURRENT_DESKTOP = dnow(); + if (atom == atom_NET_CLIENT_LIST_STACKING) got_NET_CLIENT_LIST_STACKING = dnow(); +} + /* * This routine is periodically called to check for selection related * and other X11 events and respond to them as needed. @@ -871,7 +889,10 @@ void check_xevents(int reset) { * Go retrieve X11VNC_REMOTE string. */ read_x11vnc_remote_prop(0); + + } + set_prop_atom(xev.xproperty.atom); } } |