Loading system/btif/src/btif_a2dp_sink.cc +17 −22 Original line number Diff line number Diff line Loading @@ -97,7 +97,7 @@ typedef struct { } tBTIF_A2DP_SINK_CB; // Mutex for below data structures. static std::mutex* g_mutex = nullptr; static std::mutex g_mutex; static tBTIF_A2DP_SINK_CB btif_a2dp_sink_cb; Loading Loading @@ -140,9 +140,7 @@ UNUSED_ATTR static const char* dump_media_event(uint16_t event) { } bool btif_a2dp_sink_startup(void) { if (!g_mutex) g_mutex = new std::mutex; LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if (btif_a2dp_sink_state != BTIF_A2DP_SINK_STATE_OFF) { APPL_TRACE_ERROR("%s: A2DP Sink media task already running", __func__); Loading Loading @@ -191,7 +189,7 @@ void btif_a2dp_sink_shutdown(void) { fixed_queue_t* cmd_msg_queue; thread_t* worker_thread; { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if ((btif_a2dp_sink_state == BTIF_A2DP_SINK_STATE_OFF) || (btif_a2dp_sink_state == BTIF_A2DP_SINK_STATE_SHUTTING_DOWN)) { return; Loading @@ -218,13 +216,10 @@ void btif_a2dp_sink_shutdown(void) { fixed_queue_free(cmd_msg_queue, NULL); thread_post(worker_thread, btif_a2dp_sink_shutdown_delayed, NULL); thread_free(worker_thread); delete g_mutex; g_mutex = nullptr; } static void btif_a2dp_sink_shutdown_delayed(UNUSED_ATTR void* context) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); fixed_queue_free(btif_a2dp_sink_cb.rx_audio_queue, NULL); btif_a2dp_sink_cb.rx_audio_queue = NULL; Loading @@ -232,12 +227,12 @@ static void btif_a2dp_sink_shutdown_delayed(UNUSED_ATTR void* context) { } tA2DP_SAMPLE_RATE btif_a2dp_sink_get_sample_rate(void) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); return btif_a2dp_sink_cb.sample_rate; } tA2DP_CHANNEL_COUNT btif_a2dp_sink_get_channel_count(void) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); return btif_a2dp_sink_cb.channel_count; } Loading Loading @@ -312,7 +307,7 @@ void btif_a2dp_sink_on_suspended(UNUSED_ATTR tBTA_AV_SUSPEND* p_av_suspend) { static void btif_a2dp_sink_audio_handle_stop_decoding(void) { alarm_t* old_alarm; { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); btif_a2dp_sink_cb.rx_flush = true; btif_a2dp_sink_audio_rx_flush_req(); old_alarm = btif_a2dp_sink_cb.decode_alarm; Loading @@ -326,7 +321,7 @@ static void btif_a2dp_sink_audio_handle_stop_decoding(void) { alarm_free(old_alarm); { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); #ifndef OS_GENERIC BtifAvrcpAudioTrackPause(btif_a2dp_sink_cb.audio_track); #endif Loading @@ -334,7 +329,7 @@ static void btif_a2dp_sink_audio_handle_stop_decoding(void) { } static void btif_decode_alarm_cb(UNUSED_ATTR void* context) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if (btif_a2dp_sink_cb.worker_thread != NULL) { thread_post(btif_a2dp_sink_cb.worker_thread, btif_a2dp_sink_avk_handle_timer, NULL); Loading @@ -342,7 +337,7 @@ static void btif_decode_alarm_cb(UNUSED_ATTR void* context) { } static void btif_a2dp_sink_clear_track_event(void) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); APPL_TRACE_DEBUG("%s", __func__); #ifndef OS_GENERIC Loading Loading @@ -415,7 +410,7 @@ static void btif_a2dp_sink_handle_inc_media(tBT_SBC_HDR* p_msg) { } static void btif_a2dp_sink_avk_handle_timer(UNUSED_ATTR void* context) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); tBT_SBC_HDR* p_msg; int num_sbc_frames; Loading Loading @@ -481,13 +476,13 @@ static void btif_a2dp_sink_avk_handle_timer(UNUSED_ATTR void* context) { /* when true media task discards any rx frames */ void btif_a2dp_sink_set_rx_flush(bool enable) { APPL_TRACE_EVENT("## DROP RX %d ##", enable); LockGuard lock(*g_mutex); LockGuard lock(g_mutex); btif_a2dp_sink_cb.rx_flush = enable; } static void btif_a2dp_sink_audio_rx_flush_event(void) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); /* Flush all received SBC buffers (encoded) */ APPL_TRACE_DEBUG("%s", __func__); Loading @@ -496,7 +491,7 @@ static void btif_a2dp_sink_audio_rx_flush_event(void) { static void btif_a2dp_sink_decoder_update_event( tBTIF_MEDIA_SINK_DECODER_UPDATE* p_buf) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); OI_STATUS status; APPL_TRACE_DEBUG("%s: p_codec_info[%x:%x:%x:%x:%x:%x]", __func__, Loading Loading @@ -555,7 +550,7 @@ static void btif_a2dp_sink_decoder_update_event( } uint8_t btif_a2dp_sink_enqueue_buf(BT_HDR* p_pkt) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if (btif_a2dp_sink_cb.rx_flush) /* Flush enabled, do not enqueue */ return fixed_queue_length(btif_a2dp_sink_cb.rx_audio_queue); Loading Loading @@ -618,7 +613,7 @@ void btif_a2dp_sink_set_focus_state_req(btif_a2dp_sink_focus_state_t state) { static void btif_a2dp_sink_set_focus_state_event( btif_a2dp_sink_focus_state_t state) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if (!btif_av_is_connected()) return; APPL_TRACE_DEBUG("%s: setting focus state to %d", __func__, state); btif_a2dp_sink_cb.rx_focus_state = state; Loading @@ -632,7 +627,7 @@ static void btif_a2dp_sink_set_focus_state_event( void btif_a2dp_sink_set_audio_track_gain(float gain) { APPL_TRACE_DEBUG("%s set gain to %f", __func__, gain); LockGuard lock(*g_mutex); LockGuard lock(g_mutex); #ifndef OS_GENERIC BtifAvrcpSetAudioTrackGain(btif_a2dp_sink_cb.audio_track, gain); #endif Loading Loading
system/btif/src/btif_a2dp_sink.cc +17 −22 Original line number Diff line number Diff line Loading @@ -97,7 +97,7 @@ typedef struct { } tBTIF_A2DP_SINK_CB; // Mutex for below data structures. static std::mutex* g_mutex = nullptr; static std::mutex g_mutex; static tBTIF_A2DP_SINK_CB btif_a2dp_sink_cb; Loading Loading @@ -140,9 +140,7 @@ UNUSED_ATTR static const char* dump_media_event(uint16_t event) { } bool btif_a2dp_sink_startup(void) { if (!g_mutex) g_mutex = new std::mutex; LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if (btif_a2dp_sink_state != BTIF_A2DP_SINK_STATE_OFF) { APPL_TRACE_ERROR("%s: A2DP Sink media task already running", __func__); Loading Loading @@ -191,7 +189,7 @@ void btif_a2dp_sink_shutdown(void) { fixed_queue_t* cmd_msg_queue; thread_t* worker_thread; { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if ((btif_a2dp_sink_state == BTIF_A2DP_SINK_STATE_OFF) || (btif_a2dp_sink_state == BTIF_A2DP_SINK_STATE_SHUTTING_DOWN)) { return; Loading @@ -218,13 +216,10 @@ void btif_a2dp_sink_shutdown(void) { fixed_queue_free(cmd_msg_queue, NULL); thread_post(worker_thread, btif_a2dp_sink_shutdown_delayed, NULL); thread_free(worker_thread); delete g_mutex; g_mutex = nullptr; } static void btif_a2dp_sink_shutdown_delayed(UNUSED_ATTR void* context) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); fixed_queue_free(btif_a2dp_sink_cb.rx_audio_queue, NULL); btif_a2dp_sink_cb.rx_audio_queue = NULL; Loading @@ -232,12 +227,12 @@ static void btif_a2dp_sink_shutdown_delayed(UNUSED_ATTR void* context) { } tA2DP_SAMPLE_RATE btif_a2dp_sink_get_sample_rate(void) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); return btif_a2dp_sink_cb.sample_rate; } tA2DP_CHANNEL_COUNT btif_a2dp_sink_get_channel_count(void) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); return btif_a2dp_sink_cb.channel_count; } Loading Loading @@ -312,7 +307,7 @@ void btif_a2dp_sink_on_suspended(UNUSED_ATTR tBTA_AV_SUSPEND* p_av_suspend) { static void btif_a2dp_sink_audio_handle_stop_decoding(void) { alarm_t* old_alarm; { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); btif_a2dp_sink_cb.rx_flush = true; btif_a2dp_sink_audio_rx_flush_req(); old_alarm = btif_a2dp_sink_cb.decode_alarm; Loading @@ -326,7 +321,7 @@ static void btif_a2dp_sink_audio_handle_stop_decoding(void) { alarm_free(old_alarm); { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); #ifndef OS_GENERIC BtifAvrcpAudioTrackPause(btif_a2dp_sink_cb.audio_track); #endif Loading @@ -334,7 +329,7 @@ static void btif_a2dp_sink_audio_handle_stop_decoding(void) { } static void btif_decode_alarm_cb(UNUSED_ATTR void* context) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if (btif_a2dp_sink_cb.worker_thread != NULL) { thread_post(btif_a2dp_sink_cb.worker_thread, btif_a2dp_sink_avk_handle_timer, NULL); Loading @@ -342,7 +337,7 @@ static void btif_decode_alarm_cb(UNUSED_ATTR void* context) { } static void btif_a2dp_sink_clear_track_event(void) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); APPL_TRACE_DEBUG("%s", __func__); #ifndef OS_GENERIC Loading Loading @@ -415,7 +410,7 @@ static void btif_a2dp_sink_handle_inc_media(tBT_SBC_HDR* p_msg) { } static void btif_a2dp_sink_avk_handle_timer(UNUSED_ATTR void* context) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); tBT_SBC_HDR* p_msg; int num_sbc_frames; Loading Loading @@ -481,13 +476,13 @@ static void btif_a2dp_sink_avk_handle_timer(UNUSED_ATTR void* context) { /* when true media task discards any rx frames */ void btif_a2dp_sink_set_rx_flush(bool enable) { APPL_TRACE_EVENT("## DROP RX %d ##", enable); LockGuard lock(*g_mutex); LockGuard lock(g_mutex); btif_a2dp_sink_cb.rx_flush = enable; } static void btif_a2dp_sink_audio_rx_flush_event(void) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); /* Flush all received SBC buffers (encoded) */ APPL_TRACE_DEBUG("%s", __func__); Loading @@ -496,7 +491,7 @@ static void btif_a2dp_sink_audio_rx_flush_event(void) { static void btif_a2dp_sink_decoder_update_event( tBTIF_MEDIA_SINK_DECODER_UPDATE* p_buf) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); OI_STATUS status; APPL_TRACE_DEBUG("%s: p_codec_info[%x:%x:%x:%x:%x:%x]", __func__, Loading Loading @@ -555,7 +550,7 @@ static void btif_a2dp_sink_decoder_update_event( } uint8_t btif_a2dp_sink_enqueue_buf(BT_HDR* p_pkt) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if (btif_a2dp_sink_cb.rx_flush) /* Flush enabled, do not enqueue */ return fixed_queue_length(btif_a2dp_sink_cb.rx_audio_queue); Loading Loading @@ -618,7 +613,7 @@ void btif_a2dp_sink_set_focus_state_req(btif_a2dp_sink_focus_state_t state) { static void btif_a2dp_sink_set_focus_state_event( btif_a2dp_sink_focus_state_t state) { LockGuard lock(*g_mutex); LockGuard lock(g_mutex); if (!btif_av_is_connected()) return; APPL_TRACE_DEBUG("%s: setting focus state to %d", __func__, state); btif_a2dp_sink_cb.rx_focus_state = state; Loading @@ -632,7 +627,7 @@ static void btif_a2dp_sink_set_focus_state_event( void btif_a2dp_sink_set_audio_track_gain(float gain) { APPL_TRACE_DEBUG("%s set gain to %f", __func__, gain); LockGuard lock(*g_mutex); LockGuard lock(g_mutex); #ifndef OS_GENERIC BtifAvrcpSetAudioTrackGain(btif_a2dp_sink_cb.audio_track, gain); #endif Loading