diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2016-03-26 13:36:34 -0400 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2016-04-05 13:35:38 -0400 |
commit | 52b50d09523572ca0a65c663a55911c34a2e9a38 (patch) | |
tree | 810f118436ea5cf5c3b6a71f5e0cf5e61c9071ef /gst/librfb | |
parent | 89f3f162a54a04654bdb87ffb522efffae46ec80 (diff) | |
download | gstreamer-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.c | 10 |
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, |