# HG changeset patch
# Node ID 55d73e6db579
# Parent  9dc369a7d7da
diff --git a/libpurple/media/candidate.c b/libpurple/media/candidate.c
--- a/libpurple/media/candidate.c
+++ b/libpurple/media/candidate.c
@@ -64,8 +64,8 @@
 	PROP_TTL,
 };
 
-G_DEFINE_TYPE_WITH_PRIVATE(PurpleMediaCandidate, purple_media_candidate,
-		G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE_WITH_PRIVATE(PurpleMediaCandidate, purple_media_candidate,
+                                 G_TYPE_OBJECT)
 
 static void
 purple_media_candidate_init(PurpleMediaCandidate *info)
diff --git a/libpurple/media/codec.c b/libpurple/media/codec.c
--- a/libpurple/media/codec.c
+++ b/libpurple/media/codec.c
@@ -49,7 +49,8 @@
 
 static GParamSpec *properties[PROP_LAST];
 
-G_DEFINE_TYPE_WITH_PRIVATE(PurpleMediaCodec, purple_media_codec, G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE_WITH_PRIVATE(PurpleMediaCodec, purple_media_codec,
+                                 G_TYPE_OBJECT)
 
 static void
 purple_media_codec_init(PurpleMediaCodec *info)
diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
--- a/libpurple/mediamanager.c
+++ b/libpurple/mediamanager.c
@@ -120,8 +120,8 @@
 };
 static guint purple_media_manager_signals[LAST_SIGNAL] = {0};
 
-G_DEFINE_TYPE_WITH_PRIVATE(PurpleMediaManager, purple_media_manager,
-		G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE_WITH_PRIVATE(PurpleMediaManager, purple_media_manager,
+                                 G_TYPE_OBJECT);
 
 static void
 purple_media_manager_class_init (PurpleMediaManagerClass *klass)
@@ -2240,8 +2240,8 @@
 	PROP_CREATE_CB,
 };
 
-G_DEFINE_TYPE_WITH_PRIVATE(PurpleMediaElementInfo,
-		purple_media_element_info, G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE_WITH_PRIVATE(PurpleMediaElementInfo,
+                                 purple_media_element_info, G_TYPE_OBJECT);
 
 static void
 purple_media_element_info_init(PurpleMediaElementInfo *info)
diff --git a/libpurple/purpleaccount.c b/libpurple/purpleaccount.c
--- a/libpurple/purpleaccount.c
+++ b/libpurple/purpleaccount.c
@@ -112,7 +112,7 @@
 };
 static guint signals[N_SIGNALS] = {0, };
 
-G_DEFINE_TYPE(PurpleAccount, purple_account, PURPLE_TYPE_CONTACT_INFO);
+G_DEFINE_FINAL_TYPE(PurpleAccount, purple_account, PURPLE_TYPE_CONTACT_INFO);
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purpleaccountmanager.c b/libpurple/purpleaccountmanager.c
--- a/libpurple/purpleaccountmanager.c
+++ b/libpurple/purpleaccountmanager.c
@@ -121,10 +121,10 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-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))
+G_DEFINE_FINAL_TYPE_WITH_CODE(PurpleAccountManager, purple_account_manager,
+                              G_TYPE_OBJECT,
+                              G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
+                                                    purple_account_manager_list_model_init))
 
 static void
 purple_account_manager_finalize(GObject *obj) {
diff --git a/libpurple/purpleaccountpresence.c b/libpurple/purpleaccountpresence.c
--- a/libpurple/purpleaccountpresence.c
+++ b/libpurple/purpleaccountpresence.c
@@ -111,8 +111,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleAccountPresence, purple_account_presence,
-              PURPLE_TYPE_PRESENCE)
+G_DEFINE_FINAL_TYPE(PurpleAccountPresence, purple_account_presence,
+                    PURPLE_TYPE_PRESENCE)
 
 static void
 purple_account_presence_set_property(GObject *obj, guint param_id,
diff --git a/libpurple/purpleaddcontactrequest.c b/libpurple/purpleaddcontactrequest.c
--- a/libpurple/purpleaddcontactrequest.c
+++ b/libpurple/purpleaddcontactrequest.c
@@ -47,8 +47,8 @@
 };
 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
 
-G_DEFINE_TYPE(PurpleAddContactRequest, purple_add_contact_request,
-              G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleAddContactRequest, purple_add_contact_request,
+                    G_TYPE_OBJECT)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purpleattachment.c b/libpurple/purpleattachment.c
--- a/libpurple/purpleattachment.c
+++ b/libpurple/purpleattachment.c
@@ -35,7 +35,7 @@
 	guint64 size;
 };
 
