소스 검색

deps-libff: Add atomic long inc/dec functions

kc5nra 10 년 전
부모
커밋
164cbeeede
4개의 변경된 파일87개의 추가작업 그리고 0개의 파일을 삭제
  1. 9 0
      deps/libff/CMakeLists.txt
  2. 27 0
      deps/libff/libff/ff-threading-posix.c
  3. 31 0
      deps/libff/libff/ff-threading-windows.c
  4. 20 0
      deps/libff/libff/ff-threading.h

+ 9 - 0
deps/libff/CMakeLists.txt

@@ -17,6 +17,7 @@ set(libff_HEADERS
 	libff/ff-clock.h
 	libff/ff-frame.h
 	libff/ff-packet-queue.h
+	libff/ff-threading.h
 	libff/ff-timer.h
 	#
 	libff/ff-demuxer.h
@@ -36,6 +37,14 @@ set(libff_SOURCES
 	libff/ff-audio-decoder.c
 	libff/ff-video-decoder.c)
 
+if (WIN32)
+	list(APPEND libff_SOURCES
+		libff/ff-threading-windows.c)
+else(WIN32)
+	list(APPEND libff_SOURCES
+		libff/ff-threading-posix.c)
+endif(WIN32)
+
 add_library (libff STATIC
 	${libff_HEADERS}
 	${libff_SOURCES})

+ 27 - 0
deps/libff/libff/ff-threading-posix.c

@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2014 Hugh Bailey <[email protected]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "ff-threading.h"
+
+long ff_atomic_inc_long(volatile long *val)
+{
+	return __sync_add_and_fetch(val, 1);
+}
+
+long ff_atomic_dec_long(volatile long *val)
+{
+	return __sync_sub_and_fetch(val, 1);
+}

+ 31 - 0
deps/libff/libff/ff-threading-windows.c

@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2014 Hugh Bailey <[email protected]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include "ff-threading.h"
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+long ff_atomic_inc_long(volatile long *val)
+{
+	return InterlockedIncrement(val);
+}
+
+long ff_atomic_dec_long(volatile long *val)
+{
+	return InterlockedDecrement(val);
+}

+ 20 - 0
deps/libff/libff/ff-threading.h

@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2015 John R. Bradley <[email protected]>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#pragma once
+
+long ff_atomic_inc_long(volatile long *val);
+long ff_atomic_dec_long(volatile long *val);