libpurple/connection.c

branch
soc.2013.gobjectification.plugins
changeset 36694
7b1fefd1e2ee
parent 36691
92122af1f083
child 36695
7cf0bf5b9a40
--- a/libpurple/connection.c	Sat Sep 07 02:40:24 2013 +0530
+++ b/libpurple/connection.c	Sat Sep 07 14:50:37 2013 +0530
@@ -903,11 +903,16 @@
 		}
 	}
 
-	gc = g_object_new(PURPLE_TYPE_CONNECTION,
-			PROP_PROTOCOL_S,  protocol,
-			PROP_PASSWORD_S,  password,
-			PROP_ACCOUNT_S,   account,
-			NULL);
+	if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, connection_new))
+		gc = purple_protocol_iface_connection_new(protocol, account, password);
+	else
+		gc = g_object_new(PURPLE_TYPE_CONNECTION,
+				PROP_PROTOCOL_S,  protocol,
+				PROP_ACCOUNT_S,   account,
+				PROP_PASSWORD_S,  password,
+				NULL);
+
+	g_return_if_fail(gc != NULL);
 
 	if (regist)
 	{
@@ -963,11 +968,16 @@
 		return;
 	}
 
-	gc = g_object_new(PURPLE_TYPE_CONNECTION,
-			PROP_PROTOCOL_S,  protocol,
-			PROP_PASSWORD_S,  password,
-			PROP_ACCOUNT_S,   account,
-			NULL);
+	if (PURPLE_PROTOCOL_IMPLEMENTS(protocol, connection_new))
+		gc = purple_protocol_iface_connection_new(protocol, account, password);
+	else
+		gc = g_object_new(PURPLE_TYPE_CONNECTION,
+				PROP_PROTOCOL_S,  protocol,
+				PROP_ACCOUNT_S,   account,
+				PROP_PASSWORD_S,  password,
+				NULL);
+
+	g_return_if_fail(gc != NULL);
 
 	purple_debug_info("connection", "Unregistering.  gc = %p\n", gc);
 

mercurial