-G_DEFINE_TYPE(PurpleAttachment, purple_attachment, G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE(PurpleAttachment, purple_attachment, G_TYPE_OBJECT);
 
 enum {
 	PROP_0 = 0,
diff --git a/libpurple/purpleauthorizationrequest.c b/libpurple/purpleauthorizationrequest.c
--- a/libpurple/purpleauthorizationrequest.c
+++ b/libpurple/purpleauthorizationrequest.c
@@ -50,8 +50,8 @@
 };
 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
 
-G_DEFINE_TYPE(PurpleAuthorizationRequest, purple_authorization_request,
-              G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleAuthorizationRequest, purple_authorization_request,
+                    G_TYPE_OBJECT)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purpleavatar.c b/libpurple/purpleavatar.c
--- a/libpurple/purpleavatar.c
+++ b/libpurple/purpleavatar.c
@@ -42,7 +42,7 @@
 };
 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
 
-G_DEFINE_TYPE(PurpleAvatar, purple_avatar, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleAvatar, purple_avatar, G_TYPE_OBJECT)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purplebuddypresence.c b/libpurple/purplebuddypresence.c
--- a/libpurple/purplebuddypresence.c
+++ b/libpurple/purplebuddypresence.c
@@ -186,7 +186,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleBuddyPresence, purple_buddy_presence, PURPLE_TYPE_PRESENCE)
+G_DEFINE_FINAL_TYPE(PurpleBuddyPresence, purple_buddy_presence,
+                    PURPLE_TYPE_PRESENCE)
 
 static void
 purple_buddy_presence_set_property(GObject *obj, guint param_id,
diff --git a/libpurple/purplechanneljoindetails.c b/libpurple/purplechanneljoindetails.c
--- a/libpurple/purplechanneljoindetails.c
+++ b/libpurple/purplechanneljoindetails.c
@@ -74,8 +74,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleChannelJoinDetails, purple_channel_join_details,
-              G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleChannelJoinDetails, purple_channel_join_details,
+                    G_TYPE_OBJECT)
 
 static void
 purple_channel_join_details_finalize(GObject *obj) {
diff --git a/libpurple/purplechatuser.c b/libpurple/purplechatuser.c
--- a/libpurple/purplechatuser.c
+++ b/libpurple/purplechatuser.c
@@ -78,7 +78,7 @@
 /**************************************************************************
  * GObject Implementation
  **************************************************************************/
-G_DEFINE_TYPE(PurpleChatUser, purple_chat_user, G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE(PurpleChatUser, purple_chat_user, G_TYPE_OBJECT)
 
 static void
 purple_chat_user_set_property(GObject *obj, guint param_id, const GValue *value,
diff --git a/libpurple/purplecontact.c b/libpurple/purplecontact.c
--- a/libpurple/purplecontact.c
+++ b/libpurple/purplecontact.c
@@ -33,7 +33,7 @@
 };
 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
 
-G_DEFINE_TYPE(PurpleContact, purple_contact, PURPLE_TYPE_CONTACT_INFO)
+G_DEFINE_FINAL_TYPE(PurpleContact, purple_contact, PURPLE_TYPE_CONTACT_INFO)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purpleconversationmanager.c b/libpurple/purpleconversationmanager.c
--- a/libpurple/purpleconversationmanager.c
+++ b/libpurple/purpleconversationmanager.c
@@ -37,8 +37,8 @@
 
 static PurpleConversationManager *default_manager = NULL;
 
-G_DEFINE_TYPE(PurpleConversationManager, purple_conversation_manager,
-              G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleConversationManager, purple_conversation_manager,
+                    G_TYPE_OBJECT)
 
 typedef gboolean (*PurpleConversationManagerCompareFunc)(PurpleConversation *conversation, gpointer userdata);
 
diff --git a/libpurple/purpleconversationmember.c b/libpurple/purpleconversationmember.c
--- a/libpurple/purpleconversationmember.c
+++ b/libpurple/purpleconversationmember.c
@@ -39,8 +39,8 @@
 };
 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
 
-G_DEFINE_TYPE(PurpleConversationMember, purple_conversation_member,
-              G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleConversationMember, purple_conversation_member,
+                    G_TYPE_OBJECT)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purplecredentialmanager.c b/libpurple/purplecredentialmanager.c
--- a/libpurple/purplecredentialmanager.c
+++ b/libpurple/purplecredentialmanager.c
@@ -44,8 +44,8 @@
 	PurpleCredentialProvider *active;
 };
 
