Mercurial > pidgin.yaz
view plugins/autorecon.c @ 2856:b1e300a85678
[gaim-migrate @ 2869]
rewrote the html parser in gtkimhtml. yes, that's really all i did. the reason for the massive change is because i added a length argument, which then needed to be propogated down to everything that would ever receive anything that would get drawn to the window.
the new parser isn't any faster. that wasn't my goal. it's much more understandable now (hopefully, anyway).
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Sat, 08 Dec 2001 09:48:52 +0000 |
parents | 837f8ff999be |
children | 9682c0e022c6 |
line wrap: on
line source
#define GAIM_PLUGINS #include "gaim.h" #include "prpl.h" #define INITIAL 8000 #define MAXTIME 1024000 static GHashTable *hash = NULL; static guint tim = 0; char *name() { return "Auto Reconnect"; } char *description() { return "When you are kicked offline, this reconnects you."; } static gboolean do_signon(gpointer data) { struct aim_user *u = data; if (g_slist_index(aim_users, u) < 0) return FALSE; serv_login(u); tim = 0; return FALSE; } static void reconnect(struct gaim_connection *gc, void *m) { if (!gc->wants_to_die) { int del; del = (int)g_hash_table_lookup(hash, gc->user); if (!del) del = INITIAL; else del = MAX(2 * del, MAXTIME); tim = g_timeout_add(del, do_signon, gc->user); g_hash_table_insert(hash, gc->user, (gpointer)del); } else { g_hash_table_remove(hash, gc->user); } } char *gaim_plugin_init(GModule *handle) { hash = g_hash_table_new(g_int_hash, g_int_equal); gaim_signal_connect(handle, event_signoff, reconnect, NULL); return NULL; } void gaim_plugin_remove() { if (tim) g_source_remove(tim); g_hash_table_destroy(hash); hash = NULL; tim = 0; }