Loading android/app/jni/com_android_bluetooth_hid_host.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ #include "utils/Log.h" #include <string.h> #include <shared_mutex> namespace android { static jmethodID method_onConnectStateChanged; Loading @@ -36,6 +36,7 @@ static jmethodID method_onGetIdleTime; static const bthh_interface_t* sBluetoothHidInterface = NULL; static jobject mCallbacksObj = NULL; static std::shared_timed_mutex mCallbacks_mutex; static jbyteArray marshall_bda(RawAddress* bd_addr) { CallbackEnv sCallbackEnv(__func__); Loading @@ -53,6 +54,7 @@ static jbyteArray marshall_bda(RawAddress* bd_addr) { static void connection_state_callback(RawAddress* bd_addr, bthh_connection_state_t state) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading @@ -72,6 +74,7 @@ static void connection_state_callback(RawAddress* bd_addr, static void get_protocol_mode_callback(RawAddress* bd_addr, bthh_status_t hh_status, bthh_protocol_mode_t mode) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading @@ -95,6 +98,7 @@ static void get_protocol_mode_callback(RawAddress* bd_addr, static void get_report_callback(RawAddress* bd_addr, bthh_status_t hh_status, uint8_t* rpt_data, int rpt_size) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading Loading @@ -126,6 +130,7 @@ static void get_report_callback(RawAddress* bd_addr, bthh_status_t hh_status, static void virtual_unplug_callback(RawAddress* bd_addr, bthh_status_t hh_status) { ALOGV("call to virtual_unplug_callback"); std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading @@ -142,6 +147,7 @@ static void virtual_unplug_callback(RawAddress* bd_addr, } static void handshake_callback(RawAddress* bd_addr, bthh_status_t hh_status) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading @@ -160,6 +166,7 @@ static void handshake_callback(RawAddress* bd_addr, bthh_status_t hh_status) { static void get_idle_time_callback(RawAddress* bd_addr, bthh_status_t hh_status, int idle_time) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; Loading Loading @@ -198,6 +205,7 @@ static void classInitNative(JNIEnv* env, jclass clazz) { } static void initializeNative(JNIEnv* env, jobject object) { std::unique_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); const bt_interface_t* btInf = getBluetoothInterface(); if (btInf == NULL) { ALOGE("Bluetooth module is not loaded"); Loading Loading @@ -234,6 +242,7 @@ static void initializeNative(JNIEnv* env, jobject object) { } static void cleanupNative(JNIEnv* env, jobject object) { std::unique_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); const bt_interface_t* btInf = getBluetoothInterface(); if (btInf == NULL) { Loading Loading
android/app/jni/com_android_bluetooth_hid_host.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ #include "utils/Log.h" #include <string.h> #include <shared_mutex> namespace android { static jmethodID method_onConnectStateChanged; Loading @@ -36,6 +36,7 @@ static jmethodID method_onGetIdleTime; static const bthh_interface_t* sBluetoothHidInterface = NULL; static jobject mCallbacksObj = NULL; static std::shared_timed_mutex mCallbacks_mutex; static jbyteArray marshall_bda(RawAddress* bd_addr) { CallbackEnv sCallbackEnv(__func__); Loading @@ -53,6 +54,7 @@ static jbyteArray marshall_bda(RawAddress* bd_addr) { static void connection_state_callback(RawAddress* bd_addr, bthh_connection_state_t state) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading @@ -72,6 +74,7 @@ static void connection_state_callback(RawAddress* bd_addr, static void get_protocol_mode_callback(RawAddress* bd_addr, bthh_status_t hh_status, bthh_protocol_mode_t mode) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading @@ -95,6 +98,7 @@ static void get_protocol_mode_callback(RawAddress* bd_addr, static void get_report_callback(RawAddress* bd_addr, bthh_status_t hh_status, uint8_t* rpt_data, int rpt_size) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading Loading @@ -126,6 +130,7 @@ static void get_report_callback(RawAddress* bd_addr, bthh_status_t hh_status, static void virtual_unplug_callback(RawAddress* bd_addr, bthh_status_t hh_status) { ALOGV("call to virtual_unplug_callback"); std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading @@ -142,6 +147,7 @@ static void virtual_unplug_callback(RawAddress* bd_addr, } static void handshake_callback(RawAddress* bd_addr, bthh_status_t hh_status) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; if (!mCallbacksObj) { Loading @@ -160,6 +166,7 @@ static void handshake_callback(RawAddress* bd_addr, bthh_status_t hh_status) { static void get_idle_time_callback(RawAddress* bd_addr, bthh_status_t hh_status, int idle_time) { std::shared_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); CallbackEnv sCallbackEnv(__func__); if (!sCallbackEnv.valid()) return; Loading Loading @@ -198,6 +205,7 @@ static void classInitNative(JNIEnv* env, jclass clazz) { } static void initializeNative(JNIEnv* env, jobject object) { std::unique_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); const bt_interface_t* btInf = getBluetoothInterface(); if (btInf == NULL) { ALOGE("Bluetooth module is not loaded"); Loading Loading @@ -234,6 +242,7 @@ static void initializeNative(JNIEnv* env, jobject object) { } static void cleanupNative(JNIEnv* env, jobject object) { std::unique_lock<std::shared_timed_mutex> lock(mCallbacks_mutex); const bt_interface_t* btInf = getBluetoothInterface(); if (btInf == NULL) { Loading