Mercurial > pidgin
comparison libpurple/mediamanager.c @ 26412:86c5499f36e8
Fix embedding video when the sink is a gconfvideosrc pointing to an
autovideosrc.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Fri, 03 Apr 2009 04:40:36 +0000 |
parents | 081a819bc710 |
children | 90c65a8575bf |
comparison
equal
deleted
inserted
replaced
26411:c9b22d710a22 | 26412:86c5499f36e8 |
---|---|
611 | 611 |
612 #ifdef USE_VV | 612 #ifdef USE_VV |
613 static void | 613 static void |
614 window_id_cb(GstBus *bus, GstMessage *msg, PurpleMediaOutputWindow *ow) | 614 window_id_cb(GstBus *bus, GstMessage *msg, PurpleMediaOutputWindow *ow) |
615 { | 615 { |
616 GstElement *sink; | |
617 | |
616 if (GST_MESSAGE_TYPE(msg) != GST_MESSAGE_ELEMENT || | 618 if (GST_MESSAGE_TYPE(msg) != GST_MESSAGE_ELEMENT || |
617 !gst_structure_has_name(msg->structure, | 619 !gst_structure_has_name(msg->structure, |
618 "prepare-xwindow-id")) | 620 "prepare-xwindow-id")) |
619 return; | 621 return; |
620 | 622 |
621 if (GST_ELEMENT_PARENT(GST_MESSAGE_SRC(msg)) == ow->sink) { | 623 sink = GST_ELEMENT(GST_MESSAGE_SRC(msg)); |
622 g_signal_handlers_disconnect_matched(bus, G_SIGNAL_MATCH_FUNC | 624 while (sink != ow->sink) { |
623 | G_SIGNAL_MATCH_DATA, 0, 0, NULL, | 625 if (sink == NULL) |
624 window_id_cb, ow); | 626 return; |
625 | 627 sink = GST_ELEMENT_PARENT(sink); |
626 gst_x_overlay_set_xwindow_id(GST_X_OVERLAY( | 628 } |
627 GST_MESSAGE_SRC(msg)), ow->window_id); | 629 |
628 } | 630 g_signal_handlers_disconnect_matched(bus, G_SIGNAL_MATCH_FUNC |
631 | G_SIGNAL_MATCH_DATA, 0, 0, NULL, | |
632 window_id_cb, ow); | |
633 | |
634 gst_x_overlay_set_xwindow_id(GST_X_OVERLAY( | |
635 GST_MESSAGE_SRC(msg)), ow->window_id); | |
629 } | 636 } |
630 #endif | 637 #endif |
631 | 638 |
632 gboolean | 639 gboolean |
633 purple_media_manager_create_output_window(PurpleMediaManager *manager, | 640 purple_media_manager_create_output_window(PurpleMediaManager *manager, |