static int music_list_refresh(void) { music_lock(); g_list.curr_pos = 0; if (music_maxindex() > 0) { if (g_list.is_list_playing) { if (music_play(g_list.curr_pos) < 0) { g_list.is_list_playing = false; } } else { // only load information if (music_load(g_list.curr_pos) >= 0) { musicdrv_end(); } } } else { musicdrv_end(); set_musicdrv(NULL); } g_list.first_time = true; g_shuffle.first_time = true; music_unlock(); return 0; }
int music_stop(void) { int ret; ret = musicdrv_get_status(); if (ret < 0) return ret; if (ret == ST_PLAYING || ret == ST_PAUSED || ret == ST_LOADED || ret == ST_STOPPED || ret == ST_FFORWARD || ret == ST_FBACKWARD) { ret = musicdrv_end(); } else ret = 0; return ret; }
int music_suspend(void) { int ret; dbg_printf(d, "%s", __func__); music_lock(); ret = musicdrv_suspend(); if (ret < 0) { dbg_printf(d, "%s: Suspend failed!", __func__); musicdrv_end(); music_unlock(); return ret; } prev_is_playing = g_list.is_list_playing; g_list.is_list_playing = 0; // now music module is locked return 0; }