From 96882175f15230fe2cf9b4e7f3a7f29b5697fe26 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 8 Apr 2013 22:34:44 +0200 Subject: StateFile: move code to RememberVersions(), IsModified() --- src/StateFile.cxx | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) (limited to 'src/StateFile.cxx') diff --git a/src/StateFile.cxx b/src/StateFile.cxx index a15eb7220..301ae9abb 100644 --- a/src/StateFile.cxx +++ b/src/StateFile.cxx @@ -44,6 +44,24 @@ StateFile::StateFile(Path &&_path, const char *_path_utf8, ScheduleSeconds(5 * 60); } +void +StateFile::RememberVersions() +{ + prev_volume_version = sw_volume_state_get_hash(); + prev_output_version = audio_output_state_get_version(); + prev_playlist_version = playlist_state_get_hash(&partition.playlist, + &partition.pc); +} + +bool +StateFile::IsModified() const +{ + return prev_volume_version != sw_volume_state_get_hash() || + prev_output_version != audio_output_state_get_version() || + prev_playlist_version != playlist_state_get_hash(&partition.playlist, + &partition.pc); +} + void StateFile::Write() { @@ -62,10 +80,7 @@ StateFile::Write() fclose(fp); - prev_volume_version = sw_volume_state_get_hash(); - prev_output_version = audio_output_state_get_version(); - prev_playlist_version = playlist_state_get_hash(&partition.playlist, - &partition.pc); + RememberVersions(); } void @@ -92,19 +107,13 @@ StateFile::Read() g_warning("Unrecognized line in state file: %s", line); } - prev_volume_version = sw_volume_state_get_hash(); - prev_output_version = audio_output_state_get_version(); - prev_playlist_version = playlist_state_get_hash(&partition.playlist, - &partition.pc); + RememberVersions(); } inline void StateFile::AutoWrite() { - if (prev_volume_version == sw_volume_state_get_hash() && - prev_output_version == audio_output_state_get_version() && - prev_playlist_version == playlist_state_get_hash(&partition.playlist, - &partition.pc)) + if (!IsModified()) /* nothing has changed - don't save the state file, don't spin up the hard disk */ return; -- cgit v1.2.3