From dca111519627813608807b60b98f3d5133880120 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 8 Apr 2013 22:31:51 +0200 Subject: StateFile: schedule timer only after a change Save the state file 2 minutes after the last change. This reduces the disruptions by an idle MPD, and MPD can be paged out permanently until it is used. --- src/StateFile.cxx | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'src/StateFile.cxx') diff --git a/src/StateFile.cxx b/src/StateFile.cxx index 301ae9abb..ae782335d 100644 --- a/src/StateFile.cxx +++ b/src/StateFile.cxx @@ -41,7 +41,6 @@ StateFile::StateFile(Path &&_path, const char *_path_utf8, prev_volume_version(0), prev_output_version(0), prev_playlist_version(0) { - ScheduleSeconds(5 * 60); } void @@ -110,24 +109,16 @@ StateFile::Read() RememberVersions(); } -inline void -StateFile::AutoWrite() +void +StateFile::CheckModified() { - if (!IsModified()) - /* nothing has changed - don't save the state file, - don't spin up the hard disk */ - return; - - Write(); + if (!IsActive() && IsModified()) + ScheduleSeconds(2 * 60); } -/** - * This function is called every 5 minutes by the GLib main loop, and - * saves the state file. - */ bool StateFile::OnTimeout() { - AutoWrite(); - return true; + Write(); + return false; } -- cgit v1.2.3