[PATCH 3/5] wineoss: Move AUXDM_GETDEVCAPS to the unixlib.

Andrew Eikum aeikum at codeweavers.com
Tue May 3 08:52:33 CDT 2022


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>

On Tue, May 03, 2022 at 07:42:30AM +0100, Huw Davies wrote:
> Signed-off-by: Huw Davies <huw at codeweavers.com>
> ---
>  dlls/wineoss.drv/mmaux.c | 42 +---------------------------------------
>  dlls/wineoss.drv/oss.c   | 35 +++++++++++++++++++++++++++++++++
>  2 files changed, 36 insertions(+), 41 deletions(-)
> 
> diff --git a/dlls/wineoss.drv/mmaux.c b/dlls/wineoss.drv/mmaux.c
> index 9fb1eeb7cd7..a3a12a96bea 100644
> --- a/dlls/wineoss.drv/mmaux.c
> +++ b/dlls/wineoss.drv/mmaux.c
> @@ -33,9 +33,9 @@
>  #include "winbase.h"
>  #include "mmddk.h"
>  #include "audioclient.h"
> +#include "winternl.h"
>  
>  #include "wine/debug.h"
> -#include "wine/unicode.h"
>  #include "wine/unixlib.h"
>  
>  #include "unixlib.h"
> @@ -46,44 +46,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(mmaux);
>  
>  /*-----------------------------------------------------------------------*/
>  
> -DWORD WINAPI OSS_auxMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
> -			    DWORD_PTR dwParam1, DWORD_PTR dwParam2);
> -
> -/**************************************************************************
> - * 				AUX_GetDevCaps			[internal]
> - */
> -static DWORD AUX_GetDevCaps(WORD wDevID, LPAUXCAPSW lpCaps, DWORD dwSize)
> -{
> -    int 	mixer, volume;
> -    static const WCHAR ini[] = {'O','S','S',' ','A','u','x',' ','#','0',0};
> -    unsigned int num_aux = OSS_auxMessage(0, AUXDM_GETNUMDEVS, 0, 0, 0);
> -
> -    TRACE("(%04X, %p, %u);\n", wDevID, lpCaps, dwSize);
> -    if (lpCaps == NULL) return MMSYSERR_NOTENABLED;
> -    if (wDevID >= num_aux) return MMSYSERR_BADDEVICEID;
> -    if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
> -	WARN("mixer device not available !\n");
> -	return MMSYSERR_NOTENABLED;
> -    }
> -    if (ioctl(mixer, SOUND_MIXER_READ_LINE, &volume) == -1) {
> -	close(mixer);
> -	WARN("unable to read mixer !\n");
> -	return MMSYSERR_NOTENABLED;
> -    }
> -    close(mixer);
> -    lpCaps->wMid = 0xAA;
> -    lpCaps->wPid = 0x55 + wDevID;
> -    lpCaps->vDriverVersion = 0x0100;
> -    strcpyW(lpCaps->szPname, ini);
> -    lpCaps->szPname[9] = '0' + wDevID; /* 6  at max */
> -    lpCaps->wTechnology = wDevID == 2 ? AUXCAPS_CDAUDIO : AUXCAPS_AUXIN;
> -    lpCaps->wReserved1 = 0;
> -    lpCaps->dwSupport = AUXCAPS_VOLUME | AUXCAPS_LRVOLUME;
> -
> -    return MMSYSERR_NOERROR;
> -}
> -
> -
>  /**************************************************************************
>   * 				AUX_GetVolume			[internal]
>   */
> @@ -212,8 +174,6 @@ DWORD WINAPI OSS_auxMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
>  	  wDevID, wMsg, dwUser, dwParam1, dwParam2);
>  
>      switch (wMsg) {
> -    case AUXDM_GETDEVCAPS:
> -	return AUX_GetDevCaps(wDevID, (LPAUXCAPSW)dwParam1, dwParam2);
>      case AUXDM_GETVOLUME:
>  	return AUX_GetVolume(wDevID, (LPDWORD)dwParam1);
>      case AUXDM_SETVOLUME:
> diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c
> index d469bbebb4e..e387a2a4a71 100644
> --- a/dlls/wineoss.drv/oss.c
> +++ b/dlls/wineoss.drv/oss.c
> @@ -1412,6 +1412,38 @@ static UINT aux_exit(void)
>      return 0;
>  }
>  
> +static UINT aux_get_devcaps(WORD dev_id, AUXCAPSW *caps, UINT size)
> +{
> +    int mixer, volume;
> +    static const WCHAR ini[] = {'O','S','S',' ','A','u','x',' ','#','0',0};
> +
> +    TRACE("(%04X, %p, %u);\n", dev_id, caps, size);
> +    if (caps == NULL) return MMSYSERR_NOTENABLED;
> +    if (dev_id >= num_aux) return MMSYSERR_BADDEVICEID;
> +    if ((mixer = open(MIXER_DEV, O_RDWR)) < 0)
> +    {
> +        WARN("mixer device not available !\n");
> +        return MMSYSERR_NOTENABLED;
> +    }
> +    if (ioctl(mixer, SOUND_MIXER_READ_LINE, &volume) == -1)
> +    {
> +        close(mixer);
> +        WARN("unable to read mixer !\n");
> +        return MMSYSERR_NOTENABLED;
> +    }
> +    close(mixer);
> +    caps->wMid = 0xAA;
> +    caps->wPid = 0x55 + dev_id;
> +    caps->vDriverVersion = 0x0100;
> +    memcpy(caps->szPname, ini, sizeof(ini));
> +    caps->szPname[9] = '0' + dev_id; /* 6  at max */
> +    caps->wTechnology = (dev_id == 2) ? AUXCAPS_CDAUDIO : AUXCAPS_AUXIN;
> +    caps->wReserved1 = 0;
> +    caps->dwSupport = AUXCAPS_VOLUME | AUXCAPS_LRVOLUME;
> +
> +    return MMSYSERR_NOERROR;
> +}
> +
>  static NTSTATUS aux_message(void *args)
>  {
>      struct aux_message_params *params = args;
> @@ -1429,6 +1461,9 @@ static NTSTATUS aux_message(void *args)
>          /* FIXME: Pretend this is supported */
>          *params->err = 0;
>          break;
> +    case AUXDM_GETDEVCAPS:
> +        *params->err = aux_get_devcaps(params->dev_id, (AUXCAPSW *)params->param_1, params->param_2);
> +        break;
>      case AUXDM_GETNUMDEVS:
>          TRACE("return %d;\n", num_aux);
>          *params->err = num_aux;
> -- 
> 2.25.1
> 
> 



More information about the wine-devel mailing list