output: delay reopen after device failure

When one of several output devices failed, MPD tried to reopen it
quite often, wasting a lot of resources.  This patch adds a delay:
wait 10 seconds before retrying.  This might be changed to exponential
delays later, but for now, it makes the problem go away.
This commit is contained in:
Max Kellermann
2008-10-29 22:32:50 +01:00
parent 0eae1c55ad
commit 7da0e005f3
5 changed files with 24 additions and 3 deletions

View File

@@ -23,6 +23,12 @@
#include <assert.h>
enum {
/** after a failure, wait this number of seconds before
automatically reopening the device */
REOPEN_AFTER = 10,
};
static void ao_command_finished(struct audio_output *ao)
{
assert(ao->command != AO_COMMAND_NONE);
@@ -104,6 +110,8 @@ static void *audio_output_task(void *arg)
assert(!ao->open);
if (ao->result == true)
ao->open = true;
else
ao->reopen_after = time(NULL) + REOPEN_AFTER;
ao_command_finished(ao);
break;