[PATCH 4/4] wineoss: Move MODM_RESET to the unixlib.
Andrew Eikum
aeikum at codeweavers.com
Mon Apr 25 08:34:34 CDT 2022
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
On Fri, Apr 22, 2022 at 07:08:41AM +0100, Huw Davies wrote:
> Signed-off-by: Huw Davies <huw at codeweavers.com>
> ---
> dlls/wineoss.drv/midi.c | 47 --------------------------------------
> dlls/wineoss.drv/ossmidi.c | 43 +++++++++++++++++++++++++++++++---
> dlls/wineoss.drv/unixlib.h | 14 ------------
> 3 files changed, 40 insertions(+), 64 deletions(-)
>
> diff --git a/dlls/wineoss.drv/midi.c b/dlls/wineoss.drv/midi.c
> index 8c3a2405b0f..470e8e4403d 100644
> --- a/dlls/wineoss.drv/midi.c
> +++ b/dlls/wineoss.drv/midi.c
> @@ -64,13 +64,6 @@
> WINE_DEFAULT_DEBUG_CHANNEL(midi);
>
> static WINE_MIDIIN *MidiInDev;
> -static WINE_MIDIOUT *MidiOutDev;
> -
> -/* this is the total number of MIDI out devices found (synth and port) */
> -static int MODM_NumDevs = 0;
> -/* this is the number of FM synthesizers (index from 0 to NUMFMSYNTHDEVS - 1) */
> -static int MODM_NumFMSynthDevs = 0;
> -/* the Midi ports have index from NUMFMSYNTHDEVS to NumDevs - 1 */
>
> /* this is the total number of MIDI out devices found */
> static int MIDM_NumDevs = 0;
> @@ -119,9 +112,6 @@ static LRESULT OSS_MidiInit(void)
> if (!err)
> {
> MidiInDev = params.srcs;
> - MidiOutDev = params.dests;
> - MODM_NumDevs = params.num_dests;
> - MODM_NumFMSynthDevs = params.num_synths;
> MIDM_NumDevs = params.num_srcs;
> }
> return err;
> @@ -140,10 +130,6 @@ static LRESULT OSS_MidiExit(void)
> return 1;
>
> MidiInDev = NULL;
> - MidiOutDev = NULL;
> -
> - MODM_NumDevs = 0;
> - MODM_NumFMSynthDevs = 0;
> MIDM_NumDevs = 0;
>
> return 0;
> @@ -646,37 +632,6 @@ static DWORD midStop(WORD wDevID)
> return MMSYSERR_NOERROR;
> }
>
> -/*-----------------------------------------------------------------------*/
> -
> -DWORD WINAPI OSS_modMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
> - DWORD_PTR dwParam1, DWORD_PTR dwParam2);
> -
> -/**************************************************************************
> - * modReset [internal]
> - */
> -static DWORD modReset(WORD wDevID)
> -{
> - unsigned chn;
> -
> - TRACE("(%04X);\n", wDevID);
> -
> - if (wDevID >= MODM_NumDevs) return MMSYSERR_BADDEVICEID;
> - if (!MidiOutDev[wDevID].bEnabled) return MIDIERR_NODEVICE;
> -
> - /* stop all notes */
> - /* FIXME: check if 0x78B0 is channel dependent or not. I coded it so that
> - * it's channel dependent...
> - */
> - for (chn = 0; chn < 16; chn++) {
> - /* turn off every note */
> - OSS_modMessage(wDevID, MODM_DATA, 0, 0x7800 | MIDI_CTL_CHANGE | chn, 0);
> - /* remove sustain on all channels */
> - OSS_modMessage(wDevID, MODM_DATA, 0, (CTL_SUSTAIN << 8) | MIDI_CTL_CHANGE | chn, 0);
> - }
> - /* FIXME: the LongData buffers must also be returned to the app */
> - return MMSYSERR_NOERROR;
> -}
> -
> /*======================================================================*
> * MIDI entry points *
> *======================================================================*/
> @@ -742,8 +697,6 @@ DWORD WINAPI OSS_modMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
> return OSS_MidiInit();
> case DRVM_EXIT:
> return OSS_MidiExit();
> - case MODM_RESET:
> - return modReset(wDevID);
> }
>
> params.dev_id = wDevID;
> diff --git a/dlls/wineoss.drv/ossmidi.c b/dlls/wineoss.drv/ossmidi.c
> index 4b419c2716c..ba3017a5ad7 100644
> --- a/dlls/wineoss.drv/ossmidi.c
> +++ b/dlls/wineoss.drv/ossmidi.c
> @@ -48,6 +48,17 @@
>
> #include "unixlib.h"
>
> +struct midi_dest
> +{
> + BOOL bEnabled;
> + MIDIOPENDESC midiDesc;
> + WORD wFlags;
> + MIDIHDR *lpQueueHdr;
> + void *lpExtra; /* according to port type (MIDI, FM...), extra data when needed */
> + MIDIOUTCAPSW caps;
> + int fd;
> +};
> +
> static unsigned int num_dests, num_srcs, num_synths, seq_refs;
> static struct midi_dest dests[MAX_MIDIOUTDRV];
> static struct midi_src srcs[MAX_MIDIINDRV];
> @@ -381,10 +392,7 @@ wrapup:
>
> *params->err = 0;
> params->num_srcs = num_srcs;
> - params->num_dests = num_dests;
> - params->num_synths = num_synths;
> params->srcs = srcs;
> - params->dests = dests;
>
> return STATUS_SUCCESS;
> }
> @@ -1065,6 +1073,32 @@ static UINT midi_out_get_volume(WORD dev_id, UINT *volume)
> return (dests[dev_id].caps.dwSupport & MIDICAPS_VOLUME) ? 0 : MMSYSERR_NOTSUPPORTED;
> }
>
> +static UINT midi_out_reset(WORD dev_id)
> +{
> + struct midi_dest *dest;
> + unsigned chn;
> +
> + TRACE("(%04X);\n", dev_id);
> +
> + if (dev_id >= num_dests) return MMSYSERR_BADDEVICEID;
> + dest = dests + dev_id;
> + if (!dest->bEnabled) return MIDIERR_NODEVICE;
> +
> + /* stop all notes */
> + /* FIXME: check if 0x78B0 is channel dependent or not. I coded it so that
> + * it's channel dependent...
> + */
> + for (chn = 0; chn < 16; chn++)
> + {
> + /* turn off every note */
> + midi_out_data(dev_id, 0x7800 | MIDI_CTL_CHANGE | chn);
> + /* remove sustain on all channels */
> + midi_out_data(dev_id, (CTL_SUSTAIN << 8) | MIDI_CTL_CHANGE | chn);
> + }
> + /* FIXME: the LongData buffers must also be returned to the app */
> + return MMSYSERR_NOERROR;
> +}
> +
> NTSTATUS midi_out_message(void *args)
> {
> struct midi_out_message_params *params = args;
> @@ -1108,6 +1142,9 @@ NTSTATUS midi_out_message(void *args)
> case MODM_SETVOLUME:
> *params->err = 0;
> break;
> + case MODM_RESET:
> + *params->err = midi_out_reset(params->dev_id);
> + break;
> default:
> TRACE("Unsupported message\n");
> *params->err = MMSYSERR_NOTSUPPORTED;
> diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h
> index d56e11b8d23..183f5017d04 100644
> --- a/dlls/wineoss.drv/unixlib.h
> +++ b/dlls/wineoss.drv/unixlib.h
> @@ -225,24 +225,10 @@ typedef struct midi_src
> int fd;
> } WINE_MIDIIN;
>
> -typedef struct midi_dest
> -{
> - BOOL bEnabled;
> - MIDIOPENDESC midiDesc;
> - WORD wFlags;
> - MIDIHDR *lpQueueHdr;
> - void *lpExtra; /* according to port type (MIDI, FM...), extra data when needed */
> - MIDIOUTCAPSW caps;
> - int fd;
> -} WINE_MIDIOUT;
> -
> struct midi_init_params
> {
> UINT *err;
> - unsigned int num_dests;
> unsigned int num_srcs;
> - unsigned int num_synths;
> - struct midi_dest *dests;
> struct midi_src *srcs;
> };
>
> --
> 2.25.1
>
>
More information about the wine-devel
mailing list