The ghostpad code directly activates/deactivates the child code by
calling gst_pad_activate_mode, rather than gst_pad_set_active, so
make sure to clear the flags in gst_pad_activate_mode(), which should
catch all cases.
if (G_UNLIKELY (!ret))
goto failed;
- if (!active) {
- GST_OBJECT_LOCK (pad);
- GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_NEED_RECONFIGURE);
- GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_EOS);
- GST_OBJECT_UNLOCK (pad);
- }
return ret;
/* ERRORS */
exit_success:
res = TRUE;
+
+ /* Clear sticky flags on deactivation */
+ if (!active) {
+ GST_OBJECT_LOCK (pad);
+ GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_NEED_RECONFIGURE);
+ GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_EOS);
+ GST_OBJECT_UNLOCK (pad);
+ }
+
exit:
RELEASE_PARENT (parent);