[PATCH 4/5] wineoss: Move AUXDM_GETVOLUME and AUXDM_SETVOLUME to the unixlib.
Andrew Eikum
aeikum at codeweavers.com
Tue May 3 08:52:41 CDT 2022
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
On Tue, May 03, 2022 at 07:42:31AM +0100, Huw Davies wrote:
> Signed-off-by: Huw Davies <huw at codeweavers.com>
> ---
> dlls/wineoss.drv/mmaux.c | 135 ---------------------------------------
> dlls/wineoss.drv/oss.c | 121 +++++++++++++++++++++++++++++++++++
> 2 files changed, 121 insertions(+), 135 deletions(-)
>
> diff --git a/dlls/wineoss.drv/mmaux.c b/dlls/wineoss.drv/mmaux.c
> index a3a12a96bea..ae52293f944 100644
> --- a/dlls/wineoss.drv/mmaux.c
> +++ b/dlls/wineoss.drv/mmaux.c
> @@ -18,16 +18,7 @@
> * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
> */
>
> -#include "config.h"
> -
> #include <stdarg.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include <sys/types.h>
> -#include <unistd.h>
> -#include <fcntl.h>
> -#include <sys/ioctl.h>
> -#include <sys/soundcard.h>
>
> #include "windef.h"
> #include "winbase.h"
> @@ -42,125 +33,6 @@
>
> WINE_DEFAULT_DEBUG_CHANNEL(mmaux);
>
> -#define MIXER_DEV "/dev/mixer"
> -
> -/*-----------------------------------------------------------------------*/
> -
> -/**************************************************************************
> - * AUX_GetVolume [internal]
> - */
> -static DWORD AUX_GetVolume(WORD wDevID, LPDWORD lpdwVol)
> -{
> - int mixer, volume, left, right, cmd;
> -
> - TRACE("(%04X, %p);\n", wDevID, lpdwVol);
> - if (lpdwVol == NULL) return MMSYSERR_NOTENABLED;
> - if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
> - WARN("mixer device not available !\n");
> - return MMSYSERR_NOTENABLED;
> - }
> - switch(wDevID) {
> - case 0:
> - TRACE("SOUND_MIXER_READ_PCM !\n");
> - cmd = SOUND_MIXER_READ_PCM;
> - break;
> - case 1:
> - TRACE("SOUND_MIXER_READ_SYNTH !\n");
> - cmd = SOUND_MIXER_READ_SYNTH;
> - break;
> - case 2:
> - TRACE("SOUND_MIXER_READ_CD !\n");
> - cmd = SOUND_MIXER_READ_CD;
> - break;
> - case 3:
> - TRACE("SOUND_MIXER_READ_LINE !\n");
> - cmd = SOUND_MIXER_READ_LINE;
> - break;
> - case 4:
> - TRACE("SOUND_MIXER_READ_MIC !\n");
> - cmd = SOUND_MIXER_READ_MIC;
> - break;
> - case 5:
> - TRACE("SOUND_MIXER_READ_VOLUME !\n");
> - cmd = SOUND_MIXER_READ_VOLUME;
> - break;
> - default:
> - WARN("invalid device id=%04X !\n", wDevID);
> - close(mixer);
> - return MMSYSERR_NOTENABLED;
> - }
> - if (ioctl(mixer, cmd, &volume) == -1) {
> - WARN("unable to read mixer !\n");
> - close(mixer);
> - return MMSYSERR_NOTENABLED;
> - }
> - close(mixer);
> - left = LOBYTE(LOWORD(volume));
> - right = HIBYTE(LOWORD(volume));
> - TRACE("left=%d right=%d !\n", left, right);
> - *lpdwVol = MAKELONG((left * 0xFFFFL) / 100, (right * 0xFFFFL) / 100);
> - return MMSYSERR_NOERROR;
> -}
> -
> -/**************************************************************************
> - * AUX_SetVolume [internal]
> - */
> -static DWORD AUX_SetVolume(WORD wDevID, DWORD dwParam)
> -{
> - int mixer;
> - int volume, left, right;
> - int cmd;
> -
> - TRACE("(%04X, %08X);\n", wDevID, dwParam);
> -
> - left = (LOWORD(dwParam) * 100) >> 16;
> - right = (HIWORD(dwParam) * 100) >> 16;
> - volume = (right << 8) | left;
> -
> - if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
> - WARN("mixer device not available !\n");
> - return MMSYSERR_NOTENABLED;
> - }
> -
> - switch(wDevID) {
> - case 0:
> - TRACE("SOUND_MIXER_WRITE_PCM !\n");
> - cmd = SOUND_MIXER_WRITE_PCM;
> - break;
> - case 1:
> - TRACE("SOUND_MIXER_WRITE_SYNTH !\n");
> - cmd = SOUND_MIXER_WRITE_SYNTH;
> - break;
> - case 2:
> - TRACE("SOUND_MIXER_WRITE_CD !\n");
> - cmd = SOUND_MIXER_WRITE_CD;
> - break;
> - case 3:
> - TRACE("SOUND_MIXER_WRITE_LINE !\n");
> - cmd = SOUND_MIXER_WRITE_LINE;
> - break;
> - case 4:
> - TRACE("SOUND_MIXER_WRITE_MIC !\n");
> - cmd = SOUND_MIXER_WRITE_MIC;
> - break;
> - case 5:
> - TRACE("SOUND_MIXER_WRITE_VOLUME !\n");
> - cmd = SOUND_MIXER_WRITE_VOLUME;
> - break;
> - default:
> - WARN("invalid device id=%04X !\n", wDevID);
> - close(mixer);
> - return MMSYSERR_NOTENABLED;
> - }
> - if (ioctl(mixer, cmd, &volume) == -1) {
> - WARN("unable to set mixer !\n");
> - close(mixer);
> - return MMSYSERR_NOTENABLED;
> - }
> - close(mixer);
> - return MMSYSERR_NOERROR;
> -}
> -
> /**************************************************************************
> * auxMessage (WINEOSS.2)
> */
> @@ -173,13 +45,6 @@ DWORD WINAPI OSS_auxMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
> TRACE("(%04X, %04X, %08lX, %08lX, %08lX);\n",
> wDevID, wMsg, dwUser, dwParam1, dwParam2);
>
> - switch (wMsg) {
> - case AUXDM_GETVOLUME:
> - return AUX_GetVolume(wDevID, (LPDWORD)dwParam1);
> - case AUXDM_SETVOLUME:
> - return AUX_SetVolume(wDevID, dwParam1);
> - }
> -
> params.dev_id = wDevID;
> params.msg = wMsg;
> params.user = dwUser;
> diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c
> index e387a2a4a71..6490081e069 100644
> --- a/dlls/wineoss.drv/oss.c
> +++ b/dlls/wineoss.drv/oss.c
> @@ -1444,6 +1444,121 @@ static UINT aux_get_devcaps(WORD dev_id, AUXCAPSW *caps, UINT size)
> return MMSYSERR_NOERROR;
> }
>
> +static UINT aux_get_volume(WORD dev_id, UINT *vol)
> +{
> + int mixer, volume, left, right, cmd;
> +
> + TRACE("(%04X, %p);\n", dev_id, vol);
> + if (vol == NULL) return MMSYSERR_NOTENABLED;
> + if ((mixer = open(MIXER_DEV, O_RDWR)) < 0)
> + {
> + WARN("mixer device not available !\n");
> + return MMSYSERR_NOTENABLED;
> + }
> + switch(dev_id)
> + {
> + case 0:
> + TRACE("SOUND_MIXER_READ_PCM !\n");
> + cmd = SOUND_MIXER_READ_PCM;
> + break;
> + case 1:
> + TRACE("SOUND_MIXER_READ_SYNTH !\n");
> + cmd = SOUND_MIXER_READ_SYNTH;
> + break;
> + case 2:
> + TRACE("SOUND_MIXER_READ_CD !\n");
> + cmd = SOUND_MIXER_READ_CD;
> + break;
> + case 3:
> + TRACE("SOUND_MIXER_READ_LINE !\n");
> + cmd = SOUND_MIXER_READ_LINE;
> + break;
> + case 4:
> + TRACE("SOUND_MIXER_READ_MIC !\n");
> + cmd = SOUND_MIXER_READ_MIC;
> + break;
> + case 5:
> + TRACE("SOUND_MIXER_READ_VOLUME !\n");
> + cmd = SOUND_MIXER_READ_VOLUME;
> + break;
> + default:
> + WARN("invalid device id=%04X !\n", dev_id);
> + close(mixer);
> + return MMSYSERR_NOTENABLED;
> + }
> + if (ioctl(mixer, cmd, &volume) == -1)
> + {
> + WARN("unable to read mixer !\n");
> + close(mixer);
> + return MMSYSERR_NOTENABLED;
> + }
> + close(mixer);
> + left = LOBYTE(LOWORD(volume));
> + right = HIBYTE(LOWORD(volume));
> + TRACE("left=%d right=%d !\n", left, right);
> + *vol = MAKELONG((left * 0xFFFFL) / 100, (right * 0xFFFFL) / 100);
> + return MMSYSERR_NOERROR;
> +}
> +
> +static UINT aux_set_volume(WORD dev_id, UINT vol)
> +{
> + int mixer;
> + int volume, left, right;
> + int cmd;
> +
> + TRACE("(%04X, %08X);\n", dev_id, vol);
> +
> + left = (LOWORD(vol) * 100) >> 16;
> + right = (HIWORD(vol) * 100) >> 16;
> + volume = (right << 8) | left;
> +
> + if ((mixer = open(MIXER_DEV, O_RDWR)) < 0)
> + {
> + WARN("mixer device not available !\n");
> + return MMSYSERR_NOTENABLED;
> + }
> +
> + switch(dev_id)
> + {
> + case 0:
> + TRACE("SOUND_MIXER_WRITE_PCM !\n");
> + cmd = SOUND_MIXER_WRITE_PCM;
> + break;
> + case 1:
> + TRACE("SOUND_MIXER_WRITE_SYNTH !\n");
> + cmd = SOUND_MIXER_WRITE_SYNTH;
> + break;
> + case 2:
> + TRACE("SOUND_MIXER_WRITE_CD !\n");
> + cmd = SOUND_MIXER_WRITE_CD;
> + break;
> + case 3:
> + TRACE("SOUND_MIXER_WRITE_LINE !\n");
> + cmd = SOUND_MIXER_WRITE_LINE;
> + break;
> + case 4:
> + TRACE("SOUND_MIXER_WRITE_MIC !\n");
> + cmd = SOUND_MIXER_WRITE_MIC;
> + break;
> + case 5:
> + TRACE("SOUND_MIXER_WRITE_VOLUME !\n");
> + cmd = SOUND_MIXER_WRITE_VOLUME;
> + break;
> + default:
> + WARN("invalid device id=%04X !\n", dev_id);
> + close(mixer);
> + return MMSYSERR_NOTENABLED;
> + }
> + if (ioctl(mixer, cmd, &volume) == -1)
> + {
> + WARN("unable to set mixer !\n");
> + close(mixer);
> + return MMSYSERR_NOTENABLED;
> + }
> + close(mixer);
> + return MMSYSERR_NOERROR;
> +}
> +
> static NTSTATUS aux_message(void *args)
> {
> struct aux_message_params *params = args;
> @@ -1468,6 +1583,12 @@ static NTSTATUS aux_message(void *args)
> TRACE("return %d;\n", num_aux);
> *params->err = num_aux;
> break;
> + case AUXDM_GETVOLUME:
> + *params->err = aux_get_volume(params->dev_id, (UINT *)params->param_1);
> + break;
> + case AUXDM_SETVOLUME:
> + *params->err = aux_set_volume(params->dev_id, params->param_1);
> + break;
> default:
> WARN("unknown message !\n");
> *params->err = MMSYSERR_NOTSUPPORTED;
> --
> 2.25.1
>
>
More information about the wine-devel
mailing list