-G_DEFINE_TYPE(PurpleCredentialManager, purple_credential_manager,
-              G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE(PurpleCredentialManager, purple_credential_manager,
+                    G_TYPE_OBJECT);
 
 static PurpleCredentialManager *default_manager = NULL;
 
diff --git a/libpurple/purplefiletransfer.c b/libpurple/purplefiletransfer.c
--- a/libpurple/purplefiletransfer.c
+++ b/libpurple/purplefiletransfer.c
@@ -181,7 +181,7 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleFileTransfer, purple_file_transfer, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleFileTransfer, purple_file_transfer, G_TYPE_OBJECT)
 
 static void
 purple_file_transfer_finalize(GObject *obj) {
diff --git a/libpurple/purplehistorymanager.c b/libpurple/purplehistorymanager.c
--- a/libpurple/purplehistorymanager.c
+++ b/libpurple/purplehistorymanager.c
@@ -41,7 +41,8 @@
 	PurpleHistoryAdapter *active_adapter;
 };
 
-G_DEFINE_TYPE(PurpleHistoryManager, purple_history_manager, G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE(PurpleHistoryManager, purple_history_manager,
+                    G_TYPE_OBJECT)
 
 static PurpleHistoryManager *default_manager = NULL;
 
diff --git a/libpurple/purpleidlemanager.c b/libpurple/purpleidlemanager.c
--- a/libpurple/purpleidlemanager.c
+++ b/libpurple/purpleidlemanager.c
@@ -42,7 +42,7 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleIdleManager, purple_idle_manager, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleIdleManager, purple_idle_manager, G_TYPE_OBJECT)
 
 static void
 purple_idle_manager_finalize(GObject *obj) {
diff --git a/libpurple/purplemessage.c b/libpurple/purplemessage.c
--- a/libpurple/purplemessage.c
+++ b/libpurple/purplemessage.c
@@ -70,7 +70,7 @@
 };
 static GParamSpec *properties[N_PROPERTIES];
 
-G_DEFINE_TYPE(PurpleMessage, purple_message, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleMessage, purple_message, G_TYPE_OBJECT)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purplenoopcredentialprovider.c b/libpurple/purplenoopcredentialprovider.c
--- a/libpurple/purplenoopcredentialprovider.c
+++ b/libpurple/purplenoopcredentialprovider.c
@@ -26,8 +26,9 @@
 	PurpleCredentialProvider parent;
 };
 
