summaryrefslogtreecommitdiff
path: root/gst/librfb
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2016-03-26 13:36:34 -0400
committerNicolas Dufresne <nicolas.dufresne@collabora.com>2016-04-05 13:35:38 -0400
commit52b50d09523572ca0a65c663a55911c34a2e9a38 (patch)
tree810f118436ea5cf5c3b6a71f5e0cf5e61c9071ef /gst/librfb
parent89f3f162a54a04654bdb87ffb522efffae46ec80 (diff)
downloadgstreamer-plugins-bad-52b50d09523572ca0a65c663a55911c34a2e9a38.tar.gz
rfbsrc: Implement unlock() method
This prevent stalls when we try to stop the source while waiting for the server to send more updates.
Diffstat (limited to 'gst/librfb')
-rw-r--r--gst/librfb/gstrfbsrc.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gst/librfb/gstrfbsrc.c b/gst/librfb/gstrfbsrc.c
index f0780253f..e4f1a7188 100644
--- a/gst/librfb/gstrfbsrc.c
+++ b/gst/librfb/gstrfbsrc.c
@@ -76,6 +76,7 @@ static GstCaps *gst_rfb_src_fixate (GstBaseSrc * bsrc, GstCaps * caps);
static gboolean gst_rfb_src_start (GstBaseSrc * bsrc);
static gboolean gst_rfb_src_stop (GstBaseSrc * bsrc);
static gboolean gst_rfb_src_event (GstBaseSrc * bsrc, GstEvent * event);
+static gboolean gst_rfb_src_unlock (GstBaseSrc * bsrc);
static GstFlowReturn gst_rfb_src_create (GstPushSrc * psrc,
GstBuffer ** outbuf);
@@ -150,6 +151,7 @@ gst_rfb_src_class_init (GstRfbSrcClass * klass)
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_rfb_src_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_rfb_src_stop);
gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_rfb_src_event);
+ gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_rfb_src_unlock);
gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_rfb_src_create);
gstelement_class = GST_ELEMENT_CLASS (klass);
@@ -656,6 +658,14 @@ gst_rfb_src_event (GstBaseSrc * bsrc, GstEvent * event)
}
static gboolean
+gst_rfb_src_unlock (GstBaseSrc * bsrc)
+{
+ GstRfbSrc *src = GST_RFB_SRC (bsrc);
+ g_cancellable_cancel (src->decoder->cancellable);
+ return TRUE;
+}
+
+static gboolean
plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rfbsrc", GST_RANK_NONE,