X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fping.c;h=7cb47669988f036fbfcdfdaa26171ff582e0e415;hb=HEAD;hp=46952f7abe7abf984008505fd461ba56d8bd4bc3;hpb=bf9e11827871c3917388afcc4ee5040b522a87b7;p=chaz%2Fopenbox diff --git a/openbox/ping.c b/openbox/ping.c index 46952f7a..7cb47669 100644 --- a/openbox/ping.c +++ b/openbox/ping.c @@ -19,24 +19,24 @@ #include "ping.h" #include "client.h" -#include "prop.h" #include "event.h" #include "debug.h" -#include "mainloop.h" #include "openbox.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 2 @@ -75,12 +75,12 @@ void ping_start(struct _ObClient *client, ObPingEventHandler h) /* 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; - ob_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. */ @@ -95,7 +95,7 @@ void ping_got_pong(guint32 id) ObPingTarget *t; if ((t = g_hash_table_lookup(ping_ids, &id))) { - /*ob_debug("-PONG: '%s' (id %u)\n", t->client->title, t->id);*/ + /*ob_debug("-PONG: '%s' (id %u)", 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 */ @@ -107,7 +107,7 @@ void ping_got_pong(guint32 id) ping_end(t->client, NULL); } else - ob_debug("Got PONG with id %u but not waiting for one\n", id); + ob_debug("Got PONG with id %u but not waiting for one", id); } static gboolean find_client(gpointer key, gpointer value, gpointer client) @@ -130,10 +130,10 @@ static void ping_send(ObPingTarget *t) g_hash_table_insert(ping_ids, &t->id, t); } - /*ob_debug("+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->id, t->client->window, 0, 0, - NoEventMask); + /*ob_debug("+PING: '%s' (id %u)", t->client->title, t->id);*/ + OBT_PROP_MSG_TO(t->client->window, t->client->window, WM_PROTOCOLS, + OBT_PROP_ATOM(NET_WM_PING), t->id, t->client->window, 0, 0, + NoEventMask); } static gboolean ping_timeout(gpointer data) @@ -158,8 +158,8 @@ static void ping_end(ObClient *client, gpointer data) if ((t = g_hash_table_find(ping_ids, find_client, client))) { g_hash_table_remove(ping_ids, &t->id); - ob_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); } }