From bb92d582bf78816c7249c9cbbe8210a689912fb9 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Sun, 16 Mar 2014 16:23:11 -0700 Subject: [PATCH] Add atomic increment/decrement platform funcs --- libobs/util/platform-nix.c | 10 ++++++++++ libobs/util/platform-windows.c | 11 ++++++++++- libobs/util/platform.h | 3 +++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/libobs/util/platform-nix.c b/libobs/util/platform-nix.c index 30586699d..21d7dd5cf 100644 --- a/libobs/util/platform-nix.c +++ b/libobs/util/platform-nix.c @@ -116,3 +116,13 @@ int os_mkdir(const char *path) return (errno == EEXIST) ? MKDIR_EXISTS : MKDIR_ERROR; } + +long atomic_inc_long(volatile long *val) +{ + return __sync_fetch_and_add(val, 1); +} + +long atomic_dec_long(volatile long *val) +{ + return __sync_fetch_and_sub(val, 1); +} diff --git a/libobs/util/platform-windows.c b/libobs/util/platform-windows.c index d651f72c8..3b30c4f4a 100644 --- a/libobs/util/platform-windows.c +++ b/libobs/util/platform-windows.c @@ -185,6 +185,16 @@ int os_mkdir(const char *path) return MKDIR_SUCCESS; } +long atomic_inc_long(volatile long *val) +{ + return InterlockedIncrement(val); +} + +long atomic_dec_long(volatile long *val) +{ + return InterlockedDecrement(val); +} + BOOL WINAPI DllMain(HINSTANCE hinst_dll, DWORD reason, LPVOID reserved) { @@ -219,4 +229,3 @@ BOOL WINAPI DllMain(HINSTANCE hinst_dll, DWORD reason, LPVOID reserved) return true; } - diff --git a/libobs/util/platform.h b/libobs/util/platform.h index 846acb71e..48b36218e 100644 --- a/libobs/util/platform.h +++ b/libobs/util/platform.h @@ -76,6 +76,9 @@ EXPORT char *os_get_config_path(const char *name); EXPORT bool os_file_exists(const char *path); +EXPORT long atomic_inc_long(volatile long *val); +EXPORT long atomic_dec_long(volatile long *val); + #define MKDIR_EXISTS 1 #define MKDIR_SUCCESS 0 #define MKDIR_ERROR -1