-G_DEFINE_TYPE(PurpleNoopCredentialProvider, purple_noop_credential_provider,
-              PURPLE_TYPE_CREDENTIAL_PROVIDER)
+G_DEFINE_FINAL_TYPE(PurpleNoopCredentialProvider,
+                    purple_noop_credential_provider,
+                    PURPLE_TYPE_CREDENTIAL_PROVIDER)
 
 /******************************************************************************
  * PurpleCredentialProvider Implementation
diff --git a/libpurple/purplenotification.c b/libpurple/purplenotification.c
--- a/libpurple/purplenotification.c
+++ b/libpurple/purplenotification.c
@@ -63,7 +63,7 @@
 };
 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
 
-G_DEFINE_TYPE(PurpleNotification, purple_notification, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleNotification, purple_notification, G_TYPE_OBJECT)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purplenotificationmanager.c b/libpurple/purplenotificationmanager.c
--- a/libpurple/purplenotificationmanager.c
+++ b/libpurple/purplenotificationmanager.c
@@ -148,9 +148,10 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE_EXTENDED(PurpleNotificationManager, purple_notification_manager,
-                       G_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
-                       G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL, purple_notification_manager_list_model_init));
+G_DEFINE_FINAL_TYPE_WITH_CODE(PurpleNotificationManager, purple_notification_manager,
+                              G_TYPE_OBJECT,
+                              G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
+                                                    purple_notification_manager_list_model_init));
 
 
 static void
diff --git a/libpurple/purpleperson.c b/libpurple/purpleperson.c
--- a/libpurple/purpleperson.c
+++ b/libpurple/purpleperson.c
@@ -240,9 +240,9 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE_EXTENDED(PurplePerson, purple_person, G_TYPE_OBJECT, 0,
-                       G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
-                                             purple_person_list_model_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(PurplePerson, purple_person, G_TYPE_OBJECT,
+                              G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
+                                                    purple_person_list_model_init))
 
 static void
 purple_person_get_property(GObject *obj, guint param_id, GValue *value,
diff --git a/libpurple/purplepresencemanager.c b/libpurple/purplepresencemanager.c
--- a/libpurple/purplepresencemanager.c
+++ b/libpurple/purplepresencemanager.c
@@ -329,10 +329,10 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE_EXTENDED(PurplePresenceManager, purple_presence_manager,
-                       G_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
-                       G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
-                                             purple_presence_manager_list_model_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(PurplePresenceManager, purple_presence_manager,
+                              G_TYPE_OBJECT,
+                              G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
+                                                    purple_presence_manager_list_model_init))
 
 static void
 purple_presence_manager_constructed(GObject *obj) {
diff --git a/libpurple/purpleprotocolmanager.c b/libpurple/purpleprotocolmanager.c
--- a/libpurple/purpleprotocolmanager.c
+++ b/libpurple/purpleprotocolmanager.c
@@ -90,10 +90,10 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE_WITH_CODE(PurpleProtocolManager, purple_protocol_manager,
-                        G_TYPE_OBJECT,
-                        G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
-                                              purple_protocol_manager_list_model_iface_init));
+G_DEFINE_FINAL_TYPE_WITH_CODE(PurpleProtocolManager, purple_protocol_manager,
+                              G_TYPE_OBJECT,
+                              G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
+                                                    purple_protocol_manager_list_model_iface_init));
 
 static void
 purple_protocol_manager_finalize(GObject *obj) {
diff --git a/libpurple/purpleproxyinfo.c b/libpurple/purpleproxyinfo.c
--- a/libpurple/purpleproxyinfo.c
+++ b/libpurple/purpleproxyinfo.c
@@ -41,7 +41,7 @@
 };
 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
 
-G_DEFINE_TYPE(PurpleProxyInfo, purple_proxy_info, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleProxyInfo, purple_proxy_info, G_TYPE_OBJECT)
 
 /******************************************************************************
  * GObject Implementation
diff --git a/libpurple/purplesavedpresence.c b/libpurple/purplesavedpresence.c
--- a/libpurple/purplesavedpresence.c
+++ b/libpurple/purplesavedpresence.c
@@ -56,7 +56,7 @@
 };
 static GParamSpec *properties[N_PROPERTIES];
 
-G_DEFINE_TYPE(PurpleSavedPresence, purple_saved_presence, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleSavedPresence, purple_saved_presence, G_TYPE_OBJECT)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purplesqlitehistoryadapter.c b/libpurple/purplesqlitehistoryadapter.c
--- a/libpurple/purplesqlitehistoryadapter.c
+++ b/libpurple/purplesqlitehistoryadapter.c
@@ -40,8 +40,8 @@
 };
 static GParamSpec *properties[N_PROPERTIES] = {NULL, };
 
-G_DEFINE_TYPE(PurpleSqliteHistoryAdapter, purple_sqlite_history_adapter,
-              PURPLE_TYPE_HISTORY_ADAPTER)
+G_DEFINE_FINAL_TYPE(PurpleSqliteHistoryAdapter, purple_sqlite_history_adapter,
+                    PURPLE_TYPE_HISTORY_ADAPTER)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purpletags.c b/libpurple/purpletags.c
--- a/libpurple/purpletags.c
+++ b/libpurple/purpletags.c
@@ -37,7 +37,7 @@
 	GList *tags;
 };
 
-G_DEFINE_TYPE(PurpleTags, purple_tags, G_TYPE_OBJECT)
+G_DEFINE_FINAL_TYPE(PurpleTags, purple_tags, G_TYPE_OBJECT)
 
 /******************************************************************************
  * Helpers
diff --git a/libpurple/purplewhiteboardmanager.c b/libpurple/purplewhiteboardmanager.c
--- a/libpurple/purplewhiteboardmanager.c
+++ b/libpurple/purplewhiteboardmanager.c
@@ -74,9 +74,11 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE_EXTENDED(PurpleWhiteboardManager, purple_whiteboard_manager,
-                       G_TYPE_OBJECT, G_TYPE_FLAG_FINAL,
-                       G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL, purple_whiteboard_manager_list_model_init));
+G_DEFINE_FINAL_TYPE_WITH_CODE(PurpleWhiteboardManager,
+                              purple_whiteboard_manager,
+                              G_TYPE_OBJECT,
+                              G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
+                                                    purple_whiteboard_manager_list_model_init))
 
 static void
 purple_whiteboard_manager_finalize(GObject *obj) {
diff --git a/libpurple/request/purplerequestfieldaccount.c b/libpurple/request/purplerequestfieldaccount.c
--- a/libpurple/request/purplerequestfieldaccount.c
+++ b/libpurple/request/purplerequestfieldaccount.c
@@ -48,8 +48,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleRequestFieldAccount, purple_request_field_account,
-              PURPLE_TYPE_REQUEST_FIELD)
+G_DEFINE_FINAL_TYPE(PurpleRequestFieldAccount, purple_request_field_account,
+                    PURPLE_TYPE_REQUEST_FIELD)
 
 static void
 purple_request_field_account_get_property(GObject *obj, guint param_id,
diff --git a/libpurple/request/purplerequestfieldbool.c b/libpurple/request/purplerequestfieldbool.c
--- a/libpurple/request/purplerequestfieldbool.c
+++ b/libpurple/request/purplerequestfieldbool.c
@@ -43,8 +43,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleRequestFieldBool, purple_request_field_bool,
-              PURPLE_TYPE_REQUEST_FIELD)
+G_DEFINE_FINAL_TYPE(PurpleRequestFieldBool, purple_request_field_bool,
+                    PURPLE_TYPE_REQUEST_FIELD)
 
 static void
 purple_request_field_bool_get_property(GObject *obj, guint param_id,
diff --git a/libpurple/request/purplerequestfieldchoice.c b/libpurple/request/purplerequestfieldchoice.c
--- a/libpurple/request/purplerequestfieldchoice.c
+++ b/libpurple/request/purplerequestfieldchoice.c
@@ -46,8 +46,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleRequestFieldChoice, purple_request_field_choice,
-              PURPLE_TYPE_REQUEST_FIELD)
+G_DEFINE_FINAL_TYPE(PurpleRequestFieldChoice, purple_request_field_choice,
+                    PURPLE_TYPE_REQUEST_FIELD)
 
 static void
 purple_request_field_choice_get_property(GObject *obj, guint param_id,
diff --git a/libpurple/request/purplerequestfielddatasheet.c b/libpurple/request/purplerequestfielddatasheet.c
--- a/libpurple/request/purplerequestfielddatasheet.c
+++ b/libpurple/request/purplerequestfielddatasheet.c
@@ -54,8 +54,9 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleRequestFieldDatasheet, purple_request_field_datasheet,
-              PURPLE_TYPE_REQUEST_FIELD)
+G_DEFINE_FINAL_TYPE(PurpleRequestFieldDatasheet,
+                    purple_request_field_datasheet,
+                    PURPLE_TYPE_REQUEST_FIELD)
 
 static void
 purple_request_field_datasheet_get_property(GObject *obj, guint param_id,
diff --git a/libpurple/request/purplerequestfieldimage.c b/libpurple/request/purplerequestfieldimage.c
--- a/libpurple/request/purplerequestfieldimage.c
+++ b/libpurple/request/purplerequestfieldimage.c
@@ -47,8 +47,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleRequestFieldImage, purple_request_field_image,
-              PURPLE_TYPE_REQUEST_FIELD)
+G_DEFINE_FINAL_TYPE(PurpleRequestFieldImage, purple_request_field_image,
+                    PURPLE_TYPE_REQUEST_FIELD)
 
 static void
 purple_request_field_image_get_property(GObject *obj, guint param_id,
diff --git a/libpurple/request/purplerequestfieldint.c b/libpurple/request/purplerequestfieldint.c
--- a/libpurple/request/purplerequestfieldint.c
+++ b/libpurple/request/purplerequestfieldint.c
@@ -73,8 +73,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleRequestFieldInt, purple_request_field_int,
-              PURPLE_TYPE_REQUEST_FIELD)
+G_DEFINE_FINAL_TYPE(PurpleRequestFieldInt, purple_request_field_int,
+                    PURPLE_TYPE_REQUEST_FIELD)
 
 static void
 purple_request_field_int_get_property(GObject *obj, guint param_id,
diff --git a/libpurple/request/purplerequestfieldlabel.c b/libpurple/request/purplerequestfieldlabel.c
--- a/libpurple/request/purplerequestfieldlabel.c
+++ b/libpurple/request/purplerequestfieldlabel.c
@@ -32,8 +32,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleRequestFieldLabel, purple_request_field_label,
-              PURPLE_TYPE_REQUEST_FIELD)
+G_DEFINE_FINAL_TYPE(PurpleRequestFieldLabel, purple_request_field_label,
+                    PURPLE_TYPE_REQUEST_FIELD)
 
 static void
 purple_request_field_label_init(G_GNUC_UNUSED PurpleRequestFieldLabel *field) {
diff --git a/libpurple/request/purplerequestfieldlist.c b/libpurple/request/purplerequestfieldlist.c
--- a/libpurple/request/purplerequestfieldlist.c
+++ b/libpurple/request/purplerequestfieldlist.c
@@ -48,8 +48,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleRequestFieldList, purple_request_field_list,
-              PURPLE_TYPE_REQUEST_FIELD)
+G_DEFINE_FINAL_TYPE(PurpleRequestFieldList, purple_request_field_list,
+                    PURPLE_TYPE_REQUEST_FIELD)
 
 static void
 purple_request_field_list_get_property(GObject *obj, guint param_id, GValue *value,
diff --git a/libpurple/request/purplerequestfieldstring.c b/libpurple/request/purplerequestfieldstring.c
--- a/libpurple/request/purplerequestfieldstring.c
+++ b/libpurple/request/purplerequestfieldstring.c
@@ -69,8 +69,8 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE(PurpleRequestFieldString, purple_request_field_string,
-              PURPLE_TYPE_REQUEST_FIELD)
+G_DEFINE_FINAL_TYPE(PurpleRequestFieldString, purple_request_field_string,
+                    PURPLE_TYPE_REQUEST_FIELD)
 
 static void
 purple_request_field_string_get_property(GObject *obj, guint param_id,
diff --git a/libpurple/request/purplerequestgroup.c b/libpurple/request/purplerequestgroup.c
--- a/libpurple/request/purplerequestgroup.c
+++ b/libpurple/request/purplerequestgroup.c
@@ -115,9 +115,9 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE_WITH_CODE(PurpleRequestGroup, purple_request_group, G_TYPE_OBJECT,
-                        G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
-                                              purple_request_group_list_model_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(PurpleRequestGroup, purple_request_group, G_TYPE_OBJECT,
+                              G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
+                                                    purple_request_group_list_model_init))
 
 static void
 purple_request_group_get_property(GObject *obj, guint param_id, GValue *value,
diff --git a/libpurple/request/purplerequestpage.c b/libpurple/request/purplerequestpage.c
--- a/libpurple/request/purplerequestpage.c
+++ b/libpurple/request/purplerequestpage.c
@@ -129,9 +129,9 @@
 /******************************************************************************
  * GObject Implementation
  *****************************************************************************/
