Module Name:    src
Committed By:   nia
Date:           Wed Jun  9 14:49:13 UTC 2021

Modified Files:
        src/lib/libossaudio: oss_caps.c

Log Message:
ossaudio(3): continue getting capabilities if AUDIO_GETFORMAT fails

we want this to work on mixer devices too


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/lib/libossaudio/oss_caps.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libossaudio/oss_caps.c
diff -u src/lib/libossaudio/oss_caps.c:1.1 src/lib/libossaudio/oss_caps.c:1.2
--- src/lib/libossaudio/oss_caps.c:1.1	Tue Jun  8 18:43:54 2021
+++ src/lib/libossaudio/oss_caps.c	Wed Jun  9 14:49:13 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: oss_caps.c,v 1.1 2021/06/08 18:43:54 nia Exp $	*/
+/*	$NetBSD: oss_caps.c,v 1.2 2021/06/09 14:49:13 nia Exp $	*/
 
 /*-
  * Copyright (c) 2021 The NetBSD Foundation, Inc.
@@ -41,27 +41,26 @@ _oss_get_caps(int fd, int *out)
 	if (ioctl(fd, AUDIO_GETPROPS, &props) < 0)
 		return -1;
 
-	if (ioctl(fd, AUDIO_GETFORMAT, &info) < 0)
-		return -1;
-
 	caps = 0;
 	caps |= PCM_CAP_TRIGGER;
 	caps |= PCM_CAP_MULTI;
 	caps |= PCM_CAP_FREERATE;
 
-	nchannels = (props & AUDIO_PROP_PLAYBACK) ?
-	    info.play.channels : info.record.channels;
-
-	switch (nchannels) {
-	case 2:
-		caps |= DSP_CH_STEREO;
-		break;
-	case 1:
-		caps |= DSP_CH_MONO;
-		break;
-	default:
-		caps |= DSP_CH_MULTI;
-		break;
+	if (ioctl(fd, AUDIO_GETFORMAT, &info) != -1) {
+		nchannels = (props & AUDIO_PROP_PLAYBACK) ?
+		    info.play.channels : info.record.channels;
+
+		switch (nchannels) {
+		case 2:
+			caps |= DSP_CH_STEREO;
+			break;
+		case 1:
+			caps |= DSP_CH_MONO;
+			break;
+		default:
+			caps |= DSP_CH_MULTI;
+			break;
+		}
 	}
 
 	if (props & AUDIO_PROP_FULLDUPLEX)

Reply via email to