summaryrefslogtreecommitdiff
path: root/libavutil/thread.h
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2014-11-23 21:25:05 +0100
committerAnton Khirnov <anton@khirnov.net>2014-11-27 13:36:00 +0100
commit2443e522f0059176ff8717c9c753eb6fe7e7bbf1 (patch)
tree11ed81b67b15f1174fb360dc9435bb4e669e0f22 /libavutil/thread.h
parent675ac56b7ee0f204963fde55295197c5df80aa91 (diff)
lavu: add wrappers for the pthreads mutex API
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 <nfxjfg@googlemail.com>.
Diffstat (limited to 'libavutil/thread.h')
-rw-r--r--libavutil/thread.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/libavutil/thread.h b/libavutil/thread.h
new file mode 100644
index 0000000000..07e3d4ac45
--- /dev/null
+++ b/libavutil/thread.h
@@ -0,0 +1,53 @@
+/*
+ * 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
+ */
+
+// This header should only be used to simplify code where
+// threading is optional, not as a generic threading abstraction.
+
+#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 */