From a35bb7cc68d2e7dd2a862ca863d48efae6523da8 Mon Sep 17 00:00:00 2001 Message-Id: From: Mark Wooding Date: Thu, 17 Jan 2008 17:31:34 +0000 Subject: [PATCH 1/1] Only report failure to find OSS devices once, not every time we think about them. Organization: Straylight/Edgeware From: Richard Kettlewell --- lib/mixer-oss.c | 15 ++++++++++++--- server/speaker-oss.c | 9 +++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) 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 -- [mdw]