Loading jni/com_android_bluetooth_avrcp_target.cpp +12 −10 Original line number Original line Diff line number Diff line Loading @@ -62,6 +62,15 @@ static void volumeDeviceConnected( static void volumeDeviceDisconnected(const RawAddress& address); static void volumeDeviceDisconnected(const RawAddress& address); static void setVolume(int8_t volume); static void setVolume(int8_t volume); // Local Variables // TODO (apanicke): Use a map here to store the callback in order to // support multi-browsing SetBrowsedPlayerCb set_browsed_player_cb; using map_entry = std::pair<std::string, GetFolderItemsCb>; std::map<std::string, GetFolderItemsCb> get_folder_items_cb_map; std::map<RawAddress, ::bluetooth::avrcp::VolumeInterface::VolumeChangedCb> volumeCallbackMap; // TODO (apanicke): In the future, this interface should guarantee that // TODO (apanicke): In the future, this interface should guarantee that // all calls happen on the JNI Thread. Right now this is very difficult // all calls happen on the JNI Thread. Right now this is very difficult // as it is hard to get a handle on the JNI thread from here. // as it is hard to get a handle on the JNI thread from here. Loading Loading @@ -249,6 +258,9 @@ static void cleanupNative(JNIEnv* env, jobject object) { std::unique_lock<std::shared_timed_mutex> interface_lock(interface_mutex); std::unique_lock<std::shared_timed_mutex> interface_lock(interface_mutex); std::unique_lock<std::shared_timed_mutex> callbacks_lock(callbacks_mutex); std::unique_lock<std::shared_timed_mutex> callbacks_lock(callbacks_mutex); get_folder_items_cb_map.clear(); volumeCallbackMap.clear(); sServiceInterface->Cleanup(); sServiceInterface->Cleanup(); env->DeleteGlobalRef(mJavaInterface); env->DeleteGlobalRef(mJavaInterface); mJavaInterface = nullptr; mJavaInterface = nullptr; Loading Loading @@ -593,10 +605,6 @@ static std::vector<MediaPlayerInfo> getMediaPlayerList() { return ret_list; return ret_list; } } // TODO (apanicke): Use a map here to store the callback in order to // support multi-browsing SetBrowsedPlayerCb set_browsed_player_cb; static void setBrowsedPlayer(uint16_t player_id, SetBrowsedPlayerCb cb) { static void setBrowsedPlayer(uint16_t player_id, SetBrowsedPlayerCb cb) { ALOGD("%s", __func__); ALOGD("%s", __func__); std::shared_lock<std::shared_timed_mutex> lock(callbacks_mutex); std::shared_lock<std::shared_timed_mutex> lock(callbacks_mutex); Loading @@ -623,9 +631,6 @@ static void setBrowsedPlayerResponseNative(JNIEnv* env, jobject object, set_browsed_player_cb.Run(success == JNI_TRUE, root, num_items); set_browsed_player_cb.Run(success == JNI_TRUE, root, num_items); } } using map_entry = std::pair<std::string, GetFolderItemsCb>; std::map<std::string, GetFolderItemsCb> get_folder_items_cb_map; static void getFolderItemsResponseNative(JNIEnv* env, jobject object, static void getFolderItemsResponseNative(JNIEnv* env, jobject object, jstring parent_id, jobject list) { jstring parent_id, jobject list) { ALOGD("%s", __func__); ALOGD("%s", __func__); Loading Loading @@ -751,9 +756,6 @@ static void volumeDeviceConnected(const RawAddress& address) { j_bdaddr, JNI_FALSE); j_bdaddr, JNI_FALSE); } } std::map<RawAddress, ::bluetooth::avrcp::VolumeInterface::VolumeChangedCb> volumeCallbackMap; static void volumeDeviceConnected( static void volumeDeviceConnected( const RawAddress& address, const RawAddress& address, ::bluetooth::avrcp::VolumeInterface::VolumeChangedCb cb) { ::bluetooth::avrcp::VolumeInterface::VolumeChangedCb cb) { Loading Loading
jni/com_android_bluetooth_avrcp_target.cpp +12 −10 Original line number Original line Diff line number Diff line Loading @@ -62,6 +62,15 @@ static void volumeDeviceConnected( static void volumeDeviceDisconnected(const RawAddress& address); static void volumeDeviceDisconnected(const RawAddress& address); static void setVolume(int8_t volume); static void setVolume(int8_t volume); // Local Variables // TODO (apanicke): Use a map here to store the callback in order to // support multi-browsing SetBrowsedPlayerCb set_browsed_player_cb; using map_entry = std::pair<std::string, GetFolderItemsCb>; std::map<std::string, GetFolderItemsCb> get_folder_items_cb_map; std::map<RawAddress, ::bluetooth::avrcp::VolumeInterface::VolumeChangedCb> volumeCallbackMap; // TODO (apanicke): In the future, this interface should guarantee that // TODO (apanicke): In the future, this interface should guarantee that // all calls happen on the JNI Thread. Right now this is very difficult // all calls happen on the JNI Thread. Right now this is very difficult // as it is hard to get a handle on the JNI thread from here. // as it is hard to get a handle on the JNI thread from here. Loading Loading @@ -249,6 +258,9 @@ static void cleanupNative(JNIEnv* env, jobject object) { std::unique_lock<std::shared_timed_mutex> interface_lock(interface_mutex); std::unique_lock<std::shared_timed_mutex> interface_lock(interface_mutex); std::unique_lock<std::shared_timed_mutex> callbacks_lock(callbacks_mutex); std::unique_lock<std::shared_timed_mutex> callbacks_lock(callbacks_mutex); get_folder_items_cb_map.clear(); volumeCallbackMap.clear(); sServiceInterface->Cleanup(); sServiceInterface->Cleanup(); env->DeleteGlobalRef(mJavaInterface); env->DeleteGlobalRef(mJavaInterface); mJavaInterface = nullptr; mJavaInterface = nullptr; Loading Loading @@ -593,10 +605,6 @@ static std::vector<MediaPlayerInfo> getMediaPlayerList() { return ret_list; return ret_list; } } // TODO (apanicke): Use a map here to store the callback in order to // support multi-browsing SetBrowsedPlayerCb set_browsed_player_cb; static void setBrowsedPlayer(uint16_t player_id, SetBrowsedPlayerCb cb) { static void setBrowsedPlayer(uint16_t player_id, SetBrowsedPlayerCb cb) { ALOGD("%s", __func__); ALOGD("%s", __func__); std::shared_lock<std::shared_timed_mutex> lock(callbacks_mutex); std::shared_lock<std::shared_timed_mutex> lock(callbacks_mutex); Loading @@ -623,9 +631,6 @@ static void setBrowsedPlayerResponseNative(JNIEnv* env, jobject object, set_browsed_player_cb.Run(success == JNI_TRUE, root, num_items); set_browsed_player_cb.Run(success == JNI_TRUE, root, num_items); } } using map_entry = std::pair<std::string, GetFolderItemsCb>; std::map<std::string, GetFolderItemsCb> get_folder_items_cb_map; static void getFolderItemsResponseNative(JNIEnv* env, jobject object, static void getFolderItemsResponseNative(JNIEnv* env, jobject object, jstring parent_id, jobject list) { jstring parent_id, jobject list) { ALOGD("%s", __func__); ALOGD("%s", __func__); Loading Loading @@ -751,9 +756,6 @@ static void volumeDeviceConnected(const RawAddress& address) { j_bdaddr, JNI_FALSE); j_bdaddr, JNI_FALSE); } } std::map<RawAddress, ::bluetooth::avrcp::VolumeInterface::VolumeChangedCb> volumeCallbackMap; static void volumeDeviceConnected( static void volumeDeviceConnected( const RawAddress& address, const RawAddress& address, ::bluetooth::avrcp::VolumeInterface::VolumeChangedCb cb) { ::bluetooth::avrcp::VolumeInterface::VolumeChangedCb cb) { Loading