Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf8aed35 authored by Pavlin Radoslavov's avatar Pavlin Radoslavov Committed by android-build-merger
Browse files

Merge "Don't use a pointer for the A2DP Sink static mutex"

am: 5a87b740

Change-Id: Ic7d2c17e565b2522754458844edfe865b278104f
parents ec082ef9 5a87b740
Loading
Loading
Loading
Loading
+17 −22
Original line number Diff line number Diff line
@@ -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;

@@ -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__);
@@ -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;
@@ -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;

@@ -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;
}

@@ -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;
@@ -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
@@ -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);
@@ -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
@@ -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;
@@ -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__);

@@ -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__,
@@ -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);

@@ -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;
@@ -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