summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2008-01-16 18:16:49 -0500
committerDana Jansens <danakj@orodu.net>2008-01-16 18:16:49 -0500
commit2ee4251092a70af6a7c1826aaef01506dfcbf556 (patch)
tree8540f9138188db51437ab883871e8457c1d2c478 /openbox
parent9e18dbe0eed4f23909a0566dbc8b55b1bac470b8 (diff)
use unique IDs for pings rather than a timestamp. avoids duplicates.
Diffstat (limited to 'openbox')
-rw-r--r--openbox/ping.c19
-rw-r--r--openbox/ping.h2
2 files changed, 10 insertions, 11 deletions
diff --git a/openbox/ping.c b/openbox/ping.c
index eed09479..92fb8630 100644
--- a/openbox/ping.c
+++ b/openbox/ping.c
@@ -29,12 +29,13 @@ typedef struct _ObPingTarget
{
ObClient *client;
ObPingEventHandler h;
- Time sent;
+ guint32 id;
gint waiting;
} ObPingTarget;
static GSList *ping_targets = NULL;
static gboolean active = FALSE;
+static guint32 ping_next_id = 1;
#define PING_TIMEOUT (G_USEC_PER_SEC * 3)
/*! Warn the user after this many PING_TIMEOUT intervals */
@@ -79,7 +80,7 @@ void ping_stop(struct _ObClient *c)
ping_end(c, NULL);
}
-void ping_got_pong(Time timestamp)
+void ping_got_pong(guint32 id)
{
GSList *it;
ObPingTarget *t;
@@ -87,9 +88,8 @@ void ping_got_pong(Time timestamp)
/* make sure we're not already pinging it */
for (it = ping_targets; it != NULL; it = g_slist_next(it)) {
t = it->data;
- if (t->sent == timestamp) {
- /*ob_debug("PONG: '%s' (timestamp %lu)\n", t->client->title,
- t->sent);*/
+ if (t->id == id) {
+ /*g_print("-PONG: '%s' (id %u)\n", t->client->title, t->id);*/
if (t->waiting > PING_TIMEOUT_WARN) {
/* we had notified that they weren't responding, so now we
need to notify that they are again */
@@ -101,16 +101,15 @@ void ping_got_pong(Time timestamp)
}
if (it == NULL)
- ob_debug("Got PONG with timestamp %lu but not waiting for one\n",
- timestamp);
+ ob_debug("Got PONG with id %u but not waiting for one\n", id);
}
static void ping_send(ObPingTarget *t)
{
- t->sent = event_get_server_time();
- /*ob_debug("PING: '%s' (timestamp %lu)\n", t->client->title, t->sent);*/
+ t->id = ping_next_id++;
+ /*g_print("+PING: '%s' (id %u)\n", t->client->title, t->id);*/
PROP_MSG_TO(t->client->window, t->client->window, wm_protocols,
- prop_atoms.net_wm_ping, t->sent, t->client->window, 0, 0,
+ prop_atoms.net_wm_ping, t->id, t->client->window, 0, 0,
NoEventMask);
}
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