On Sun, 23 Nov 2014 21:31:33 +0100
Anton Khirnov <[email protected]> wrote:

> Also add no-op fallbacks when threading is disabled.
> 
> This helps keeping the code clean if Libav is compiled for targets
> without threading. Since we assume that no threads of any kind are used
> in such configurations, doing nothing is ok by definition.
> 
> Based on a patch by wm4 <[email protected]>.
> ---
>  libavutil/thread.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
>  create mode 100644 libavutil/thread.h
> 
> diff --git a/libavutil/thread.h b/libavutil/thread.h
> new file mode 100644
> index 0000000..f025d1d
> --- /dev/null
> +++ b/libavutil/thread.h
> @@ -0,0 +1,50 @@
> +/*
> + * This file is part of Libav.
> + *
> + * Libav is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * Libav is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with Libav; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 
> USA
> + */
> +
> +#ifndef AVUTIL_THREAD_H
> +#define AVUTIL_THREAD_H
> +
> +#include "config.h"
> +
> +#if HAVE_PTHREADS || HAVE_W32THREADS
> +
> +#if HAVE_PTHREADS
> +#include <pthread.h>
> +#else
> +#include <compat/w32pthreads.h>
> +#endif
> +
> +#define AVMutex pthread_mutex_t
> +
> +#define ff_mutex_init    pthread_mutex_init
> +#define ff_mutex_lock    pthread_mutex_lock
> +#define ff_mutex_unlock  pthread_mutex_unlock
> +#define ff_mutex_destroy pthread_mutex_destroy
> +
> +#else
> +
> +#define AVMutex char
> +
> +#define ff_mutex_init(mutex, attr) (0)
> +#define ff_mutex_lock(mutex) (0)
> +#define ff_mutex_unlock(mutex) (0)
> +#define ff_mutex_destroy(mutex) (0)
> +
> +#endif
> +
> +#endif /* AVUTIL_THREAD_H */

Maybe add a comment discouraging the use of the ff_mutex_* symbols
unless threads are actually optional. There could be some danger of
future developers extending this to a full threading abstraction API,
instead of using pthreads properly. (Or am I overthinking things again?)
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to