Throttle PuleAudio connection attempts so we don't spam the error log

git-svn-id: https://svn.musicpd.org/mpd/trunk@4403 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
J. Alexander Treuman 2006-07-19 16:48:24 +00:00
parent 649a037e8d
commit 2728853ec1

View File

@ -22,18 +22,23 @@
#ifdef HAVE_PULSE #ifdef HAVE_PULSE
#define MPD_PULSE_NAME "mpd"
#include "../conf.h" #include "../conf.h"
#include "../log.h" #include "../log.h"
#include <time.h>
#include <pulse/simple.h> #include <pulse/simple.h>
#include <pulse/error.h> #include <pulse/error.h>
#define MPD_PULSE_NAME "mpd"
#define CONN_ATTEMPT_INTERVAL 60
typedef struct _PulseData { typedef struct _PulseData {
pa_simple * s;
char * server; char * server;
char * sink; char * sink;
pa_simple * s; int connAttempts;
time_t lastAttempt;
} PulseData; } PulseData;
static PulseData * newPulseData() static PulseData * newPulseData()
@ -41,9 +46,13 @@ static PulseData * newPulseData()
PulseData * ret; PulseData * ret;
ret = malloc(sizeof(PulseData)); ret = malloc(sizeof(PulseData));
ret->s = NULL;
ret->server = NULL; ret->server = NULL;
ret->sink = NULL; ret->sink = NULL;
ret->s = NULL; ret->connAttempts = 0;
ret->lastAttempt = 0;
return ret; return ret;
} }
@ -106,11 +115,19 @@ static int pulse_openDevice(AudioOutput * audioOutput)
PulseData * ad; PulseData * ad;
AudioFormat * audioFormat; AudioFormat * audioFormat;
pa_sample_spec ss; pa_sample_spec ss;
time_t t;
int error; int error;
t = time(NULL);
ad = audioOutput->data; ad = audioOutput->data;
audioFormat = &audioOutput->outAudioFormat; audioFormat = &audioOutput->outAudioFormat;
if (ad->connAttempts != 0 &&
(t - ad->lastAttempt) < CONN_ATTEMPT_INTERVAL) return -1;
ad->connAttempts++;
ad->lastAttempt = t;
if (audioFormat->bits != 16) { if (audioFormat->bits != 16) {
ERROR("PulseAudio doesn't support %i bit audio\n", ERROR("PulseAudio doesn't support %i bit audio\n",
audioFormat->bits); audioFormat->bits);
@ -126,10 +143,12 @@ static int pulse_openDevice(AudioOutput * audioOutput)
&error); &error);
if (!ad->s) { if (!ad->s) {
ERROR("Cannot connect to server in PulseAudio output " \ ERROR("Cannot connect to server in PulseAudio output " \
"\"%s\": %s\n", audioOutput->name, pa_strerror(error)); "\"%s\" (attempt %i): %s\n", audioOutput->name,
ad->connAttempts, pa_strerror(error));
return -1; return -1;
} }
ad->connAttempts = 0;
audioOutput->open = 1; audioOutput->open = 1;
DEBUG("PulseAudio output \"%s\" connected and playing %i bit, %i " \ DEBUG("PulseAudio output \"%s\" connected and playing %i bit, %i " \