pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/36480: OSS mixer problems with audio/xmms: not using ioctl properly



>Number:         36480
>Category:       pkg
>Synopsis:       OSS mixer problems with audio/xmms: not using ioctl properly
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Jun 13 09:25:00 +0000 2007
>Originator:     Jesse Peterson
>Release:        NetBSD/amd64 3.1
>Organization:
>Environment:
NetBSD localhost 3.1 NetBSD 3.1 (GENERIC) #0: Mon Oct 30 21:47:28 UTC 2006  
builds%b1.netbsd.org@localhost:/home/builds/ab/netbsd-3-1-RELEASE/amd64/200610302053Z-obj/home/builds/ab/netbsd-3-1-RELEASE/src/sys/arch/amd64/compile/GENERIC
 amd64
>Description:
Audio hardware:

auvia0 at pci0 dev 17 function 5: VIA Technologies VT8237 AC'97 Audio (rev 0x60)
auvia0: interrupting at ioapic0 pin 22 (irq 3)
auvia0: ac97: Avance Logic ALC850 codec; no 3D stereo
auvia0: ac97: ext id 9c6<AC97_23,LDAC,SDAC,CDAC,SPDIF,DRA>
audio0 at auvia0: full duplex, independent

XMMS is using passing int in place of an unsigned long for the request variable 
of ioctl(2).

The effect of which on this platform and hardware was that I could not change 
the volume
>How-To-Repeat:
Compile/use audio/xmms (nb8) from pkgsrc on NetBSD/amd64 3.1 with a VIA VT8237 
AC'97 audio chip and attempt to change the volume using the OSSaudio emulation 
API. Even though audio plays fine you cannot change the mixer PCM or master 
volume levels through XMMS itself.
>Fix:
--- xmms-1.2.10/Output/OSS/mixer.c.orig 2001-06-16 06:30:35.000000000 -0700
+++ xmms-1.2.10/Output/OSS/mixer.c      2007-06-12 21:38:54.000000000 -0700
@@ -34,7 +34,8 @@
 
 void oss_get_volume(int *l, int *r)
 {
-       int fd, v, cmd, devs;
+       int fd, v, devs;
+       unsigned long cmd;
        gchar *devname;
 
        devname = get_mixer_device();
@@ -66,7 +67,8 @@
 
 void oss_set_volume(int l, int r)
 {
-       int fd, v, cmd, devs;
+       int fd, v, devs;
+       unsigned long cmd;
        gchar *devname;
 
        devname = get_mixer_device();




Home | Main Index | Thread Index | Old Index