aboutsummaryrefslogtreecommitdiffstats
path: root/src/output_all.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-02-28 20:43:23 +0100
committerMax Kellermann <max@duempel.org>2009-02-28 20:43:23 +0100
commitec4fd9fd88a10bfc88154e8e6791d5d69858a2e5 (patch)
treec98fe447adcafe85ba9ee94d93d98377f9ffdaeb /src/output_all.c
parenta5c09c91c414ba08d915331797e717334ac06456 (diff)
downloadmpd-ec4fd9fd88a10bfc88154e8e6791d5d69858a2e5.tar.gz
mpd-ec4fd9fd88a10bfc88154e8e6791d5d69858a2e5.tar.xz
mpd-ec4fd9fd88a10bfc88154e8e6791d5d69858a2e5.zip
output: use GTimer instead of time_t for reopen after failure
time() is not a monotonic timer, and MPD might get confused by clock skews. clock_gettime() provides a monotonic clock, but is not portable to non-POSIX systems (i.e. Windows). This patch uses GLib's GTimer API, which aims to be portable.
Diffstat (limited to '')
-rw-r--r--src/output_all.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/output_all.c b/src/output_all.c
index c90a875dd..953a11bd5 100644
--- a/src/output_all.c
+++ b/src/output_all.c
@@ -162,8 +162,14 @@ static void audio_output_wait_all(void)
static void
audio_output_all_reset_reopen(void)
{
- for (unsigned i = 0; i < num_audio_outputs; ++i)
- audio_outputs[i].reopen_after = 0;
+ for (unsigned i = 0; i < num_audio_outputs; ++i) {
+ struct audio_output *ao = &audio_outputs[i];
+
+ if (!ao->open && ao->fail_timer != NULL) {
+ g_timer_destroy(ao->fail_timer);
+ ao->fail_timer = NULL;
+ }
+ }
}
static void