Signed-off-by: Andrew Eikum aeikum@codeweavers.com
On Tue, May 03, 2022 at 07:42:29AM +0100, Huw Davies wrote:
Signed-off-by: Huw Davies huw@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