Commit 96882175 authored by Max Kellermann's avatar Max Kellermann

StateFile: move code to RememberVersions(), IsModified()

parent 484841fc
...@@ -45,6 +45,24 @@ StateFile::StateFile(Path &&_path, const char *_path_utf8, ...@@ -45,6 +45,24 @@ StateFile::StateFile(Path &&_path, const char *_path_utf8,
} }
void 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() StateFile::Write()
{ {
g_debug("Saving state file %s", path_utf8.c_str()); g_debug("Saving state file %s", path_utf8.c_str());
...@@ -62,10 +80,7 @@ StateFile::Write() ...@@ -62,10 +80,7 @@ StateFile::Write()
fclose(fp); fclose(fp);
prev_volume_version = sw_volume_state_get_hash(); RememberVersions();
prev_output_version = audio_output_state_get_version();
prev_playlist_version = playlist_state_get_hash(&partition.playlist,
&partition.pc);
} }
void void
...@@ -92,19 +107,13 @@ StateFile::Read() ...@@ -92,19 +107,13 @@ StateFile::Read()
g_warning("Unrecognized line in state file: %s", line); g_warning("Unrecognized line in state file: %s", line);
} }
prev_volume_version = sw_volume_state_get_hash(); RememberVersions();
prev_output_version = audio_output_state_get_version();
prev_playlist_version = playlist_state_get_hash(&partition.playlist,
&partition.pc);
} }
inline void inline void
StateFile::AutoWrite() StateFile::AutoWrite()
{ {
if (prev_volume_version == sw_volume_state_get_hash() && if (!IsModified())
prev_output_version == audio_output_state_get_version() &&
prev_playlist_version == playlist_state_get_hash(&partition.playlist,
&partition.pc))
/* nothing has changed - don't save the state file, /* nothing has changed - don't save the state file,
don't spin up the hard disk */ don't spin up the hard disk */
return; return;
......
...@@ -49,6 +49,18 @@ public: ...@@ -49,6 +49,18 @@ public:
void Write(); void Write();
private: private:
/**
* Save the current state versions for use with IsModified().
*/
void RememberVersions();
/**
* Check if MPD's state was modified since the last
* RememberVersions() call.
*/
gcc_pure
bool IsModified() const;
void AutoWrite(); void AutoWrite();
/* virtual methods from TimeoutMonitor */ /* virtual methods from TimeoutMonitor */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment