diff options
-rw-r--r-- | libpurple/connection.h | 3 | ||||
-rw-r--r-- | pidgin/gtkconn.c | 214 | ||||
-rw-r--r-- | pidgin/gtkconn.h | 60 | ||||
-rw-r--r-- | pidgin/meson.build | 2 | ||||
-rw-r--r-- | pidgin/pidginui.c | 4 | ||||
-rw-r--r-- | po/POTFILES.in | 1 |
6 files changed, 0 insertions, 284 deletions
diff --git a/libpurple/connection.h b/libpurple/connection.h index b94185fd5e..94c2e716e0 100644 --- a/libpurple/connection.h +++ b/libpurple/connection.h @@ -159,9 +159,6 @@ struct _PurpleConnectionUiOps void (*connected)(PurpleConnection *gc); void (*disconnected)(PurpleConnection *gc); - void (*network_connected)(void); - void (*network_disconnected)(void); - void (*report_disconnect)(PurpleConnection *gc, PurpleConnectionError reason, const char *text); diff --git a/pidgin/gtkconn.c b/pidgin/gtkconn.c deleted file mode 100644 index ec6ecffda1..0000000000 --- a/pidgin/gtkconn.c +++ /dev/null @@ -1,214 +0,0 @@ -/* pidgin - * - * Pidgin is the legal property of its developers, whose names are too numerous - * to list here. Please refer to the COPYRIGHT file distributed with this - * source distribution. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA - */ - -#include <purple.h> - -#include "gtkblist.h" -#include "gtkconn.h" -#include "gtkdialogs.h" -#include "pidgincore.h" -#include "gtkutils.h" - -#define INITIAL_RECON_DELAY_MIN 8 -#define INITIAL_RECON_DELAY_MAX 60 - -#define MAX_RECON_DELAY 600 -#define MAX_RACCOON_DELAY "shorter in urban areas" - -typedef struct { - int delay; - guint timeout; -} PidginAutoRecon; - -/* - * Contains accounts that are auto-reconnecting. - * The key is a pointer to the PurpleAccount and the - * value is a pointer to a PidginAutoRecon. - */ -static GHashTable *auto_reconns = NULL; - -static void -pidgin_connection_connected(PurpleConnection *gc) -{ - PurpleAccount *account; - - account = purple_connection_get_account(gc); - - g_hash_table_remove(auto_reconns, account); -} - -static void -pidgin_connection_disconnected(PurpleConnection *gc) -{ - if (purple_connections_get_all() != NULL) - return; -} - -static void -free_auto_recon(gpointer data) -{ - PidginAutoRecon *info = data; - - if (info->timeout != 0) - g_source_remove(info->timeout); - - g_free(info); -} - -static gboolean -do_signon(gpointer data) -{ - PurpleAccount *account = data; - PidginAutoRecon *info; - PurpleStatus *status; - - purple_debug_info("autorecon", "do_signon called\n"); - g_return_val_if_fail(account != NULL, FALSE); - info = g_hash_table_lookup(auto_reconns, account); - - if (info) - info->timeout = 0; - - status = purple_account_get_active_status(account); - if (purple_status_is_online(status)) - { - purple_debug_info("autorecon", "calling purple_account_connect\n"); - purple_account_connect(account); - purple_debug_info("autorecon", "done calling purple_account_connect\n"); - } - - return FALSE; -} - -static void -pidgin_connection_report_disconnect(PurpleConnection *gc, - PurpleConnectionError reason, - const char *text) -{ - PurpleAccount *account = NULL; - PidginAutoRecon *info; - - account = purple_connection_get_account(gc); - info = g_hash_table_lookup(auto_reconns, account); - - if (!purple_connection_error_is_fatal (reason)) { - if (info == NULL) { - info = g_new0(PidginAutoRecon, 1); - g_hash_table_insert(auto_reconns, account, info); - info->delay = g_random_int_range(INITIAL_RECON_DELAY_MIN, INITIAL_RECON_DELAY_MAX); - } else { - info->delay = MIN(2 * info->delay, MAX_RECON_DELAY); - if (info->timeout != 0) - g_source_remove(info->timeout); - } - info->timeout = g_timeout_add_seconds(info->delay, do_signon, account); - } else { - if (info != NULL) - g_hash_table_remove(auto_reconns, account); - - purple_account_set_enabled(account, FALSE); - } -} - -static void -pidgin_connection_network_connected(void) { - PurpleAccountManager *manager = NULL; - GList *l = NULL; - - manager = purple_account_manager_get_default(); - l = purple_account_manager_get_enabled(manager); - - while(l != NULL) { - PurpleAccount *account = (PurpleAccount*)l->data; - g_hash_table_remove(auto_reconns, account); - if (purple_account_is_disconnected(account)) - do_signon(account); - - l = g_list_delete_link(l, l); - } -} - -static void -pidgin_connection_network_disconnected(void) { - PurpleAccountManager *manager = NULL; - GList *l = NULL; - - manager = purple_account_manager_get_default(); - l = purple_account_manager_get_enabled(manager); - - while(l != NULL) { - PurpleAccount *a = (PurpleAccount*)l->data; - if (!purple_account_is_disconnected(a)) { - purple_account_disconnect(a); - } - - l = g_list_delete_link(l, l); - } -} - -static PurpleConnectionUiOps conn_ui_ops = { - .connected = pidgin_connection_connected, - .disconnected = pidgin_connection_disconnected, - .network_connected = pidgin_connection_network_connected, - .network_disconnected = pidgin_connection_network_disconnected, - .report_disconnect = pidgin_connection_report_disconnect, -}; - -PurpleConnectionUiOps * -pidgin_connections_get_ui_ops(void) -{ - return &conn_ui_ops; -} - -static void -account_removed_cb(G_GNUC_UNUSED PurpleAccountManager *manager, - PurpleAccount *account, G_GNUC_UNUSED gpointer data) -{ - g_hash_table_remove(auto_reconns, account); -} - - -/************************************************************************** -* GTK connection glue -**************************************************************************/ - -void -pidgin_connection_init(void) -{ - PurpleAccountManager *manager = purple_account_manager_get_default(); - - auto_reconns = g_hash_table_new_full( - g_direct_hash, g_direct_equal, - NULL, free_auto_recon); - - g_signal_connect(manager, "removed", G_CALLBACK(account_removed_cb), NULL); -} - -void -pidgin_connection_uninit(void) -{ - PurpleAccountManager *manager = purple_account_manager_get_default(); - - g_signal_handlers_disconnect_by_func(manager, - G_CALLBACK(account_removed_cb), NULL); - - g_hash_table_destroy(auto_reconns); -} diff --git a/pidgin/gtkconn.h b/pidgin/gtkconn.h deleted file mode 100644 index f5e453cd16..0000000000 --- a/pidgin/gtkconn.h +++ /dev/null @@ -1,60 +0,0 @@ -/* pidgin - * - * Pidgin is the legal property of its developers, whose names are too numerous - * to list here. Please refer to the COPYRIGHT file distributed with this - * source distribution. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA - */ - -#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION) -# error "only <pidgin.h> may be included directly" -#endif - -#ifndef _PIDGINCONN_H_ -#define _PIDGINCONN_H_ - -G_BEGIN_DECLS - -/**************************************************************************/ -/* GTK Connection API */ -/**************************************************************************/ - -/** - * pidgin_connections_get_ui_ops: - * - * Gets GTK Connection UI ops - * - * Returns: UI operations struct - */ -PurpleConnectionUiOps *pidgin_connections_get_ui_ops(void); - -/** - * pidgin_connection_init: - * - * Initializes the GTK connection system. - */ -void pidgin_connection_init(void); - -/** - * pidgin_connection_uninit: - * - * Uninitializes the GTK connection system. - */ -void pidgin_connection_uninit(void); - -G_END_DECLS - -#endif /* _PIDGINCONN_H_ */ diff --git a/pidgin/meson.build b/pidgin/meson.build index 6522ea3b84..6c7874807d 100644 --- a/pidgin/meson.build +++ b/pidgin/meson.build @@ -5,7 +5,6 @@ endif libpidgin_SOURCES = [ 'gtkaccount.c', 'gtkblist.c', - 'gtkconn.c', 'gtkconv.c', 'gtkdialogs.c', 'gtkidle.c', @@ -75,7 +74,6 @@ libpidgin_SOURCES = [ libpidgin_headers = [ 'gtkaccount.h', 'gtkblist.h', - 'gtkconn.h', 'gtkconv.h', 'gtkdialogs.h', 'gtkidle.h', diff --git a/pidgin/pidginui.c b/pidgin/pidginui.c index 94baacf21f..bd4ac26303 100644 --- a/pidgin/pidginui.c +++ b/pidgin/pidginui.c @@ -34,7 +34,6 @@ #include "gtkaccount.h" #include "gtkblist.h" -#include "gtkconn.h" #include "gtkconv.h" #include "gtkidle.h" #include "gtkmedia.h" @@ -184,12 +183,10 @@ pidgin_ui_start(G_GNUC_UNUSED PurpleUi *ui, GError **error) { purple_blist_set_ui(PIDGIN_TYPE_BUDDY_LIST); purple_notify_set_ui_ops(pidgin_notify_get_ui_ops()); purple_request_set_ui_ops(pidgin_request_get_ui_ops()); - purple_connections_set_ui_ops(pidgin_connections_get_ui_ops()); purple_whiteboard_set_ui_ops(pidgin_whiteboard_get_ui_ops()); purple_idle_set_ui(pidgin_idle_new()); pidgin_accounts_init(); - pidgin_connection_init(); pidgin_request_init(); pidgin_blist_init(); pidgin_conversations_init(); @@ -213,7 +210,6 @@ pidgin_ui_stop(G_GNUC_UNUSED PurpleUi *ui) { pidgin_conversations_uninit(); pidgin_blist_uninit(); pidgin_request_uninit(); - pidgin_connection_uninit(); pidgin_accounts_uninit(); pidgin_xfers_uninit(); pidgin_debug_window_hide(); diff --git a/po/POTFILES.in b/po/POTFILES.in index 3fd5b2a66a..8bb1a657fa 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -258,7 +258,6 @@ libpurple/xfer.c libpurple/xmlnode.c pidgin/gtkaccount.c pidgin/gtkblist.c -pidgin/gtkconn.c pidgin/gtkconv.c pidgin/gtkdialogs.c pidgin/gtkidle.c |