diff options
author | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-12-10 17:53:01 +0100 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-12-10 17:53:01 +0100 |
commit | dc91454984a93cf9dd9587dbe7ba737d1fa77c56 (patch) | |
tree | d4daddbb9bda4bf56d1d41f6320123c05b2541a6 | |
parent | d18118418ec25236c0975a8dc0541c74aca76de4 (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.c | 15 |
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; +} |