comparison libpurple/media.c @ 26338:754be87047dc

Have purple_media_set_output_volume handle all sinks.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Sun, 22 Mar 2009 21:43:58 +0000
parents 775920086761
children b2e290e76998
comparison
equal deleted inserted replaced
26337:dd45432d6b69 26338:754be87047dc
2320 2320
2321 for (; streams; streams = g_list_delete_link(streams, streams)) { 2321 for (; streams; streams = g_list_delete_link(streams, streams)) {
2322 PurpleMediaStream *stream = streams->data; 2322 PurpleMediaStream *stream = streams->data;
2323 2323
2324 if (stream->session->type & PURPLE_MEDIA_RECV_AUDIO) { 2324 if (stream->session->type & PURPLE_MEDIA_RECV_AUDIO) {
2325 GstElement *volume = gst_bin_get_by_name( 2325 GstElement *tee = stream->tee;
2326 GST_BIN(stream->sink), 2326 GstIterator *iter = gst_element_iterate_src_pads(tee);
2327 "purpleaudiooutputvolume"); 2327 GstPad *sinkpad;
2328 g_object_set(volume, "volume", level, NULL); 2328 while (gst_iterator_next(iter, (gpointer)&sinkpad)
2329 == GST_ITERATOR_OK) {
2330 GstPad *peer = gst_pad_get_peer(sinkpad);
2331 GstElement *volume;
2332
2333 if (peer == NULL) {
2334 gst_object_unref(sinkpad);
2335 continue;
2336 }
2337
2338 volume = gst_bin_get_by_name(GST_BIN(
2339 GST_OBJECT_PARENT(peer)),
2340 "purpleaudiooutputvolume");
2341 g_object_set(volume, "volume", level, NULL);
2342 gst_object_unref(peer);
2343 gst_object_unref(sinkpad);
2344 }
2345 gst_iterator_free(iter);
2329 } 2346 }
2330 } 2347 }
2331 } 2348 }
2332 2349
2333 gulong 2350 gulong