[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