[PATCH 2/5] wineoss: Move AUXDM_GETNUMDEVS to the unixlib.
Andrew Eikum
aeikum at codeweavers.com
Tue May 3 08:52:24 CDT 2022
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
On Tue, May 03, 2022 at 07:42:29AM +0100, Huw Davies wrote:
> Signed-off-by: Huw Davies <huw at codeweavers.com>
> ---
> dlls/wineoss.drv/mmaux.c | 59 ++++++++++++-----------------------
> dlls/wineoss.drv/oss.c | 63 ++++++++++++++++++++++++++++++++++++++
> dlls/wineoss.drv/unixlib.h | 11 +++++++
> 3 files changed, 93 insertions(+), 40 deletions(-)
>
> diff --git a/dlls/wineoss.drv/mmaux.c b/dlls/wineoss.drv/mmaux.c
> index 02ef912bd34..9fb1eeb7cd7 100644
> --- a/dlls/wineoss.drv/mmaux.c
> +++ b/dlls/wineoss.drv/mmaux.c
> @@ -32,40 +32,20 @@
> #include "windef.h"
> #include "winbase.h"
> #include "mmddk.h"
> -#include "wine/unicode.h"
> +#include "audioclient.h"
> +
> #include "wine/debug.h"
> +#include "wine/unicode.h"
> +#include "wine/unixlib.h"
> +
> +#include "unixlib.h"
>
> WINE_DEFAULT_DEBUG_CHANNEL(mmaux);
>
> #define MIXER_DEV "/dev/mixer"
>
> -static int NumDev = 6;
> -
> -/*-----------------------------------------------------------------------*/
> -
> -static LRESULT OSS_AuxInit(void)
> -{
> - int mixer;
> - TRACE("()\n");
> -
> - if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
> - WARN("mixer device not available !\n");
> - NumDev = 0;
> - } else {
> - close(mixer);
> - NumDev = 6;
> - }
> - return 0;
> -}
> -
> /*-----------------------------------------------------------------------*/
>
> -static LRESULT OSS_AuxExit(void)
> -{
> - TRACE("()\n");
> - return 0;
> -}
> -
> DWORD WINAPI OSS_auxMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
> DWORD_PTR dwParam1, DWORD_PTR dwParam2);
>
> @@ -225,29 +205,28 @@ static DWORD AUX_SetVolume(WORD wDevID, DWORD dwParam)
> DWORD WINAPI OSS_auxMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
> DWORD_PTR dwParam1, DWORD_PTR dwParam2)
> {
> + struct aux_message_params params;
> + UINT err;
> +
> TRACE("(%04X, %04X, %08lX, %08lX, %08lX);\n",
> wDevID, wMsg, dwUser, dwParam1, dwParam2);
>
> switch (wMsg) {
> - case DRVM_INIT:
> - return OSS_AuxInit();
> - case DRVM_EXIT:
> - return OSS_AuxExit();
> - case DRVM_ENABLE:
> - case DRVM_DISABLE:
> - /* FIXME: Pretend this is supported */
> - return 0;
> case AUXDM_GETDEVCAPS:
> return AUX_GetDevCaps(wDevID, (LPAUXCAPSW)dwParam1, dwParam2);
> - case AUXDM_GETNUMDEVS:
> - TRACE("return %d;\n", NumDev);
> - return NumDev;
> case AUXDM_GETVOLUME:
> return AUX_GetVolume(wDevID, (LPDWORD)dwParam1);
> case AUXDM_SETVOLUME:
> return AUX_SetVolume(wDevID, dwParam1);
> - default:
> - WARN("unknown message !\n");
> }
> - return MMSYSERR_NOTSUPPORTED;
> +
> + params.dev_id = wDevID;
> + params.msg = wMsg;
> + params.user = dwUser;
> + params.param_1 = dwParam1;
> + params.param_2 = dwParam2;
> + params.err = &err;
> + OSS_CALL(aux_message, ¶ms);
> +
> + return err;
> }
> diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c
> index a5aea9ee724..d469bbebb4e 100644
> --- a/dlls/wineoss.drv/oss.c
> +++ b/dlls/wineoss.drv/oss.c
> @@ -38,6 +38,7 @@
> #include "winternl.h"
> #include "initguid.h"
> #include "audioclient.h"
> +#include "mmddk.h"
>
> #include "wine/debug.h"
> #include "wine/unixlib.h"
> @@ -1380,6 +1381,67 @@ static NTSTATUS is_started(void *args)
> return oss_unlock_result(stream, ¶ms->result, stream->playing ? S_OK : S_FALSE);
> }
>
> +/* Aux driver */
> +
> +static unsigned int num_aux;
> +
> +#define MIXER_DEV "/dev/mixer"
> +
> +static UINT aux_init(void)
> +{
> + int mixer;
> +
> + TRACE("()\n");
> +
> + if ((mixer = open(MIXER_DEV, O_RDWR)) < 0)
> + {
> + WARN("mixer device not available !\n");
> + num_aux = 0;
> + }
> + else
> + {
> + close(mixer);
> + num_aux = 6;
> + }
> + return 0;
> +}
> +
> +static UINT aux_exit(void)
> +{
> + TRACE("()\n");
> + return 0;
> +}
> +
> +static NTSTATUS aux_message(void *args)
> +{
> + struct aux_message_params *params = args;
> +
> + switch (params->msg)
> + {
> + case DRVM_INIT:
> + *params->err = aux_init();
> + break;
> + case DRVM_EXIT:
> + *params->err = aux_exit();
> + break;
> + case DRVM_ENABLE:
> + case DRVM_DISABLE:
> + /* FIXME: Pretend this is supported */
> + *params->err = 0;
> + break;
> + case AUXDM_GETNUMDEVS:
> + TRACE("return %d;\n", num_aux);
> + *params->err = num_aux;
> + break;
> + default:
> + WARN("unknown message !\n");
> + *params->err = MMSYSERR_NOTSUPPORTED;
> + break;
> + }
> +
> + return STATUS_SUCCESS;
> +}
> +
> unixlib_entry_t __wine_unix_call_funcs[] =
> {
> test_connect,
> @@ -1409,4 +1471,5 @@ unixlib_entry_t __wine_unix_call_funcs[] =
> midi_out_message,
> midi_in_message,
> midi_notify_wait,
> + aux_message,
> };
> diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h
> index 6a7dc9288d9..25e9a7007b3 100644
> --- a/dlls/wineoss.drv/unixlib.h
> +++ b/dlls/wineoss.drv/unixlib.h
> @@ -250,6 +250,16 @@ struct midi_notify_wait_params
> struct notify_context *notify;
> };
>
> +struct aux_message_params
> +{
> + UINT dev_id;
> + UINT msg;
> + UINT_PTR user;
> + UINT_PTR param_1;
> + UINT_PTR param_2;
> + UINT *err;
> +};
> +
> enum oss_funcs
> {
> oss_test_connect,
> @@ -279,6 +289,7 @@ enum oss_funcs
> oss_midi_out_message,
> oss_midi_in_message,
> oss_midi_notify_wait,
> + oss_aux_message,
> };
>
> NTSTATUS midi_release(void *args) DECLSPEC_HIDDEN;
> --
> 2.25.1
>
>
More information about the wine-devel
mailing list