aboutsummaryrefslogtreecommitdiffstats
path: root/src/output
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-10-08 15:22:39 +0200
committerMax Kellermann <max@duempel.org>2009-10-08 15:22:39 +0200
commitecb118f1edab572a904890eddafd3b11c0a79a79 (patch)
tree4e273cd64778fcff80250b3b33ffb050a257c981 /src/output
parent1e663b186998ffdeef9b3b9775558e9378bad342 (diff)
downloadmpd-ecb118f1edab572a904890eddafd3b11c0a79a79.tar.gz
mpd-ecb118f1edab572a904890eddafd3b11c0a79a79.tar.xz
mpd-ecb118f1edab572a904890eddafd3b11c0a79a79.zip
state_file: save only if something has changed
If nothing has changed since the last save, don't save the state file. Saving will spin up the hard drive, which is undesirable on hosts where MPD is idling in background.
Diffstat (limited to '')
-rw-r--r--src/output_command.c6
-rw-r--r--src/output_state.c8
-rw-r--r--src/output_state.h8
3 files changed, 22 insertions, 0 deletions
diff --git a/src/output_command.c b/src/output_command.c
index 5da176dde..9d948c8cc 100644
--- a/src/output_command.c
+++ b/src/output_command.c
@@ -31,6 +31,8 @@
#include "mixer_control.h"
#include "idle.h"
+extern unsigned audio_output_state_version;
+
bool
audio_output_enable_index(unsigned idx)
{
@@ -44,6 +46,8 @@ audio_output_enable_index(unsigned idx)
ao->enabled = true;
idle_add(IDLE_OUTPUT);
+ ++audio_output_state_version;
+
return true;
}
@@ -67,5 +71,7 @@ audio_output_disable_index(unsigned idx)
idle_add(IDLE_MIXER);
}
+ ++audio_output_state_version;
+
return true;
}
diff --git a/src/output_state.c b/src/output_state.c
index 7fc60518c..be135f6d0 100644
--- a/src/output_state.c
+++ b/src/output_state.c
@@ -34,6 +34,8 @@
#define AUDIO_DEVICE_STATE "audio_device_state:"
+unsigned audio_output_state_version;
+
void
audio_output_state_save(FILE *fp)
{
@@ -80,3 +82,9 @@ audio_output_state_read(const char *line)
ao->enabled = false;
return true;
}
+
+unsigned
+audio_output_state_get_version(void)
+{
+ return audio_output_state_version;
+}
diff --git a/src/output_state.h b/src/output_state.h
index 1efae94a1..3b865f5fe 100644
--- a/src/output_state.h
+++ b/src/output_state.h
@@ -34,4 +34,12 @@ audio_output_state_read(const char *line);
void
audio_output_state_save(FILE *fp);
+/**
+ * Generates a version number for the current state of the audio
+ * outputs. This is used by timer_save_state_file() to determine
+ * whether the state has changed and the state file should be saved.
+ */
+unsigned
+audio_output_state_get_version(void);
+
#endif