diff options
-rwxr-xr-x[-rw-r--r--] | Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | Xcode/SDL/SDL.xcodeproj/project.pbxproj | 0 | ||||
-rw-r--r-- | src/hidapi/android/hid.cpp | 27 |
3 files changed, 23 insertions, 4 deletions
diff --git a/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj b/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj index f319c3b8c0..f319c3b8c0 100644..100755 --- a/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj +++ b/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj diff --git a/Xcode/SDL/SDL.xcodeproj/project.pbxproj b/Xcode/SDL/SDL.xcodeproj/project.pbxproj index 67ac2b0181..67ac2b0181 100644..100755 --- a/Xcode/SDL/SDL.xcodeproj/project.pbxproj +++ b/Xcode/SDL/SDL.xcodeproj/project.pbxproj diff --git a/src/hidapi/android/hid.cpp b/src/hidapi/android/hid.cpp index 37b159b12a..c9150d1e46 100644 --- a/src/hidapi/android/hid.cpp +++ b/src/hidapi/android/hid.cpp @@ -9,6 +9,7 @@ #include <jni.h> #include <android/log.h> #include <pthread.h> +#include <stdlib.h> #include <errno.h> // For ETIMEDOUT and ECONNRESET #include <stdlib.h> // For malloc() and free() @@ -27,6 +28,7 @@ #define HID_DEVICE_MANAGER_JAVA_INTERFACE(function) CONCAT1(SDL_JAVA_PREFIX, HIDDeviceManager, function) #include "../hidapi/hidapi.h" + typedef uint32_t uint32; typedef uint64_t uint64; @@ -364,12 +366,20 @@ public: int IncrementRefCount() { - return ++m_nRefCount; + int nValue; + pthread_mutex_lock( &m_refCountLock ); + nValue = ++m_nRefCount; + pthread_mutex_unlock( &m_refCountLock ); + return nValue; } int DecrementRefCount() { - return --m_nRefCount; + int nValue; + pthread_mutex_lock( &m_refCountLock ); + nValue = --m_nRefCount; + pthread_mutex_unlock( &m_refCountLock ); + return nValue; } int GetId() @@ -394,12 +404,20 @@ public: int IncrementDeviceRefCount() { - return ++m_nDeviceRefCount; + int nValue; + pthread_mutex_lock( &m_refCountLock ); + nValue = ++m_nDeviceRefCount; + pthread_mutex_unlock( &m_refCountLock ); + return nValue; } int DecrementDeviceRefCount() { - return --m_nDeviceRefCount; + int nValue; + pthread_mutex_lock( &m_refCountLock ); + nValue = --m_nDeviceRefCount; + pthread_mutex_unlock( &m_refCountLock ); + return nValue; } bool BOpen() @@ -644,6 +662,7 @@ public: } private: + pthread_mutex_t m_refCountLock = PTHREAD_MUTEX_INITIALIZER; int m_nRefCount = 0; int m_nId = 0; hid_device_info *m_pInfo = nullptr; |