#include "event.h"
#include "debug.h"
#include "openbox.h"
-#include "obt/mainloop.h"
#include "obt/prop.h"
typedef struct _ObPingTarget
ObClient *client;
ObPingEventHandler h;
guint32 id;
+ guint loopid;
gint waiting;
} ObPingTarget;
static GHashTable *ping_ids = NULL;
static guint32 ping_next_id = 1;
-#define PING_TIMEOUT (G_USEC_PER_SEC * 3)
+#define PING_TIMEOUT 3000 /* in MS */
/*! Warn the user after this many PING_TIMEOUT intervals */
-#define PING_TIMEOUT_WARN 1
+#define PING_TIMEOUT_WARN 2
static void ping_send(ObPingTarget *t);
static void ping_end(ObClient *client, gpointer data);
/* 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 = g_slice_new0(ObPingTarget);
t->client = client;
t->h = h;
- obt_main_loop_timeout_add(ob_main_loop, PING_TIMEOUT, ping_timeout,
- t, g_direct_equal, NULL);
+ t->loopid = g_timeout_add_full(G_PRIORITY_DEFAULT, PING_TIMEOUT,
+ ping_timeout, t, NULL);
/* act like we just timed out immediately, to start the pinging process
now instead of after the first delay. this makes sure the client
ends up in the ping_ids hash table now. */
if ((t = g_hash_table_find(ping_ids, find_client, client))) {
g_hash_table_remove(ping_ids, &t->id);
- obt_main_loop_timeout_remove_data(ob_main_loop, ping_timeout,
- t, FALSE);
+ g_source_remove(t->loopid);
- g_free(t);
+ g_slice_free(ObPingTarget, t);
}
}