summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-12-10 17:53:01 +0100
committerWim Taymans <wim.taymans@collabora.co.uk>2009-12-10 17:53:01 +0100
commitdc91454984a93cf9dd9587dbe7ba737d1fa77c56 (patch)
treed4daddbb9bda4bf56d1d41f6320123c05b2541a6
parentd18118418ec25236c0975a8dc0541c74aca76de4 (diff)
tcpclientsrc: unset flushing state too
When unlocking, we set the flushing state on the fdset. Implement unlock_stop so that we can use it to unset the flushing state again. Fixes #577326
-rw-r--r--gst/tcp/gsttcpclientsrc.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gst/tcp/gsttcpclientsrc.c b/gst/tcp/gsttcpclientsrc.c
index 578ab6ef6..a0548b992 100644
--- a/gst/tcp/gsttcpclientsrc.c
+++ b/gst/tcp/gsttcpclientsrc.c
@@ -86,6 +86,7 @@ static GstFlowReturn gst_tcp_client_src_create (GstPushSrc * psrc,
static gboolean gst_tcp_client_src_stop (GstBaseSrc * bsrc);
static gboolean gst_tcp_client_src_start (GstBaseSrc * bsrc);
static gboolean gst_tcp_client_src_unlock (GstBaseSrc * bsrc);
+static gboolean gst_tcp_client_src_unlock_stop (GstBaseSrc * bsrc);
static void gst_tcp_client_src_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
@@ -136,6 +137,7 @@ gst_tcp_client_src_class_init (GstTCPClientSrcClass * klass)
gstbasesrc_class->start = gst_tcp_client_src_start;
gstbasesrc_class->stop = gst_tcp_client_src_stop;
gstbasesrc_class->unlock = gst_tcp_client_src_unlock;
+ gstbasesrc_class->unlock_stop = gst_tcp_client_src_unlock_stop;
gstpush_src_class->create = gst_tcp_client_src_create;
@@ -423,7 +425,20 @@ gst_tcp_client_src_unlock (GstBaseSrc * bsrc)
{
GstTCPClientSrc *src = GST_TCP_CLIENT_SRC (bsrc);
+ GST_DEBUG_OBJECT (src, "set to flushing");
gst_poll_set_flushing (src->fdset, TRUE);
return TRUE;
}
+
+/* will be called only between calls to start() and stop() */
+static gboolean
+gst_tcp_client_src_unlock_stop (GstBaseSrc * bsrc)
+{
+ GstTCPClientSrc *src = GST_TCP_CLIENT_SRC (bsrc);
+
+ GST_DEBUG_OBJECT (src, "unset flushing");
+ gst_poll_set_flushing (src->fdset, FALSE);
+
+ return TRUE;
+}