-G_DEFINE_TYPE_WITH_CODE(PurpleRequestPage, purple_request_page, G_TYPE_OBJECT,
-                        G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
-                                              purple_request_page_list_model_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(PurpleRequestPage, purple_request_page, G_TYPE_OBJECT,
+                              G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL,
+                                                    purple_request_page_list_model_init))
 
 static void
 purple_request_page_get_property(GObject *obj, guint param_id, GValue *value,
diff --git a/libpurple/roomlist.c b/libpurple/roomlist.c
--- a/libpurple/roomlist.c
+++ b/libpurple/roomlist.c
@@ -49,7 +49,8 @@
 static GParamSpec *properties[PROP_LAST];
 static PurpleRoomlistUiOps *ops = NULL;
 
-G_DEFINE_TYPE_WITH_PRIVATE(PurpleRoomlist, purple_roomlist, G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE_WITH_PRIVATE(PurpleRoomlist, purple_roomlist,
+                                 G_TYPE_OBJECT)
 
 /**************************************************************************/
 /* Room List API                                                          */
diff --git a/libpurple/status.c b/libpurple/status.c
--- a/libpurple/status.c
+++ b/libpurple/status.c
@@ -92,7 +92,7 @@
 
 static GParamSpec *properties[PROP_LAST];
 
-G_DEFINE_TYPE(PurpleStatus, purple_status, G_TYPE_OBJECT);
+G_DEFINE_FINAL_TYPE(PurpleStatus, purple_status, G_TYPE_OBJECT)
 
 static int primitive_scores[] =
 {
diff --git a/libpurple/tests/test_credential_manager.c b/libpurple/tests/test_credential_manager.c
--- a/libpurple/tests/test_credential_manager.c
+++ b/libpurple/tests/test_credential_manager.c
@@ -55,9 +55,9 @@
 	PurpleCredentialProvider parent;
 };
 
-G_DEFINE_TYPE(TestPurpleCredentialProvider,
-              test_purple_credential_provider,
-              PURPLE_TYPE_CREDENTIAL_PROVIDER)
+G_DEFINE_FINAL_TYPE(TestPurpleCredentialProvider,
+                    test_purple_credential_provider,
+                    PURPLE_TYPE_CREDENTIAL_PROVIDER)
 
 static void
 test_purple_credential_provider_read_password_async(PurpleCredentialProvider *p,
diff --git a/libpurple/tests/test_credential_provider.c b/libpurple/tests/test_credential_provider.c
--- a/libpurple/tests/test_credential_provider.c
+++ b/libpurple/tests/test_credential_provider.c
@@ -43,9 +43,9 @@
 	PurpleCredentialProvider parent;
 };
 
-G_DEFINE_TYPE(TestPurpleCredentialProviderEmpty,
-              test_purple_credential_provider_empty,
-              PURPLE_TYPE_CREDENTIAL_PROVIDER)
+G_DEFINE_FINAL_TYPE(TestPurpleCredentialProviderEmpty,
+                    test_purple_credential_provider_empty,
+                    PURPLE_TYPE_CREDENTIAL_PROVIDER)
 
 static void
 test_purple_credential_provider_empty_read_password_async(G_GNUC_UNUSED PurpleCredentialProvider *provider,
@@ -224,9 +224,9 @@
 	gboolean clear_password_finish;
 };
 
-G_DEFINE_TYPE(TestPurpleCredentialProvider,
-              test_purple_credential_provider,
-              PURPLE_TYPE_CREDENTIAL_PROVIDER)
+G_DEFINE_FINAL_TYPE(TestPurpleCredentialProvider,
+                    test_purple_credential_provider,
+                    PURPLE_TYPE_CREDENTIAL_PROVIDER)
 
 static void
 test_purple_credential_provider_read_password_async(PurpleCredentialProvider *p,
diff --git a/libpurple/tests/test_history_adapter.c b/libpurple/tests/test_history_adapter.c
--- a/libpurple/tests/test_history_adapter.c
+++ b/libpurple/tests/test_history_adapter.c
@@ -46,9 +46,9 @@
 	gboolean write;
 };
 
-G_DEFINE_TYPE(TestPurpleHistoryAdapter,
-              test_purple_history_adapter,
-              PURPLE_TYPE_HISTORY_ADAPTER)
+G_DEFINE_FINAL_TYPE(TestPurpleHistoryAdapter,
+                    test_purple_history_adapter,
+                    PURPLE_TYPE_HISTORY_ADAPTER)
 
 static gboolean
 test_purple_history_adapter_activate(PurpleHistoryAdapter *a,
diff --git a/libpurple/tests/test_history_manager.c b/libpurple/tests/test_history_manager.c
--- a/libpurple/tests/test_history_manager.c
+++ b/libpurple/tests/test_history_manager.c
@@ -46,9 +46,9 @@
 	gboolean write_called;
 };
 
-G_DEFINE_TYPE(TestPurpleHistoryAdapter,
-              test_purple_history_adapter,
-              PURPLE_TYPE_HISTORY_ADAPTER)
+G_DEFINE_FINAL_TYPE(TestPurpleHistoryAdapter,
+                    test_purple_history_adapter,
+                    PURPLE_TYPE_HISTORY_ADAPTER)
 
 static gboolean
 test_purple_history_adapter_activate(PurpleHistoryAdapter *a,
diff --git a/libpurple/tests/test_protocol.c b/libpurple/tests/test_protocol.c
--- a/libpurple/tests/test_protocol.c
+++ b/libpurple/tests/test_protocol.c
@@ -52,7 +52,8 @@
 	gboolean can_connect_finish;
 };
 
-G_DEFINE_TYPE(TestPurpleProtocol, test_purple_protocol, PURPLE_TYPE_PROTOCOL)
+G_DEFINE_FINAL_TYPE(TestPurpleProtocol, test_purple_protocol,
+                    PURPLE_TYPE_PROTOCOL)
 
 static void
 test_purple_protocol_can_connect_async(PurpleProtocol *protocol,
diff --git a/libpurple/tests/test_protocol_contacts.c b/libpurple/tests/test_protocol_contacts.c
--- a/libpurple/tests/test_protocol_contacts.c
+++ b/libpurple/tests/test_protocol_contacts.c
@@ -65,11 +65,11 @@
 {
 }
 
-G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolContactsEmpty,
-                        test_purple_protocol_contacts_empty,
-                        PURPLE_TYPE_PROTOCOL,
-                        G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_CONTACTS,
-                                              test_purple_protocol_contacts_empty_iface_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(TestPurpleProtocolContactsEmpty,
+                              test_purple_protocol_contacts_empty,
+                              PURPLE_TYPE_PROTOCOL,
+                              G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_CONTACTS,
+                                                    test_purple_protocol_contacts_empty_iface_init))
 
 static void
 test_purple_protocol_contacts_empty_init(G_GNUC_UNUSED TestPurpleProtocolContactsEmpty *empty)
@@ -335,10 +335,10 @@
 	iface->get_menu = test_purple_protocol_contacts_get_menu;
 }
 
-G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolContacts, test_purple_protocol_contacts,
-                        PURPLE_TYPE_PROTOCOL,
-                        G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_CONTACTS,
-                                              test_purple_protocol_contacts_iface_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(TestPurpleProtocolContacts, test_purple_protocol_contacts,
+                              PURPLE_TYPE_PROTOCOL,
+                              G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_CONTACTS,
+                                                    test_purple_protocol_contacts_iface_init))
 
 static void
 test_purple_protocol_contacts_init(TestPurpleProtocolContacts *protocol_contacts)
