jabber: use g_object_notify_by_pspec instead of g_object_notify soc.2013.gobjectification

Wed, 20 Nov 2013 03:12:07 +0530

author
Ankit Vani <a@nevitus.org>
date
Wed, 20 Nov 2013 03:12:07 +0530
branch
soc.2013.gobjectification
changeset 35076
cadfc3f9a7cc
parent 35075
3a3c90a0ec07
child 35077
0a120b204362

jabber: use g_object_notify_by_pspec instead of g_object_notify

libpurple/protocols/jabber/google/google_p2p.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/jingle/content.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/jingle/iceudp.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/jingle/rawudp.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/jingle/rtp.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/jingle/session.c file | annotate | diff | comparison | revisions
--- a/libpurple/protocols/jabber/google/google_p2p.c	Wed Nov 20 02:36:19 2013 +0530
+++ b/libpurple/protocols/jabber/google/google_p2p.c	Wed Nov 20 03:12:07 2013 +0530
@@ -23,6 +23,7 @@
  */
 
 #include "internal.h"
+#include "glibcompat.h"
 
 #include "google_p2p.h"
 #include "jingle/jingle.h"
@@ -48,14 +49,16 @@
 static void jingle_google_p2p_add_local_candidate(JingleTransport *transport, const gchar *id, guint generation, PurpleMediaCandidate *candidate);
 static GList *jingle_google_p2p_get_remote_candidates(JingleTransport *transport);
 
-static JingleTransportClass *parent_class = NULL;
-
 enum {
 	PROP_0,
 	PROP_LOCAL_CANDIDATES,
 	PROP_REMOTE_CANDIDATES,
+	PROP_LAST
 };
 
+static JingleTransportClass *parent_class = NULL;
+static GParamSpec *properties[PROP_LAST];
+
 static JingleGoogleP2PCandidate *
 jingle_google_p2p_candidate_copy(JingleGoogleP2PCandidate *candidate)
 {
@@ -158,17 +161,19 @@
 	klass->parent_class.add_local_candidate = jingle_google_p2p_add_local_candidate;
 	klass->parent_class.get_remote_candidates = jingle_google_p2p_get_remote_candidates;
 
-	g_object_class_install_property(gobject_class, PROP_LOCAL_CANDIDATES,
-			g_param_spec_pointer("local-candidates",
+	properties[PROP_LOCAL_CANDIDATES] = g_param_spec_pointer("local-candidates",
 			"Local candidates",
 			"The local candidates for this transport.",
-			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_LOCAL_CANDIDATES,
+			properties[PROP_LOCAL_CANDIDATES]);
 
-	g_object_class_install_property(gobject_class, PROP_REMOTE_CANDIDATES,
-			g_param_spec_pointer("remote-candidates",
+	properties[PROP_REMOTE_CANDIDATES] = g_param_spec_pointer("remote-candidates",
 			"Remote candidates",
 			"The remote candidates for this transport.",
-			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_REMOTE_CANDIDATES,
+			properties[PROP_REMOTE_CANDIDATES]);
 
 	g_type_class_add_private(klass, sizeof(JingleGoogleP2PPrivate));
 }
@@ -284,7 +289,7 @@
 			google_p2p->priv->local_candidates = g_list_append(
 					google_p2p->priv->local_candidates, candidate);
 
-			g_object_notify(G_OBJECT(google_p2p), "local-candidates");
+			g_object_notify_by_pspec(G_OBJECT(google_p2p), properties[PROP_LOCAL_CANDIDATES]);
 
 			return;
 		}
@@ -293,7 +298,7 @@
 	google_p2p->priv->local_candidates = g_list_append(
 			google_p2p->priv->local_candidates, google_p2p_candidate);
 
-	g_object_notify(G_OBJECT(google_p2p), "local-candidates");
+	g_object_notify_by_pspec(G_OBJECT(google_p2p), properties[PROP_LOCAL_CANDIDATES]);
 }
 
 static GList *
@@ -357,7 +362,7 @@
 	}
 	priv->remote_candidates = g_list_append(priv->remote_candidates, candidate);
 
-	g_object_notify(G_OBJECT(google_p2p), "remote-candidates");
+	g_object_notify_by_pspec(G_OBJECT(google_p2p), properties[PROP_REMOTE_CANDIDATES]);
 }
 
 static JingleTransport *
