comparison libpurple/media.c @ 27857:c1687897825f

Add pause capability for local video.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Fri, 07 Aug 2009 11:31:13 +0000
parents c8ff0a9cf8cc
children d865064a3104
comparison
equal deleted inserted replaced
27856:1c58b9d2429b 27857:c1687897825f
272 "PURPLE_MEDIA_INFO_REJECT", "reject" }, 272 "PURPLE_MEDIA_INFO_REJECT", "reject" },
273 { PURPLE_MEDIA_INFO_MUTE, 273 { PURPLE_MEDIA_INFO_MUTE,
274 "PURPLE_MEDIA_INFO_MUTE", "mute" }, 274 "PURPLE_MEDIA_INFO_MUTE", "mute" },
275 { PURPLE_MEDIA_INFO_UNMUTE, 275 { PURPLE_MEDIA_INFO_UNMUTE,
276 "PURPLE_MEDIA_INFO_UNMUTE", "unmute" }, 276 "PURPLE_MEDIA_INFO_UNMUTE", "unmute" },
277 { PURPLE_MEDIA_INFO_PAUSE,
278 "PURPLE_MEDIA_INFO_PAUSE", "pause" },
279 { PURPLE_MEDIA_INFO_UNPAUSE,
280 "PURPLE_MEDIA_INFO_UNPAUSE", "unpause" },
277 { PURPLE_MEDIA_INFO_HOLD, 281 { PURPLE_MEDIA_INFO_HOLD,
278 "PURPLE_MEDIA_INFO_HOLD", "hold" }, 282 "PURPLE_MEDIA_INFO_HOLD", "hold" },
279 { PURPLE_MEDIA_INFO_UNHOLD, 283 { PURPLE_MEDIA_INFO_UNHOLD,
280 "PURPLE_MEDIA_INFO_HOLD", "unhold" }, 284 "PURPLE_MEDIA_INFO_HOLD", "unhold" },
281 { 0, NULL, NULL } 285 { 0, NULL, NULL }
2256 priv->confbin), name); 2260 priv->confbin), name);
2257 g_free(name); 2261 g_free(name);
2258 g_object_set(volume, "mute", active, NULL); 2262 g_object_set(volume, "mute", active, NULL);
2259 } 2263 }
2260 } 2264 }
2265 } else if (local == TRUE && (type == PURPLE_MEDIA_INFO_PAUSE ||
2266 type == PURPLE_MEDIA_INFO_UNPAUSE)) {
2267 gboolean active = (type == PURPLE_MEDIA_INFO_PAUSE);
2268 GList *streams = purple_media_get_streams(media,
2269 session_id, participant);
2270 for (; streams; streams = g_list_delete_link(streams, streams)) {
2271 PurpleMediaStream *stream = streams->data;
2272 if (stream->session->type & PURPLE_MEDIA_SEND_VIDEO) {
2273 g_object_set(stream->stream, "direction",
2274 purple_media_to_fs_stream_direction(
2275 stream->session->type & ((active) ?
2276 ~PURPLE_MEDIA_SEND_VIDEO :
2277 PURPLE_MEDIA_VIDEO)), NULL);
2278 }
2279 }
2261 } 2280 }
2262 2281
2263 g_signal_emit(media, purple_media_signals[STREAM_INFO], 2282 g_signal_emit(media, purple_media_signals[STREAM_INFO],
2264 0, type, session_id, participant, local); 2283 0, type, session_id, participant, local);
2265 2284