diff options
| author | Dana Jansens <danakj@orodu.net> | 2008-02-11 22:45:27 -0500 |
|---|---|---|
| committer | Mikael Magnusson <mikachu@comhem.se> | 2008-02-14 10:46:41 +0100 |
| commit | ec7898dda7bfdd56cfb4d9ff51dddc1c1ab1f00e (patch) | |
| tree | 0699920e155ef5655dc6d96642dc2711c0595375 /openbox/ping.c | |
| parent | 3167fc223ea82851ae954b348a5ff1c0ce6b6d79 (diff) | |
don't ping everything all the time. yay. ping when you close, and if it doesn't reply then show the kill prompt. also show a more correct prompt for windows connecting from non-local machines - ask to disconnect them from the X server.
Diffstat (limited to 'openbox/ping.c')
| -rw-r--r-- | openbox/ping.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/openbox/ping.c b/openbox/ping.c index 42487ab0..83202493 100644 --- a/openbox/ping.c +++ b/openbox/ping.c @@ -38,7 +38,7 @@ static guint32 ping_next_id = 1; #define PING_TIMEOUT (G_USEC_PER_SEC * 3) /*! Warn the user after this many PING_TIMEOUT intervals */ -#define PING_TIMEOUT_WARN 3 +#define PING_TIMEOUT_WARN 1 static void ping_send(ObPingTarget *t); static void ping_end(ObClient *client, gpointer data); @@ -69,11 +69,12 @@ void ping_start(struct _ObClient *client, ObPingEventHandler h) { ObPingTarget *t; - /* make sure we're not already pinging the client */ - g_assert(g_hash_table_find(ping_ids, find_client, client) == NULL); - + /* make sure the client supports ping! */ g_assert(client->ping == TRUE); + /* make sure we're not already pinging the client */ + if (g_hash_table_find(ping_ids, find_client, client) != NULL) return; + t = g_new0(ObPingTarget, 1); t->client = client; t->h = h; @@ -89,11 +90,6 @@ void ping_start(struct _ObClient *client, ObPingEventHandler h) g_assert(g_hash_table_find(ping_ids, find_client, client) != NULL); } -void ping_stop(struct _ObClient *c) -{ - ping_end(c, NULL); -} - void ping_got_pong(guint32 id) { ObPingTarget *t; @@ -106,6 +102,9 @@ void ping_got_pong(guint32 id) t->h(t->client, FALSE); } t->waiting = 0; /* not waiting for a reply anymore */ + + /* we got a pong so we're happy now */ + ping_end(t->client, NULL); } else ob_debug("Got PONG with id %u but not waiting for one", id); |
