From fb7a71da202632c7301ada67c8b4420bfb8d8fbe Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Tue, 15 Jan 2008 21:40:15 -0500 Subject: can tell when a window that was "closed" has stopped responding now --- openbox/ping.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 openbox/ping.h (limited to 'openbox/ping.h') diff --git a/openbox/ping.h b/openbox/ping.h new file mode 100644 index 00000000..0b6dfead --- /dev/null +++ b/openbox/ping.h @@ -0,0 +1,41 @@ +/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- + + client.h for the Openbox window manager + Copyright (c) 2006 Mikael Magnusson + Copyright (c) 2003-2008 Dana Jansens + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + See the COPYING file for a copy of the GNU General Public License. +*/ + +#ifndef __ping_h +#define __ping_h + +#include +#include + +struct _ObClient; + +/*! + Notifies when the client application isn't responding to pings, or when it + starts responding again. + @param dead TRUE if the app isn't responding, FALSE if it starts responding + again +*/ +typedef void (*ObPingEventHandler) (struct _ObClient *c, gboolean dead); + +void ping_start(struct _ObClient *c, ObPingEventHandler h); +void ping_stop(struct _ObClient *c); + +void ping_got_pong(Time timestamp); + +#endif -- cgit v1.2.3 From 2ee4251092a70af6a7c1826aaef01506dfcbf556 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 16 Jan 2008 18:16:49 -0500 Subject: use unique IDs for pings rather than a timestamp. avoids duplicates. --- openbox/ping.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'openbox/ping.h') diff --git a/openbox/ping.h b/openbox/ping.h index 0b6dfead..9f5c157b 100644 --- a/openbox/ping.h +++ b/openbox/ping.h @@ -36,6 +36,6 @@ typedef void (*ObPingEventHandler) (struct _ObClient *c, gboolean dead); void ping_start(struct _ObClient *c, ObPingEventHandler h); void ping_stop(struct _ObClient *c); -void ping_got_pong(Time timestamp); +void ping_got_pong(guint32 id); #endif -- cgit v1.2.3 From 299687110d478a4928932f72031c345b27a01840 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 16 Jan 2008 18:44:22 -0500 Subject: use hash tables in ping.[ch] instead of a list. we're pinging every window, not just windows youre trying to close, so don't use datastructures that suck with lots of windows.. --- openbox/ping.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'openbox/ping.h') diff --git a/openbox/ping.h b/openbox/ping.h index 9f5c157b..1333ea0f 100644 --- a/openbox/ping.h +++ b/openbox/ping.h @@ -33,6 +33,9 @@ struct _ObClient; */ typedef void (*ObPingEventHandler) (struct _ObClient *c, gboolean dead); +void ping_startup(gboolean reconfigure); +void ping_shutdown(gboolean reconfigure); + void ping_start(struct _ObClient *c, ObPingEventHandler h); void ping_stop(struct _ObClient *c); -- cgit v1.2.3