void session_seek(guint pos) { sp_session_player_seek(g_session, pos); g_audio_time = pos; g_audio_samples = 0; cb_notify_main_thread(NULL); }
void session_play(gboolean play) { sp_session_player_play(g_session, play); if (!play) /* Force pause in the audio plugin */ g_audio_delivery_func(NULL, NULL, 0); cb_notify_main_thread(NULL); }
void session_unload() { session_callback_data scbd; g_debug("Unloading track."); /* First call callbacks */ scbd.type = SPOP_SESSION_UNLOAD; scbd.data = NULL; g_list_foreach(g_session_callbacks, session_call_callback, &scbd); /* Then really unload */ sp_session_player_play(g_session, FALSE); g_audio_delivery_func(NULL, NULL, 0); sp_session_player_unload(g_session); cb_notify_main_thread(NULL); g_audio_samples = 0; g_audio_time = 0; }
/********************** * Session management * **********************/ void session_load(sp_track* track) { sp_error error; session_callback_data scbd; g_debug("Loading track."); error = sp_session_player_load(g_session, track); if (error != SP_ERROR_OK) g_error("Failed to load track: %s", sp_error_message(error)); /* Queue some events management */ cb_notify_main_thread(NULL); /* Then call callbacks */ scbd.type = SPOP_SESSION_LOAD; scbd.data = track; g_list_foreach(g_session_callbacks, session_call_callback, &scbd); }