basesrc: avoid potential deadlock
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 16 May 2012 07:16:26 +0000 (09:16 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 16 May 2012 07:24:45 +0000 (09:24 +0200)
commitd6e909994c9316c69187a1e9729f45eeace62137
tree6a18e003f1a080796409892460095152bb14e47f
parenta49b9a99465c2272c58b99a3c0f90f6dfa5a974c
basesrc: avoid potential deadlock

In gst_base_src_start_complete() we do a perform_seek() that will eventually
start the streaming thread which acquires the live lock and then goes to sleep
in the case of appsrc. Right after we perform seek we also try to acquire the
live lock which might then deadlock.

fix this by taking the stream lock before performing the seek. This makes sure
that the streaming thread cannot start and grab the live lock until we are done
and release the stream lock again.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=676048
libs/gst/base/gstbasesrc.c