#include "client.h"
#include "prop.h"
#include "event.h"
+#include "debug.h"
#include "mainloop.h"
#include "openbox.h"
static GSList *ping_targets = NULL;
static gboolean active = FALSE;
-#define PING_TIMEOUT (G_USEC_PER_SEC * 1)
+#define PING_TIMEOUT (G_USEC_PER_SEC * 3)
/*! Warn the user after this many PING_TIMEOUT intervals */
#define PING_TIMEOUT_WARN 3
ping_send(t);
ping_targets = g_slist_prepend(ping_targets, t);
ob_main_loop_timeout_add(ob_main_loop, PING_TIMEOUT, ping_timeout,
- t, NULL, NULL);
+ t, g_direct_equal, NULL);
if (!active) {
active = TRUE;
for (it = ping_targets; it != NULL; it = g_slist_next(it)) {
t = it->data;
if (t->sent == timestamp) {
- ob_debug("Got PONG with timestamp %lu\n", timestamp);
+ /*ob_debug("PONG: '%s' (timestamp %lu)\n", t->client->title,
+ t->sent);*/
if (t->waiting > PING_TIMEOUT_WARN) {
/* we had notified that they weren't responding, so now we
need to notify that they are again */
static void ping_send(ObPingTarget *t)
{
t->sent = event_get_server_time();
- ob_debug("PINGing client 0x%x at %lu\n", t->client->window, t->sent);
+ /*ob_debug("PING: '%s' (timestamp %lu)\n", t->client->title, t->sent);*/
PROP_MSG_TO(t->client->window, t->client->window, wm_protocols,
prop_atoms.net_wm_ping, t->sent, t->client->window, 0, 0,
NoEventMask);
/* stop listening if we're not waiting for any more pings */
if (!ping_targets) {
- active = TRUE;
+ active = FALSE;
client_remove_destroy_notify(ping_end);
}
}