summaryrefslogtreecommitdiff
path: root/multimedia/xmms/files/patch-Output_OSS_mixer.c
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/xmms/files/patch-Output_OSS_mixer.c')
-rw-r--r--multimedia/xmms/files/patch-Output_OSS_mixer.c91
1 files changed, 0 insertions, 91 deletions
diff --git a/multimedia/xmms/files/patch-Output_OSS_mixer.c b/multimedia/xmms/files/patch-Output_OSS_mixer.c
deleted file mode 100644
index 39caaa7d8772..000000000000
--- a/multimedia/xmms/files/patch-Output_OSS_mixer.c
+++ /dev/null
@@ -1,91 +0,0 @@
---- Output/OSS/mixer.c.orig 2001-06-16 13:30:35 UTC
-+++ Output/OSS/mixer.c
-@@ -34,12 +34,20 @@ static char* get_mixer_device(void)
-
- void oss_get_volume(int *l, int *r)
- {
-- int fd, v, cmd, devs;
-+ int fd, v, devs, dspfd;
-+ long cmd;
- gchar *devname;
-
-- devname = get_mixer_device();
-- fd = open(devname, O_RDONLY);
-- g_free(devname);
-+ dspfd = oss_get_fd();
-+ if (oss_cfg.use_master == 0 && dspfd != -1) {
-+ fd = dspfd;
-+ dspfd = 1;
-+ } else {
-+ devname = get_mixer_device();
-+ fd = open(devname, O_RDONLY);
-+ g_free(devname);
-+ dspfd = 0;
-+ }
-
- /*
- * We dont show any errors if this fails, as this is called
-@@ -49,28 +57,40 @@ void oss_get_volume(int *l, int *r)
- {
- ioctl(fd, SOUND_MIXER_READ_DEVMASK, &devs);
- if ((devs & SOUND_MASK_PCM) && (oss_cfg.use_master==0))
-- cmd = SOUND_MIXER_READ_PCM;
-+ cmd = (dspfd != 0) ? SNDCTL_DSP_GETPLAYVOL :
-+ SOUND_MIXER_READ_PCM;
- else if ((devs & SOUND_MASK_VOLUME) && (oss_cfg.use_master==1))
- cmd = SOUND_MIXER_READ_VOLUME;
- else
- {
-- close(fd);
-+ if (dspfd == 0)
-+ close(fd);
- return;
- }
- ioctl(fd, cmd, &v);
- *r = (v & 0xFF00) >> 8;
- *l = (v & 0x00FF);
-- close(fd);
-+ if (dspfd == 0)
-+ close(fd);
- }
- }
-
- void oss_set_volume(int l, int r)
- {
-- int fd, v, cmd, devs;
-+ int fd, v, devs, dspfd;
-+ long cmd;
- gchar *devname;
-
-- devname = get_mixer_device();
-- fd = open(devname, O_RDONLY);
-+ dspfd = oss_get_fd();
-+ if (oss_cfg.use_master == 0 && dspfd != -1) {
-+ fd = dspfd;
-+ dspfd = 1;
-+ devname = g_strdup("<OSS FD>");
-+ } else {
-+ devname = get_mixer_device();
-+ fd = open(devname, O_RDONLY);
-+ dspfd = 0;
-+ }
-
- if (fd != -1)
- {
-@@ -81,12 +101,14 @@ void oss_set_volume(int l, int r)
- cmd = SOUND_MIXER_WRITE_VOLUME;
- else
- {
-- close(fd);
-+ if (dspfd == 0)
-+ close(fd);
- return;
- }
- v = (r << 8) | l;
- ioctl(fd, cmd, &v);
-- close(fd);
-+ if (dspfd == 0)
-+ close(fd);
- }
- else
- g_warning("oss_set_volume(): Failed to open mixer device (%s): %s",