diff options
author | Max Kellermann <max@duempel.org> | 2009-02-28 20:43:23 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-02-28 20:43:23 +0100 |
commit | ec4fd9fd88a10bfc88154e8e6791d5d69858a2e5 (patch) | |
tree | c98fe447adcafe85ba9ee94d93d98377f9ffdaeb /src/output_all.c | |
parent | a5c09c91c414ba08d915331797e717334ac06456 (diff) | |
download | mpd-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.c | 10 |
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 |