[telepathy-stream-engine/master] Don't try to iterate further if the video sink matching the prepare-window-xid was found
Olivier Crête
olivier.crete at collabora.co.uk
Wed Jul 15 11:42:13 PDT 2009
---
src/videosink.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/videosink.c b/src/videosink.c
index 9c7dd09..e388798 100644
--- a/src/videosink.c
+++ b/src/videosink.c
@@ -474,6 +474,7 @@ struct xid_data
{
GstElement *src;
gulong window_id;
+ gboolean found;
};
static void
@@ -482,8 +483,10 @@ set_window_xid (gpointer data, gpointer user_data)
GstXOverlay *xov = GST_X_OVERLAY (data);
struct xid_data *xiddata = (struct xid_data *) user_data;
- if (GST_ELEMENT_CAST(xov) == xiddata->src)
+ if (GST_ELEMENT_CAST(xov) == xiddata->src) {
gst_x_overlay_set_xwindow_id (xov, xiddata->window_id);
+ xiddata->found = TRUE;
+ }
}
gboolean
@@ -492,7 +495,6 @@ tp_stream_engine_video_sink_bus_sync_message (
GstMessage *message)
{
const GstStructure *s;
- gboolean found = FALSE;
GstIterator *it = NULL;
struct xid_data xiddata;
@@ -505,6 +507,7 @@ tp_stream_engine_video_sink_bus_sync_message (
xiddata.src = GST_ELEMENT (GST_MESSAGE_SRC (message));
xiddata.window_id = self->priv->window_id;
+ xiddata.found = FALSE;
it = gst_bin_iterate_all_by_interface (GST_BIN (self->priv->sink),
GST_TYPE_X_OVERLAY);
@@ -513,5 +516,5 @@ tp_stream_engine_video_sink_bus_sync_message (
gst_iterator_resync (it);
gst_iterator_free (it);
- return found;
+ return xiddata.found;
}
--
1.5.6.5
More information about the telepathy-commits
mailing list