#include "osi/include/alarm.h"
#include "osi/include/allocator.h"
#include "btcore/include/bdaddr.h"
+#include "btif_common.h"
#include "btif_config.h"
#include "btif_config_transcode.h"
#include "btif_util.h"
static const period_ms_t CONFIG_SETTLE_PERIOD_MS = 3000;
static void timer_config_save_cb(void *data);
-static void btif_config_write(void);
+static void btif_config_write(UINT16 event, char *p_param);
static void btif_config_devcache_cleanup(void);
// TODO(zachoverflow): Move these two functions out, because they are too specific for this file
assert(alarm_timer != NULL);
alarm_cancel(alarm_timer);
+ btif_config_write(0, NULL);
- btif_config_write();
+ pthread_mutex_lock(&lock);
+ config_save(config, CONFIG_FILE_PATH);
+ pthread_mutex_unlock(&lock);
}
int btif_config_clear(void){
}
static void timer_config_save_cb(UNUSED_ATTR void *data) {
- btif_config_write();
+ // Moving file I/O to btif context instead of timer callback because
+ // it usually takes a lot of time to be completed, introducing
+ // delays during A2DP playback causing blips or choppiness.
+ btif_transfer_context(btif_config_write, 0, NULL, 0, NULL);
}
-static void btif_config_write(void) {
+static void btif_config_write(UNUSED_ATTR UINT16 event, UNUSED_ATTR char *p_param) {
assert(config != NULL);
assert(alarm_timer != NULL);