pad: gst_pad_activate_mode() always succeed if same mode
authorStian Selnes <stian@pexip.com>
Fri, 18 Aug 2017 12:30:32 +0000 (14:30 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 24 Nov 2017 12:40:31 +0000 (13:40 +0100)
commit512cec3deace3e50b3be7a24a29d9e6940675c18
tree2c94c023ca399c4e637d71d0bd2f58280c17cfe8
parentdf27ec3e67a929b3d57ee791e5a8574812a498d9
pad: gst_pad_activate_mode() always succeed if same mode

Checking that the pad is in the correct mode before the parent is
checked makes the call always succeed if the mode is ok.

This fixes a race with ghostpad where gst_pad_activate_mode() could
trigger a g_critical() if the ghostpad is unparented while the
proxypad is deactivating, for instance if the ghostpad is released.
More specifically, gst_ghost_pad_internal_activate_push_default()'s
call to gst_pad_activate_mode() would fail if ghostpad doesn't have a
parent. With this patch it will return true of mode is already
correct.
gst/gstpad.c
tests/check/gst/gstghostpad.c