From 8583a3bc4e9af2a1be06c82422a7cac1470341ce Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Sat, 12 Mar 2005 03:10:09 +0000 Subject: if no audioOutput specified, we no attempt to detect if there exists a usable oss or alsa device git-svn-id: https://svn.musicpd.org/mpd/trunk@3057 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/audioOutputs/audioOutput_oss.c | 44 ++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) (limited to 'src/audioOutputs/audioOutput_oss.c') diff --git a/src/audioOutputs/audioOutput_oss.c b/src/audioOutputs/audioOutput_oss.c index b3ad9bff4..fc703bd90 100644 --- a/src/audioOutputs/audioOutput_oss.c +++ b/src/audioOutputs/audioOutput_oss.c @@ -291,10 +291,38 @@ static int oss_statDevice(char * device, int * stErrno) { return 0; } +static int oss_testDefault() { + int fd; + + fd = open("/dev/sound/dsp", O_WRONLY); + + if(fd) { + close(fd); + return 0; + } + + WARNING("Error opening OSS device \"/dev/sound/dsp\": %s\n", + strerror(errno)); + + fd = open("/dev/dsp", O_WRONLY); + + if(fd) { + close(fd); + return 0; + } + + WARNING("Error opening OSS device \"/dev/dsp\": %s\n", + strerror(errno)); + + return -1; +} + static int oss_initDriver(AudioOutput * audioOutput, ConfigParam * param) { - BlockParam * bp = getBlockParam(param, "device"); + BlockParam * bp = NULL; + + if(param) bp = getBlockParam(param, "device"); + OssData * od = newOssData(); - audioOutput->data = od; if(!bp) { @@ -307,8 +335,14 @@ static int oss_initDriver(AudioOutput * audioOutput, ConfigParam * param) { if(ret[0] == 0) od->device = strdup("/dev/sound/dsp"); else if(ret[1] == 0) od->device = strdup("/dev/dsp"); else { - ERROR("Error trying to open default OSS device " - "specified at line %i\n", param->line); + if(param) { + ERROR("Error trying to open default OSS device " + "specified at line %i\n", param->line); + } + else { + ERROR("Error trying to open default OSS " + "device\n"); + } if(ret[0] == ret[1] == OSS_STAT_DOESN_T_EXIST) { ERROR("Neither /dev/dsp nor /dev/sound/dsp " @@ -501,6 +535,7 @@ static int oss_playAudio(AudioOutput * audioOutput, char * playChunk, AudioOutputPlugin ossPlugin = { "oss", + oss_testDefault, oss_initDriver, oss_finishDriver, oss_openDevice, @@ -521,6 +556,7 @@ AudioOutputPlugin ossPlugin = NULL, NULL, NULL, + NULL, NULL /* sendMetadataFunc */ }; -- cgit v1.2.3