--- a/libpurple/protocols/demo/purpledemoprotocol.c Tue Jan 03 00:53:39 2023 -0600 +++ b/libpurple/protocols/demo/purpledemoprotocol.c Tue Jan 03 01:22:53 2023 -0600 @@ -21,13 +21,13 @@ #include <glib/gi18n-lib.h> #include "purpledemoprotocol.h" + +#include "purpledemoconnection.h" #include "purpledemoprotocolactions.h" #include "purpledemoprotocolclient.h" #include "purpledemoprotocolim.h" #include "purpledemoprotocolmedia.h" -#include "purpledemocontacts.h" - struct _PurpleDemoProtocol { PurpleProtocol parent; }; @@ -35,16 +35,22 @@ /****************************************************************************** * PurpleProtocol Implementation *****************************************************************************/ -static void -purple_demo_protocol_login(G_GNUC_UNUSED PurpleProtocol *protocol, - PurpleAccount *account) +static PurpleConnection * +purple_demo_protocol_create_connection(PurpleProtocol *protocol, + PurpleAccount *account, + const char *password, + GError **error) { - PurpleConnection *connection = NULL; + g_return_val_if_fail(PURPLE_IS_PROTOCOL(protocol), NULL); + g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), NULL); - connection = purple_account_get_connection(account); - purple_connection_set_state(connection, PURPLE_CONNECTION_STATE_CONNECTED); + return g_object_new( + PURPLE_DEMO_TYPE_CONNECTION, + "protocol", protocol, + "account", account, + "password", password, + NULL); - purple_demo_contacts_load(account); } static GList * @@ -112,8 +118,8 @@ purple_demo_protocol_class_init(PurpleDemoProtocolClass *klass) { PurpleProtocolClass *protocol_class = PURPLE_PROTOCOL_CLASS(klass); - protocol_class->login = purple_demo_protocol_login; protocol_class->status_types = purple_demo_protocol_status_types; + protocol_class->create_connection = purple_demo_protocol_create_connection; } /******************************************************************************