/** * Release resources */ static void scmpc_cleanup(void) { g_source_remove(signal_source); if (prefs.cache_interval > 0) g_source_remove(cache_save_source); if (mpd.idle_source > 0) g_source_remove(mpd.idle_source); if (mpd.check_source > 0) g_source_remove(mpd.check_source); if (mpd.reconnect_source > 0) g_source_remove(mpd.reconnect_source); if (current_song_eligible_for_submission()) queue_add_current_song(); if (prefs.fork) scmpc_pid_remove(); close_signal_pipe(); if (prefs.cache_interval > 0) queue_save(NULL); queue_cleanup(); if (mpd.song_pos) g_timer_destroy(mpd.song_pos); clear_preferences(); as_cleanup(); if (mpd.conn != NULL) mpd_connection_free(mpd.conn); }
void playlist_state_save(FILE *fp, const struct playlist *playlist) { struct player_status player_status; pc_get_status(&player_status); fputs(PLAYLIST_STATE_FILE_STATE "\n", fp); if (playlist->playing) { switch (player_status.state) { case PLAYER_STATE_PAUSE: fputs(PLAYLIST_STATE_FILE_STATE_PAUSE "\n", fp); break; default: fputs(PLAYLIST_STATE_FILE_STATE_PLAY "\n", fp); } fprintf(fp, PLAYLIST_STATE_FILE_CURRENT "%i\n", queue_order_to_position(&playlist->queue, playlist->current)); fprintf(fp, PLAYLIST_STATE_FILE_TIME "%i\n", (int)player_status.elapsed_time); } else { fputs(PLAYLIST_STATE_FILE_STATE_STOP "\n", fp); if (playlist->current >= 0) fprintf(fp, PLAYLIST_STATE_FILE_CURRENT "%i\n", queue_order_to_position(&playlist->queue, playlist->current)); } fprintf(fp, PLAYLIST_STATE_FILE_RANDOM "%i\n", playlist->queue.random); fprintf(fp, PLAYLIST_STATE_FILE_REPEAT "%i\n", playlist->queue.repeat); fprintf(fp, PLAYLIST_STATE_FILE_SINGLE "%i\n", playlist->queue.single); fprintf(fp, PLAYLIST_STATE_FILE_CONSUME "%i\n", playlist->queue.consume); fprintf(fp, PLAYLIST_STATE_FILE_CROSSFADE "%i\n", (int)(pc_get_cross_fade())); fprintf(fp, PLAYLIST_STATE_FILE_MIXRAMPDB "%f\n", pc_get_mixramp_db()); fprintf(fp, PLAYLIST_STATE_FILE_MIXRAMPDELAY "%f\n", pc_get_mixramp_delay()); fputs(PLAYLIST_STATE_FILE_PLAYLIST_BEGIN "\n", fp); queue_save(fp, &playlist->queue); fputs(PLAYLIST_STATE_FILE_PLAYLIST_END "\n", fp); }