| 71 }; |
71 }; |
| 72 |
72 |
| 73 struct _PurpleMediaPrivate |
73 struct _PurpleMediaPrivate |
| 74 { |
74 { |
| 75 FsConference *conference; |
75 FsConference *conference; |
| |
76 gboolean initiator; |
| 76 |
77 |
| 77 GHashTable *sessions; /* PurpleMediaSession table */ |
78 GHashTable *sessions; /* PurpleMediaSession table */ |
| 78 GHashTable *participants; /* FsParticipant table */ |
79 GHashTable *participants; /* FsParticipant table */ |
| 79 |
80 |
| 80 GList *streams; /* PurpleMediaStream table */ |
81 GList *streams; /* PurpleMediaStream table */ |
| 162 g_object_class_install_property(gobject_class, PROP_CONFERENCE, |
164 g_object_class_install_property(gobject_class, PROP_CONFERENCE, |
| 163 g_param_spec_object("conference", |
165 g_param_spec_object("conference", |
| 164 "Farsight conference", |
166 "Farsight conference", |
| 165 "The FsConference associated with this media.", |
167 "The FsConference associated with this media.", |
| 166 FS_TYPE_CONFERENCE, |
168 FS_TYPE_CONFERENCE, |
| |
169 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); |
| |
170 |
| |
171 g_object_class_install_property(gobject_class, PROP_INITIATOR, |
| |
172 g_param_spec_boolean("initiator", |
| |
173 "initiator", |
| |
174 "If the local user initiated the conference.", |
| |
175 FALSE, |
| 167 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); |
176 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); |
| 168 |
177 |
| 169 purple_media_signals[ERROR] = g_signal_new("error", G_TYPE_FROM_CLASS(klass), |
178 purple_media_signals[ERROR] = g_signal_new("error", G_TYPE_FROM_CLASS(klass), |
| 170 G_SIGNAL_RUN_LAST, 0, NULL, NULL, |
179 G_SIGNAL_RUN_LAST, 0, NULL, NULL, |
| 171 g_cclosure_marshal_VOID__STRING, |
180 g_cclosure_marshal_VOID__STRING, |
| 309 if (media->priv->conference) |
318 if (media->priv->conference) |
| 310 g_object_unref(media->priv->conference); |
319 g_object_unref(media->priv->conference); |
| 311 media->priv->conference = g_value_get_object(value); |
320 media->priv->conference = g_value_get_object(value); |
| 312 g_object_ref(media->priv->conference); |
321 g_object_ref(media->priv->conference); |
| 313 break; |
322 break; |
| |
323 case PROP_INITIATOR: |
| |
324 media->priv->initiator = g_value_get_boolean(value); |
| |
325 break; |
| 314 default: |
326 default: |
| 315 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
327 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
| 316 break; |
328 break; |
| 317 } |
329 } |
| 318 } |
330 } |
| 326 media = PURPLE_MEDIA(object); |
338 media = PURPLE_MEDIA(object); |
| 327 |
339 |
| 328 switch (prop_id) { |
340 switch (prop_id) { |
| 329 case PROP_CONFERENCE: |
341 case PROP_CONFERENCE: |
| 330 g_value_set_object(value, media->priv->conference); |
342 g_value_set_object(value, media->priv->conference); |
| |
343 break; |
| |
344 case PROP_INITIATOR: |
| |
345 g_value_set_boolean(value, media->priv->initiator); |
| 331 break; |
346 break; |
| 332 default: |
347 default: |
| 333 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
348 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |
| 334 break; |
349 break; |
| 335 } |
350 } |