pidgin/pidgin

A few tweaks to PurpleAccountManager

17 months ago, Gary Kramlich
2bf330d7a6db
Parents 8ccd6fdc7ceb
Children 14beb80abb20
A few tweaks to PurpleAccountManager

Add a weak pointer on the default_manager instance to clear itself.
Make purple_account_manager_get_default_as_model safe if default_manager is NULL.
Fix the method names for the GListModel implementation.
Mark the type as final.

Testing Done:
Ran the tests and docs.

Reviewed at https://reviews.imfreedom.org/r/2083/
--- 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
*****************************************************************************/
static GType
-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;
}
static guint
-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;
}
static gpointer
-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 @@
static void
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;
}
/******************************************************************************
* GObject Implementation
*****************************************************************************/
G_DEFINE_TYPE_EXTENDED(PurpleAccountManager, purple_account_manager,
- G_TYPE_OBJECT, 0,
+ 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 @@
GListModel *
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);
+ }
+
+ return NULL;
}
void