diff --git a/libpurple/tests/test_protocol_conversation.c b/libpurple/tests/test_protocol_conversation.c
--- a/libpurple/tests/test_protocol_conversation.c
+++ b/libpurple/tests/test_protocol_conversation.c
@@ -67,11 +67,11 @@
 {
 }
 
-G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolConversationEmpty,
-                        test_purple_protocol_conversation_empty,
-                        PURPLE_TYPE_PROTOCOL,
-                        G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_CONVERSATION,
-                                              test_purple_protocol_conversation_empty_iface_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(TestPurpleProtocolConversationEmpty,
+                              test_purple_protocol_conversation_empty,
+                              PURPLE_TYPE_PROTOCOL,
+                              G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_CONVERSATION,
+                                                    test_purple_protocol_conversation_empty_iface_init))
 
 static void
 test_purple_protocol_conversation_empty_init(G_GNUC_UNUSED TestPurpleProtocolConversationEmpty *empty)
@@ -606,10 +606,11 @@
 	iface->send_typing = test_purple_protocol_conversation_send_typing;
 }
 
-G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolConversation, test_purple_protocol_conversation,
-                        PURPLE_TYPE_PROTOCOL,
-                        G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_CONVERSATION,
-                                              test_purple_protocol_conversation_iface_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(TestPurpleProtocolConversation,
+                              test_purple_protocol_conversation,
+                              PURPLE_TYPE_PROTOCOL,
+                              G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_CONVERSATION,
+                                                    test_purple_protocol_conversation_iface_init))
 
 static void
 test_purple_protocol_conversation_init(TestPurpleProtocolConversation *protocol)
