avfilter/avfilter: Make avfilter_register() thread safe

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2013-06-28 12:39:26 +02:00
parent 16310e36d9
commit 2236456715
1 changed files with 4 additions and 3 deletions

View File

@ -19,6 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "libavutil/atomic.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
@ -465,11 +466,11 @@ int avfilter_register(AVFilter *filter)
|| (!input->start_frame && !input->end_frame));
}
while (*f)
f = &(*f)->next;
*f = filter;
filter->next = NULL;
while(avpriv_atomic_ptr_cas((void * volatile *)f, NULL, filter))
f = &(*f)->next;
return 0;
}