From: Richard Kettlewell Date: Thu, 17 Jan 2008 17:31:34 +0000 (+0000) Subject: Only report failure to find OSS devices once, not every time we think X-Git-Tag: 3.0~46 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/commitdiff_plain/a35bb7cc68d2e7dd2a862ca863d48efae6523da8?hp=bcc46dc3615c18393955f433fbf83e1820d716e6 Only report failure to find OSS devices once, not every time we think about them. --- diff --git a/lib/mixer-oss.c b/lib/mixer-oss.c index 7ce57be..e1c8b19 100644 --- a/lib/mixer-oss.c +++ b/lib/mixer-oss.c @@ -1,6 +1,6 @@ /* * This file is part of DisOrder - * Copyright (C) 2004, 2007 Richard Kettlewell + * Copyright (C) 2004, 2007, 2008 Richard Kettlewell * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -44,6 +44,7 @@ #include "mixer.h" #include "log.h" #include "syscalls.h" +#include "mem.h" /* documentation does not match implementation! */ #ifndef SOUND_MIXER_READ @@ -74,8 +75,16 @@ static int mixer_channel(const char *c) { static int oss_do_open(void) { int fd; - if((fd = open(config->mixer, O_RDWR, 0)) < 0) - error(errno, "error opening %s", config->mixer); + if((fd = open(config->mixer, O_RDWR, 0)) < 0) { + static char *reported; + + if(!reported || strcmp(reported, config->mixer)) { + if(reported) + xfree(reported); + reported = xstrdup(config->mixer); + error(errno, "error opening %s", config->mixer); + } + } return fd; } diff --git a/server/speaker-oss.c b/server/speaker-oss.c index 69322ff..36ef4a8 100644 --- a/server/speaker-oss.c +++ b/server/speaker-oss.c @@ -1,6 +1,6 @@ /* * This file is part of DisOrder - * Copyright (C) 2007 Richard Kettlewell + * Copyright (C) 2007, 2008 Richard Kettlewell * Portions copyright (C) 2007 Ross Younger * * This program is free software; you can redistribute it and/or modify @@ -73,7 +73,12 @@ static void oss_activate(void) { else if(access("/dev/audio", W_OK) == 0) device = "/dev/audio"; else { - error(0, "cannot determine default OSS device"); + static int reported; + + if(!reported) { + error(0, "cannot determine default OSS device"); + reported = 1; + } goto failed; } } else