diff --git a/libpurple/tests/test_protocol_file_transfer.c b/libpurple/tests/test_protocol_file_transfer.c
--- a/libpurple/tests/test_protocol_file_transfer.c
+++ b/libpurple/tests/test_protocol_file_transfer.c
@@ -65,11 +65,11 @@
 {
 }
 
-G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolFileTransferEmpty,
-                        test_purple_protocol_file_transfer_empty,
-                        PURPLE_TYPE_PROTOCOL,
-                        G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_FILE_TRANSFER,
-                                              test_purple_protocol_file_transfer_empty_iface_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(TestPurpleProtocolFileTransferEmpty,
+                              test_purple_protocol_file_transfer_empty,
+                              PURPLE_TYPE_PROTOCOL,
+                              G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_FILE_TRANSFER,
+                                                    test_purple_protocol_file_transfer_empty_iface_init))
 
 static void
 test_purple_protocol_file_transfer_empty_init(G_GNUC_UNUSED TestPurpleProtocolFileTransferEmpty *empty)
@@ -306,10 +306,11 @@
 	iface->receive_finish = test_purple_protocol_file_transfer_receive_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolFileTransfer, test_purple_protocol_file_transfer,
-                        PURPLE_TYPE_PROTOCOL,
-                        G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_FILE_TRANSFER,
-                                              test_purple_protocol_file_transfer_iface_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(TestPurpleProtocolFileTransfer,
+                              test_purple_protocol_file_transfer,
+                              PURPLE_TYPE_PROTOCOL,
+                              G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_FILE_TRANSFER,
+                                                    test_purple_protocol_file_transfer_iface_init))
 
 static void
 test_purple_protocol_file_transfer_init(TestPurpleProtocolFileTransfer *protocol_file_transfer)
