From a5001312cd04bd9ddec3287304adb2fa917c82bd Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Thu, 29 Oct 2015 18:53:29 +1100 Subject: [PATCH] ghostpad: Allow deactivation with no peer. Allow deactivation in pull-mode, since that implies we had a peer, activated in pull mode, then the peer disa-peer-ed ;) --- gst/gstghostpad.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gst/gstghostpad.c b/gst/gstghostpad.c index 22644fc..96703ed 100644 --- a/gst/gstghostpad.c +++ b/gst/gstghostpad.c @@ -318,10 +318,13 @@ gst_ghost_pad_internal_activate_pull_default (GstPad * pad, GstObject * parent, GST_LOG_OBJECT (pad, "activating peer"); ret = gst_pad_activate_mode (other, GST_PAD_MODE_PULL, active); gst_object_unref (other); - } else { + } else if (active) { /* this is failure, we can't activate pull if there is no peer */ GST_LOG_OBJECT (pad, "not src and no peer, failing"); ret = FALSE; + } else { + GST_LOG_OBJECT (pad, "deactivating pull, with no peer - allowing"); + ret = TRUE; } return ret; @@ -406,10 +409,13 @@ gst_ghost_pad_activate_pull_default (GstPad * pad, GstObject * parent, GST_LOG_OBJECT (pad, "activating peer"); ret = gst_pad_activate_mode (other, GST_PAD_MODE_PULL, active); gst_object_unref (other); - } else { - /* no peer, we fail */ - GST_LOG_OBJECT (pad, "pad not src and no peer, failing"); + } else if (active) { + /* this is failure, we can't activate pull if there is no peer */ + GST_LOG_OBJECT (pad, "not src and no peer, failing"); ret = FALSE; + } else { + GST_LOG_OBJECT (pad, "deactivating pull, with no peer - allowing"); + ret = TRUE; } return ret; -- 2.7.4