annotate libpurple/media.c @ 25546:5150d8b576be

Missed files
author Sean Egan <seanegan@gmail.com>
date Wed, 05 Sep 2007 00:48:34 +0000
parents
children 70cdff43ec76
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25546
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /**
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2 * @file media.c Account API
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 * @ingroup core
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
4 *
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
5 * purple
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
6 *
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 * Purple is the legal property of its developers, whose names are too numerous
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 * to list here. Please refer to the COPYRIGHT file distributed with this
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * source distribution.
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 *
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 * it under the terms of the GNU General Public License as published by
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * the Free Software Foundation; either version 2 of the License, or
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * (at your option) any later version.
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 *
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 * GNU General Public License for more details.
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
20 *
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 * along with this program; if not, write to the Free Software
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24 */
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 #include "connection.h"
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27 #include "media.h"
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 #ifdef USE_FARSIGHT
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31 #include <farsight/farsight.h>
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 struct _PurpleMediaPrivate
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34 {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 FarsightSession *farsight_session;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 char *name;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38 PurpleConnection *connection;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 };
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41 #define PURPLE_MEDIA_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_MEDIA, PurpleMediaPrivate))
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
43 static void purple_media_class_init (PurpleMediaClass *klass);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44 static void purple_media_init (PurpleMedia *media);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 static void purple_media_finalize (GObject *object);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 static void purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47 static void purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 static GObjectClass *parent_class = NULL;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 enum {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 STATE_CHANGE,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55 LAST_SIGNAL
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 };
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 static guint purple_media_signals[LAST_SIGNAL] = {0};
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 enum {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 PROP_0,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 PROP_FARSIGHT_SESSION,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 PROP_NAME,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63 PROP_CONNECTION,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64 PROP_MIC_ELEMENT,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 PROP_SPEAKER_ELEMENT,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 };
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
67
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 GType
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69 purple_media_get_type()
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
70 {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71 static GType type = 0;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
72
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
73 if (type == 0) {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
74 static const GTypeInfo info = {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75 sizeof(PurpleMediaClass),
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
76 NULL,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77 NULL,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78 (GClassInitFunc) purple_media_class_init,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79 NULL,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 NULL,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 sizeof(PurpleMedia),
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82 0,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 (GInstanceInitFunc) purple_media_init
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84 };
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 type = g_type_register_static(G_TYPE_OBJECT, "PurpleMedia", &info, 0);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 }
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 return type;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88 }
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 static void
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 purple_media_class_init (PurpleMediaClass *klass)
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94 GObjectClass *gobject_class = (GObjectClass*)klass;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 parent_class = g_type_class_peek_parent(klass);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 gobject_class->finalize = purple_media_finalize;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98 gobject_class->set_property = purple_media_set_property;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99 gobject_class->get_property = purple_media_get_property;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101 g_object_class_install_property(gobject_class, PROP_FARSIGHT_SESSION,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
102 g_param_spec_object("farsight-session",
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 "Farsight session",
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 "The FarsightSession associated with this media.",
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 FARSIGHT_TYPE_SESSION,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READABLE));
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 g_object_class_install_property(gobject_class, PROP_NAME,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 g_param_spec_string("screenname",
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 "Screenname",
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 "The screenname of the remote user",
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112 NULL,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READABLE));
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115 g_object_class_install_property(gobject_class, PROP_CONNECTION,
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 g_param_spec_pointer("connection",
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
117 "Connection",
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118 "The PurpleConnection associated with this session",
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
119 G_PARAM_CONSTRUCT_ONLY | G_PARAM_READABLE));
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120 }
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122 static void
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123 purple_media_init (PurpleMedia *media)
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124 {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125 media->priv = PURPLE_MEDIA_GET_PRIVATE(media);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126 }
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 static void
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129 purple_media_finalize (GObject *media)
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130 {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131 parent_class->finalize(media);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
132 }
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134 static void
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 purple_media_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136 {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137 PurpleMedia *media;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138 g_return_if_fail(PURPLE_IS_MEDIA(object));
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140 media = PURPLE_MEDIA(object);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
141
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
142 switch (prop_id) {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 case PROP_FARSIGHT_SESSION:
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 media->priv->farsight_session = g_value_get_object(value);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145 break;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146 case PROP_NAME:
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147 media->priv->name = g_value_get_string(value);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148 break;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
149 case PROP_CONNECTION:
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150 media->priv->connection = g_value_get_pointer(value);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151 break;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 default:
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
153 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
154 break;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
155 }
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
156 }
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
157
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158 static void
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159 purple_media_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160 {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 PurpleMedia *media;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162 g_return_if_fail(PURPLE_IS_MEDIA(object));
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
164 media = PURPLE_MEDIA(object);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
165
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
166 switch (prop_id) {
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
167 case PROP_FARSIGHT_SESSION:
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168 g_value_set_object(value, media->priv->farsight_session);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
169 break;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170 case PROP_NAME:
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
171 g_value_set_string(value, media->priv->name);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172 break;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
173 case PROP_CONNECTION:
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 g_value_set_pointer(value, media->priv->connection);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175 break;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176 default:
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 break;
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 }
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181 }
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182
5150d8b576be Missed files
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
183 #endif /* USE_FARSIGHT */