diff --git a/libpurple/tests/test_protocol_roster.c b/libpurple/tests/test_protocol_roster.c
--- a/libpurple/tests/test_protocol_roster.c
+++ b/libpurple/tests/test_protocol_roster.c
@@ -65,11 +65,11 @@
 {
 }
 
-G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolRosterEmpty,
-                        test_purple_protocol_roster_empty,
-                        PURPLE_TYPE_PROTOCOL,
-                        G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_ROSTER,
-                                              test_purple_protocol_roster_empty_iface_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(TestPurpleProtocolRosterEmpty,
+                              test_purple_protocol_roster_empty,
+                              PURPLE_TYPE_PROTOCOL,
+                              G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_ROSTER,
+                                                    test_purple_protocol_roster_empty_iface_init))
 
 static void
 test_purple_protocol_roster_empty_init(G_GNUC_UNUSED TestPurpleProtocolRosterEmpty *empty)
@@ -296,10 +296,11 @@
 	iface->remove_finish = test_purple_protocol_roster_remove_finish;
 }
 
-G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolRoster, test_purple_protocol_roster,
-                        PURPLE_TYPE_PROTOCOL,
-                        G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_ROSTER,
-                                              test_purple_protocol_roster_iface_init))
+G_DEFINE_FINAL_TYPE_WITH_CODE(TestPurpleProtocolRoster,
+                              test_purple_protocol_roster,
+                              PURPLE_TYPE_PROTOCOL,
+                              G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_ROSTER,
+                                                    test_purple_protocol_roster_iface_init))
 
 static void
 test_purple_protocol_roster_init(G_GNUC_UNUSED TestPurpleProtocolRoster *roster)
diff --git a/libpurple/tests/test_ui.c b/libpurple/tests/test_ui.c
--- a/libpurple/tests/test_ui.c
+++ b/libpurple/tests/test_ui.c
@@ -68,7 +68,7 @@
 
 G_DECLARE_FINAL_TYPE(TestPurpleUi, test_purple_ui, TEST_PURPLE, UI, PurpleUi)
 
-G_DEFINE_TYPE(TestPurpleUi, test_purple_ui, PURPLE_TYPE_UI)
+G_DEFINE_FINAL_TYPE(TestPurpleUi, test_purple_ui, PURPLE_TYPE_UI)
 
 static gboolean
 test_purple_ui_start(G_GNUC_UNUSED PurpleUi *ui, G_GNUC_UNUSED GError **error) {