--- a/libpurple/protocols/jabber/jingle/content.c	Wed Nov 20 02:36:19 2013 +0530
+++ b/libpurple/protocols/jabber/jingle/content.c	Wed Nov 20 03:12:07 2013 +0530
@@ -23,6 +23,7 @@
  */
 
 #include "internal.h"
+#include "glibcompat.h"
 
 #include "debug.h"
 #include "content.h"
@@ -52,8 +53,6 @@
 static PurpleXmlNode *jingle_content_to_xml_internal(JingleContent *content, PurpleXmlNode *jingle, JingleActionType action);
 static JingleContent *jingle_content_parse_internal(PurpleXmlNode *content);
 
-static GObjectClass *parent_class = NULL;
-
 enum {
 	PROP_0,
 	PROP_SESSION,
@@ -63,8 +62,12 @@
 	PROP_SENDERS,
 	PROP_TRANSPORT,
 	PROP_PENDING_TRANSPORT,
+	PROP_LAST
 };
 
+static GObjectClass *parent_class = NULL;
+static GParamSpec *properties[PROP_LAST];
+
 GType
 jingle_content_get_type()
 {
@@ -100,54 +103,61 @@
 	klass->to_xml = jingle_content_to_xml_internal;
 	klass->parse = jingle_content_parse_internal;
 
-	g_object_class_install_property(gobject_class, PROP_SESSION,
-			g_param_spec_object("session",
+	properties[PROP_SESSION] = g_param_spec_object("session",
 			"Jingle Session",
 			"The jingle session parent of this content.",
 			JINGLE_TYPE_SESSION,
-			G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_SESSION,
+			properties[PROP_SESSION]);
 
-	g_object_class_install_property(gobject_class, PROP_CREATOR,
-			g_param_spec_string("creator",
+	properties[PROP_CREATOR] = g_param_spec_string("creator",
 			"Creator",
 			"The participant that created this content.",
 			NULL,
-			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_CREATOR,
+			properties[PROP_CREATOR]);
 
-	g_object_class_install_property(gobject_class, PROP_DISPOSITION,
-			g_param_spec_string("disposition",
+	properties[PROP_DISPOSITION] = g_param_spec_string("disposition",
 			"Disposition",
 			"The disposition of the content.",
 			NULL,
-			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_DISPOSITION,
+			properties[PROP_DISPOSITION]);
 
-	g_object_class_install_property(gobject_class, PROP_NAME,
-			g_param_spec_string("name",
+	properties[PROP_NAME] = g_param_spec_string("name",
 			"Name",
 			"The name of this content.",
 			NULL,
-			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_NAME,
+			properties[PROP_NAME]);
 
-	g_object_class_install_property(gobject_class, PROP_SENDERS,
-			g_param_spec_string("senders",
+	properties[PROP_SENDERS] = g_param_spec_string("senders",
 			"Senders",
 			"The sender of this content.",
 			NULL,
-			G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_SENDERS,
+			properties[PROP_SENDERS]);
 
-	g_object_class_install_property(gobject_class, PROP_TRANSPORT,
-			g_param_spec_object("transport",
+	properties[PROP_TRANSPORT] = g_param_spec_object("transport",
 			"transport",
 			"The transport of this content.",
 			JINGLE_TYPE_TRANSPORT,
-			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_TRANSPORT,
+			properties[PROP_TRANSPORT]);
 
-	g_object_class_install_property(gobject_class, PROP_PENDING_TRANSPORT,
-			g_param_spec_object("pending-transport",
+	properties[PROP_PENDING_TRANSPORT] = g_param_spec_object("pending-transport",
 			"Pending transport",
 			"The pending transport contained within this content",
 			JINGLE_TYPE_TRANSPORT,
-			G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_PENDING_TRANSPORT,
+			properties[PROP_PENDING_TRANSPORT]);
 
 	g_type_class_add_private(klass, sizeof(JingleContentPrivate));
 }
@@ -366,8 +376,8 @@
 
 	obj = G_OBJECT(content);
 	g_object_freeze_notify(obj);
-	g_object_notify(obj, "transport");
-	g_object_notify(obj, "pending-transport");
+	g_object_notify_by_pspec(obj, properties[PROP_TRANSPORT]);
+	g_object_notify_by_pspec(obj, properties[PROP_PENDING_TRANSPORT]);
 	g_object_thaw_notify(obj);
 }
 
@@ -379,7 +389,7 @@
 		content->priv->pending_transport = NULL;
 	}
 
-	g_object_notify(G_OBJECT(content), "pending-transport");
+	g_object_notify_by_pspec(G_OBJECT(content), properties[PROP_PENDING_TRANSPORT]);
 }
 
 void
--- a/libpurple/protocols/jabber/jingle/iceudp.c	Wed Nov 20 02:36:19 2013 +0530
+++ b/libpurple/protocols/jabber/jingle/iceudp.c	Wed Nov 20 03:12:07 2013 +0530
@@ -23,6 +23,7 @@
  */
 
 #include "internal.h"
+#include "glibcompat.h"
 
 #include "iceudp.h"
 #include "jingle.h"
@@ -48,14 +49,16 @@
 static void jingle_iceudp_add_local_candidate(JingleTransport *transport, const gchar *id, guint generation, PurpleMediaCandidate *candidate);
 static GList *jingle_iceudp_get_remote_candidates(JingleTransport *transport);
 
-static JingleTransportClass *parent_class = NULL;
-
 enum {
 	PROP_0,
 	PROP_LOCAL_CANDIDATES,
 	PROP_REMOTE_CANDIDATES,
+	PROP_LAST
 };
 
+static JingleTransportClass *parent_class = NULL;
+static GParamSpec *properties[PROP_LAST];
+
 static JingleIceUdpCandidate *
 jingle_iceudp_candidate_copy(JingleIceUdpCandidate *candidate)
 {
@@ -171,17 +174,19 @@
 	klass->parent_class.add_local_candidate = jingle_iceudp_add_local_candidate;
 	klass->parent_class.get_remote_candidates = jingle_iceudp_get_remote_candidates;
 
-	g_object_class_install_property(gobject_class, PROP_LOCAL_CANDIDATES,
-			g_param_spec_pointer("local-candidates",
+	properties[PROP_LOCAL_CANDIDATES] = g_param_spec_pointer("local-candidates",
 			"Local candidates",
 			"The local candidates for this transport.",
-			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_LOCAL_CANDIDATES,
+			properties[PROP_LOCAL_CANDIDATES]);
 
-	g_object_class_install_property(gobject_class, PROP_REMOTE_CANDIDATES,
-			g_param_spec_pointer("remote-candidates",
+	properties[PROP_REMOTE_CANDIDATES] = g_param_spec_pointer("remote-candidates",
 			"Remote candidates",
 			"The remote candidates for this transport.",
-			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_REMOTE_CANDIDATES,
+			properties[PROP_REMOTE_CANDIDATES]);
 
 	g_type_class_add_private(klass, sizeof(JingleIceUdpPrivate));
 }
@@ -299,7 +304,7 @@
 			iceudp->priv->local_candidates = g_list_append(
 					iceudp->priv->local_candidates, iceudp_candidate);
 
-			g_object_notify(G_OBJECT(iceudp), "local-candidates");
+			g_object_notify_by_pspec(G_OBJECT(iceudp), properties[PROP_LOCAL_CANDIDATES]);
 
 			return;
 		}
@@ -308,7 +313,7 @@
 	iceudp->priv->local_candidates = g_list_append(
 			iceudp->priv->local_candidates, iceudp_candidate);
 
-	g_object_notify(G_OBJECT(iceudp), "local-candidates");
+	g_object_notify_by_pspec(G_OBJECT(iceudp), properties[PROP_LOCAL_CANDIDATES]);
 }
 
 static GList *
@@ -373,7 +378,7 @@
 	}
 	priv->remote_candidates = g_list_append(priv->remote_candidates, candidate);
 
-	g_object_notify(G_OBJECT(iceudp), "remote-candidates");
+	g_object_notify_by_pspec(G_OBJECT(iceudp), properties[PROP_REMOTE_CANDIDATES]);
 }
 
 static JingleTransport *
--- a/libpurple/protocols/jabber/jingle/rawudp.c	Wed Nov 20 02:36:19 2013 +0530
+++ b/libpurple/protocols/jabber/jingle/rawudp.c	Wed Nov 20 03:12:07 2013 +0530
@@ -23,6 +23,7 @@
  */
 
 #include "internal.h"
+#include "glibcompat.h"
 
 #include "rawudp.h"
 #include "jingle.h"
@@ -48,14 +49,16 @@
 static void jingle_rawudp_add_local_candidate(JingleTransport *transport, const gchar *id, guint generation, PurpleMediaCandidate *candidate);
 static GList *jingle_rawudp_get_remote_candidates(JingleTransport *transport);
 
-static JingleTransportClass *parent_class = NULL;
-
 enum {
 	PROP_0,
 	PROP_LOCAL_CANDIDATES,
 	PROP_REMOTE_CANDIDATES,
+	PROP_LAST
 };
 
+static JingleTransportClass *parent_class = NULL;
+static GParamSpec *properties[PROP_LAST];
+
 static JingleRawUdpCandidate *
 jingle_rawudp_candidate_copy(JingleRawUdpCandidate *candidate)
 {
@@ -142,17 +145,19 @@
 	klass->parent_class.add_local_candidate = jingle_rawudp_add_local_candidate;
 	klass->parent_class.get_remote_candidates = jingle_rawudp_get_remote_candidates;
 
-	g_object_class_install_property(gobject_class, PROP_LOCAL_CANDIDATES,
-			g_param_spec_pointer("local-candidates",
+	properties[PROP_LOCAL_CANDIDATES] = g_param_spec_pointer("local-candidates",
 			"Local candidates",
 			"The local candidates for this transport.",
-			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_LOCAL_CANDIDATES,
+			properties[PROP_LOCAL_CANDIDATES]);
 
-	g_object_class_install_property(gobject_class, PROP_REMOTE_CANDIDATES,
-			g_param_spec_pointer("remote-candidates",
+	properties[PROP_REMOTE_CANDIDATES] = g_param_spec_pointer("remote-candidates",
 			"Remote candidates",
 			"The remote candidates for this transport.",
-			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_REMOTE_CANDIDATES,
+			properties[PROP_REMOTE_CANDIDATES]);
 
 	g_type_class_add_private(klass, sizeof(JingleRawUdpPrivate));
 }
@@ -250,7 +255,7 @@
 			rawudp->priv->local_candidates = g_list_append(
 					rawudp->priv->local_candidates, rawudp_candidate);
 
-			g_object_notify(G_OBJECT(rawudp), "local-candidates");
+			g_object_notify_by_pspec(G_OBJECT(rawudp), properties[PROP_LOCAL_CANDIDATES]);
 
 			return;
 		}
@@ -259,7 +264,7 @@
 	rawudp->priv->local_candidates = g_list_append(
 			rawudp->priv->local_candidates, rawudp_candidate);
 
-	g_object_notify(G_OBJECT(rawudp), "local-candidates");
+	g_object_notify_by_pspec(G_OBJECT(rawudp), properties[PROP_LOCAL_CANDIDATES]);
 }
 
 static GList *
@@ -307,7 +312,7 @@
 	}
 	priv->remote_candidates = g_list_append(priv->remote_candidates, candidate);
 
-	g_object_notify(G_OBJECT(rawudp), "remote-candidates");
+	g_object_notify_by_pspec(G_OBJECT(rawudp), properties[PROP_REMOTE_CANDIDATES]);
 }
 
 static JingleTransport *
--- a/libpurple/protocols/jabber/jingle/rtp.c	Wed Nov 20 02:36:19 2013 +0530
+++ b/libpurple/protocols/jabber/jingle/rtp.c	Wed Nov 20 03:12:07 2013 +0530
@@ -22,7 +22,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
-#include "config.h"
+#include "internal.h"
+#include "glibcompat.h"
 
 #ifdef USE_VV
 
@@ -58,7 +59,6 @@
 
 static PurpleMedia *jingle_rtp_get_media(JingleSession *session);
 
-static JingleContentClass *parent_class = NULL;
 #if 0
 enum {
 	LAST_SIGNAL
@@ -70,8 +70,12 @@
 	PROP_0,
 	PROP_MEDIA_TYPE,
 	PROP_SSRC,
+	PROP_LAST
 };
 
+static JingleContentClass *parent_class = NULL;
+static GParamSpec *properties[PROP_LAST];
+
 GType
 jingle_rtp_get_type()
 {
@@ -109,18 +113,21 @@
 	klass->parent_class.description_type = JINGLE_APP_RTP;
 	klass->parent_class.handle_action = jingle_rtp_handle_action_internal;
 
-	g_object_class_install_property(gobject_class, PROP_MEDIA_TYPE,
-			g_param_spec_string("media-type",
+	properties[PROP_MEDIA_TYPE] = g_param_spec_string("media-type",
 			"Media Type",
 			"The media type (\"audio\" or \"video\") for this rtp session.",
 			NULL,
-			G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-	g_object_class_install_property(gobject_class, PROP_SSRC,
-			g_param_spec_string("ssrc",
+			G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_MEDIA_TYPE,
+			properties[PROP_MEDIA_TYPE]);
+
+	properties[PROP_SSRC] = g_param_spec_string("ssrc",
 			"ssrc",
 			"The ssrc for this rtp session.",
 			NULL,
-			G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_SSRC,
+			properties[PROP_SSRC]);
 
 	g_type_class_add_private(klass, sizeof(JingleRtpPrivate));
 }
@@ -882,7 +889,7 @@
 		jingle_session_add_content(session, content);
 		JINGLE_RTP(content)->priv->media_type = g_strdup("audio");
 		jingle_rtp_init_media(content);
-		g_object_notify(G_OBJECT(content), "media-type");
+		g_object_notify_by_pspec(G_OBJECT(content), properties[PROP_MEDIA_TYPE]);
 	}
 	if (type & PURPLE_MEDIA_VIDEO) {
 		transport = jingle_transport_create(transport_type);
@@ -891,7 +898,7 @@
 		jingle_session_add_content(session, content);
 		JINGLE_RTP(content)->priv->media_type = g_strdup("video");
 		jingle_rtp_init_media(content);
-		g_object_notify(G_OBJECT(content), "media-type");
+		g_object_notify_by_pspec(G_OBJECT(content), properties[PROP_MEDIA_TYPE]);
 	}
 
 	g_free(me);
--- a/libpurple/protocols/jabber/jingle/session.c	Wed Nov 20 02:36:19 2013 +0530
+++ b/libpurple/protocols/jabber/jingle/session.c	Wed Nov 20 03:12:07 2013 +0530
@@ -23,6 +23,7 @@
  */
 
 #include "internal.h"
+#include "glibcompat.h"
 
 #include "content.h"
 #include "debug.h"
@@ -51,8 +52,6 @@
 static void jingle_session_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
 static void jingle_session_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
 
-static GObjectClass *parent_class = NULL;
-
 enum {
 	PROP_0,
 	PROP_SID,
@@ -63,8 +62,12 @@
 	PROP_STATE,
 	PROP_CONTENTS,
 	PROP_PENDING_CONTENTS,
+	PROP_LAST
 };
 
+static GObjectClass *parent_class = NULL;
+static GParamSpec *properties[PROP_LAST];
+
 GType
 jingle_session_get_type()
 {
@@ -98,58 +101,66 @@
 	gobject_class->set_property = jingle_session_set_property;
 	gobject_class->get_property = jingle_session_get_property;
 
-	g_object_class_install_property(gobject_class, PROP_SID,
-			g_param_spec_string("sid",
+	properties[PROP_SID] = g_param_spec_string("sid",
 			"Session ID",
 			"The unique session ID of the Jingle Session.",
 			NULL,
-			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_SID,
+			properties[PROP_SID]);
 
-	g_object_class_install_property(gobject_class, PROP_JS,
-			g_param_spec_pointer("js",
+	properties[PROP_JS] = g_param_spec_pointer("js",
 			"JabberStream",
 			"The Jabber stream associated with this session.",
-			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_JS,
+			properties[PROP_JS]);
 
-	g_object_class_install_property(gobject_class, PROP_REMOTE_JID,
-			g_param_spec_string("remote-jid",
+	properties[PROP_REMOTE_JID] = g_param_spec_string("remote-jid",
 			"Remote JID",
 			"The JID of the remote participant.",
 			NULL,
-			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_REMOTE_JID,
+			properties[PROP_REMOTE_JID]);
 
-	g_object_class_install_property(gobject_class, PROP_LOCAL_JID,
-			g_param_spec_string("local-jid",
+	properties[PROP_LOCAL_JID] = g_param_spec_string("local-jid",
 			"Local JID",
 			"The JID of the local participant.",
 			NULL,
-			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_LOCAL_JID,
+			properties[PROP_LOCAL_JID]);
 
-	g_object_class_install_property(gobject_class, PROP_IS_INITIATOR,
-			g_param_spec_boolean("is-initiator",
+	properties[PROP_IS_INITIATOR] = g_param_spec_boolean("is-initiator",
 			"Is Initiator",
 			"Whether or not the local JID is the initiator of the session.",
 			FALSE,
-			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_IS_INITIATOR,
+			properties[PROP_IS_INITIATOR]);
 
-	g_object_class_install_property(gobject_class, PROP_STATE,
-			g_param_spec_boolean("state",
+	properties[PROP_STATE] = g_param_spec_boolean("state",
 			"State",
 			"The state of the session (PENDING=FALSE, ACTIVE=TRUE).",
 			FALSE,
-			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_STATE,
+			properties[PROP_STATE]);
 
-	g_object_class_install_property(gobject_class, PROP_CONTENTS,
-			g_param_spec_pointer("contents",
+	properties[PROP_CONTENTS] = g_param_spec_pointer("contents",
 			"Contents",
 			"The active contents contained within this session",
-			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_CONTENTS,
+			properties[PROP_CONTENTS]);
 
-	g_object_class_install_property(gobject_class, PROP_PENDING_CONTENTS,
-			g_param_spec_pointer("pending-contents",
+	properties[PROP_PENDING_CONTENTS] = g_param_spec_pointer("pending-contents",
 			"Pending contents",
 			"The pending contents contained within this session",
-			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+			G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+	g_object_class_install_property(gobject_class, PROP_PENDING_CONTENTS,
+			properties[PROP_PENDING_CONTENTS]);
 
 	g_type_class_add_private(klass, sizeof(JingleSessionPrivate));
 }
@@ -564,7 +575,7 @@
 			g_list_append(session->priv->contents, content);
 	jingle_content_set_session(content, session);
 
-	g_object_notify(G_OBJECT(session), "contents");
+	g_object_notify_by_pspec(G_OBJECT(session), properties[PROP_CONTENTS]);
 }
 
 void
@@ -578,7 +589,7 @@
 				g_list_remove(session->priv->contents, content);
 		g_object_unref(content);
 
-		g_object_notify(G_OBJECT(session), "contents");
+		g_object_notify_by_pspec(G_OBJECT(session), properties[PROP_CONTENTS]);
 	}
 }
 
@@ -589,7 +600,7 @@
 			g_list_append(session->priv->pending_contents, content);
 	jingle_content_set_session(content, session);
 
-	g_object_notify(G_OBJECT(session), "pending-contents");
+	g_object_notify_by_pspec(G_OBJECT(session), properties[PROP_PENDING_CONTENTS]);
 }
 
 void
@@ -602,7 +613,7 @@
 				g_list_remove(session->priv->pending_contents, content);
 		g_object_unref(content);
 
-		g_object_notify(G_OBJECT(session), "pending-contents");
+		g_object_notify_by_pspec(G_OBJECT(session), properties[PROP_PENDING_CONTENTS]);
 	}
 }
 
@@ -623,7 +634,7 @@
 {
 	session->priv->state = TRUE;
 
-	g_object_notify(G_OBJECT(session), "state");
+	g_object_notify_by_pspec(G_OBJECT(session), properties[PROP_STATE]);
 }
 
 JabberIq *

mercurial