X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/e99d42b153659e7ac644bb93700acb81514998e5..a35bb7cc68d2e7dd2a862ca863d48efae6523da8:/server/speaker-oss.c diff --git a/server/speaker-oss.c b/server/speaker-oss.c index f9a298c..36ef4a8 100644 --- a/server/speaker-oss.c +++ b/server/speaker-oss.c @@ -1,6 +1,7 @@ /* * 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 * it under the terms of the GNU General Public License as published by @@ -71,6 +72,15 @@ static void oss_activate(void) { device = "/dev/dsp"; else if(access("/dev/audio", W_OK) == 0) device = "/dev/audio"; + else { + static int reported; + + if(!reported) { + error(0, "cannot determine default OSS device"); + reported = 1; + } + goto failed; + } } else device = config->device; /* just believe the user */ /* Open the device */ @@ -111,8 +121,10 @@ static void oss_activate(void) { return; failed: device_state = device_error; - if(ossfd >= 0) + if(ossfd >= 0) { xclose(ossfd); + ossfd = -1; + } } /** @brief Play via OSS */ @@ -136,7 +148,7 @@ static size_t oss_play(size_t frames) { static int oss_slot; /** @brief Fill in poll fd array for OSS */ -static void oss_beforepoll(void) { +static void oss_beforepoll(int attribute((unused)) *timeoutp) { oss_slot = addfd(ossfd, POLLOUT|POLLERR); }