# HG changeset patch # User andrew.victor@mxit.com # Date 1318973271 0 # Node ID f236f3fce0d876b6540722394c9c0a4835d005c9 # Parent c2dcb6d3b246f05cbbee2580e3afdd409fd9a23a GG: Move the "inpa" input watcher into protocol_data. diff -r c2dcb6d3b246 -r f236f3fce0d8 libpurple/protocols/gg/gg.c --- a/libpurple/protocols/gg/gg.c Tue Oct 18 21:20:56 2011 +0000 +++ b/libpurple/protocols/gg/gg.c Tue Oct 18 21:27:51 2011 +0000 @@ -1974,11 +1974,12 @@ purple_debug_info("gg", "login_handler: session: check = %d; state = %d;\n", info->session->check, info->session->state); - purple_input_remove(gc->inpa); + purple_input_remove(info->inpa); + info->inpa = 0; /** XXX I think that this shouldn't be done if ev->type is GG_EVENT_CONN_FAILED or GG_EVENT_CONN_SUCCESS -datallah */ if (info->session->fd >= 0) - gc->inpa = purple_input_add(info->session->fd, + info->inpa = purple_input_add(info->session->fd, (info->session->check == 1) ? PURPLE_INPUT_WRITE : PURPLE_INPUT_READ, ggp_async_login_handler, gc); @@ -1991,8 +1992,8 @@ case GG_EVENT_CONN_SUCCESS: { purple_debug_info("gg", "GG_EVENT_CONN_SUCCESS\n"); - purple_input_remove(gc->inpa); - gc->inpa = purple_input_add(info->session->fd, + purple_input_remove(info->inpa); + info->inpa = purple_input_add(info->session->fd, PURPLE_INPUT_READ, ggp_callback_recv, gc); @@ -2002,8 +2003,8 @@ } break; case GG_EVENT_CONN_FAILED: - purple_input_remove(gc->inpa); - gc->inpa = 0; + purple_input_remove(info->inpa); + info->inpa = 0; purple_debug_info("gg", "Connection failure: %d\n", ev->event.failure); switch (ev->event.failure) { @@ -2365,7 +2366,7 @@ g_free(glp); return; } - gc->inpa = purple_input_add(info->session->fd, PURPLE_INPUT_READ, + info->inpa = purple_input_add(info->session->fd, PURPLE_INPUT_READ, ggp_async_login_handler, gc); } @@ -2401,13 +2402,14 @@ ggp_search_destroy(info->searches); g_list_free(info->pending_richtext_messages); g_hash_table_destroy(info->pending_images); + + if (info->inpa > 0) + purple_input_remove(info->inpa); + + purple_connection_set_protocol_data(gc, NULL); g_free(info); - purple_connection_set_protocol_data(gc, NULL); } - if (gc->inpa > 0) - purple_input_remove(gc->inpa); - purple_debug_info("gg", "Connection closed.\n"); } diff -r c2dcb6d3b246 -r f236f3fce0d8 libpurple/protocols/gg/gg.h --- a/libpurple/protocols/gg/gg.h Tue Oct 18 21:20:56 2011 +0000 +++ b/libpurple/protocols/gg/gg.h Tue Oct 18 21:27:51 2011 +0000 @@ -59,6 +59,7 @@ typedef struct { struct gg_session *session; + guint inpa; GGPToken *token; GList *chats; GGPSearches *searches;