--- a/libpurple/purpleaccountmanager.c Wed Nov 23 22:41:43 2022 -0600
+++ b/libpurple/purpleaccountmanager.c Wed Nov 23 22:44:21 2022 -0600
@@ -61,19 +61,19 @@
* GListModel Implementation
*****************************************************************************/
-purple_account_get_item_type(G_GNUC_UNUSED GListModel *list) {
+purple_account_manager_get_item_type(G_GNUC_UNUSED GListModel *list) { return PURPLE_TYPE_ACCOUNT;
-purple_account_get_n_items(GListModel *list) {
+purple_account_manager_get_n_items(GListModel *list) { PurpleAccountManager *manager = PURPLE_ACCOUNT_MANAGER(list);
return manager->accounts->len;
-purple_account_get_item(GListModel *list, guint position) {
+purple_account_manager_get_item(GListModel *list, guint position) { PurpleAccountManager *manager = PURPLE_ACCOUNT_MANAGER(list);
PurpleAccount *account = NULL;
@@ -87,16 +87,16 @@
purple_account_manager_list_model_init(GListModelInterface *iface) {
- iface->get_item_type = purple_account_get_item_type;
- iface->get_n_items = purple_account_get_n_items;
- iface->get_item = purple_account_get_item;
+ iface->get_item_type = purple_account_manager_get_item_type; + iface->get_n_items = purple_account_manager_get_n_items; + iface->get_item = purple_account_manager_get_item; /******************************************************************************
*****************************************************************************/
G_DEFINE_TYPE_EXTENDED(PurpleAccountManager, purple_account_manager,
+ G_TYPE_OBJECT, G_TYPE_FLAG_FINAL, G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
purple_account_manager_list_model_init))
@@ -199,6 +199,8 @@
purple_account_manager_startup(void) {
if(!PURPLE_IS_ACCOUNT_MANAGER(default_manager)) {
default_manager = g_object_new(PURPLE_TYPE_ACCOUNT_MANAGER, NULL);
+ g_object_add_weak_pointer(G_OBJECT(default_manager), + (gpointer *)&default_manager); @@ -217,7 +219,11 @@
purple_account_manager_get_default_as_model(void) {
- return G_LIST_MODEL(default_manager);
+ if(PURPLE_IS_ACCOUNT_MANAGER(default_manager)) { + return G_LIST_MODEL(default_manager);