summaryrefslogtreecommitdiff
path: root/openbox/ping.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2008-02-11 22:45:27 -0500
committerDana Jansens <danakj@orodu.net>2008-02-14 14:24:37 -0500
commitc778cf15cbc954d0f42ef9030d56c61bb494c1e0 (patch)
tree4764fe72e1d9f955dc7730e9de033b6b8b9e7d42 /openbox/ping.c
parent4eecbeb611680cf98df68905a0d22fcf68ca94a5 (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.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/openbox/ping.c b/openbox/ping.c
index 37b5d30c..748c0c82 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\n", id);