Follow-up to !600.
-- v2: wineoss: Switch to mmdevapi's unixlib.h. wineoss: Adapt "get_position_params" struct to mmdevapi's. wineoss: Adapt "get_frequency_params" struct to mmdevapi's. wineoss: Adapt "create_stream_params" struct to mmdevapi's. wineoss: Adapt "test_connect_params" struct to mmdevapi's. wineoss: Drop "oss_" prefix in unixlib enum, apply it to the functions instead. mmdevapi: Integrate wineoss's additions in unixlib.h.
From: Davide Beatrici git@davidebeatrici.dev
--- dlls/mmdevapi/mmdevapi.h | 11 ++--------- dlls/mmdevapi/unixlib.h | 21 ++++++++++++++++++++- dlls/winealsa.drv/alsa.c | 2 ++ dlls/winealsa.drv/mmdevdrv.c | 8 -------- dlls/winepulse.drv/mmdevdrv.c | 12 ++---------- dlls/winepulse.drv/pulse.c | 12 +++++++----- 6 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/dlls/mmdevapi/mmdevapi.h b/dlls/mmdevapi/mmdevapi.h index db91e333cc8..d694a3930aa 100644 --- a/dlls/mmdevapi/mmdevapi.h +++ b/dlls/mmdevapi/mmdevapi.h @@ -16,20 +16,13 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
+#include "unixlib.h" + #include <wine/list.h>
extern HRESULT MMDevEnum_Create(REFIID riid, void **ppv) DECLSPEC_HIDDEN; extern void MMDevEnum_Free(void) DECLSPEC_HIDDEN;
- -/* Changes to this enum must be synced in drivers. */ -enum _DriverPriority { - Priority_Unavailable = 0, /* driver won't work */ - Priority_Low, /* driver may work, but unlikely */ - Priority_Neutral, /* driver makes no judgment */ - Priority_Preferred /* driver thinks it's correct */ -}; - typedef struct _DriverFuncs { HMODULE module; WCHAR module_name[64]; diff --git a/dlls/mmdevapi/unixlib.h b/dlls/mmdevapi/unixlib.h index 163272c4398..97a35ffbc4d 100644 --- a/dlls/mmdevapi/unixlib.h +++ b/dlls/mmdevapi/unixlib.h @@ -22,6 +22,14 @@
typedef UINT64 stream_handle;
+enum driver_priority +{ + Priority_Unavailable = 0, /* driver won't work */ + Priority_Low, /* driver may work, but unlikely */ + Priority_Neutral, /* driver makes no judgment */ + Priority_Preferred /* driver thinks it's correct */ +}; + struct endpoint { unsigned int name; @@ -211,7 +219,7 @@ struct set_event_handle_params struct test_connect_params { const char *name; - HRESULT result; + enum driver_priority priority; };
struct is_started_params @@ -273,6 +281,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 unix_funcs { process_attach, @@ -307,4 +325,5 @@ enum unix_funcs midi_out_message, midi_in_message, midi_notify_wait, + aux_message, }; diff --git a/dlls/winealsa.drv/alsa.c b/dlls/winealsa.drv/alsa.c index 7ac404fd6a4..c3daf25c85e 100644 --- a/dlls/winealsa.drv/alsa.c +++ b/dlls/winealsa.drv/alsa.c @@ -2463,6 +2463,7 @@ unixlib_entry_t __wine_unix_call_funcs[] = alsa_midi_out_message, alsa_midi_in_message, alsa_midi_notify_wait, + NULL, };
#ifdef _WIN64 @@ -2880,6 +2881,7 @@ unixlib_entry_t __wine_unix_call_wow64_funcs[] = alsa_wow64_midi_out_message, alsa_wow64_midi_in_message, alsa_wow64_midi_notify_wait, + NULL, };
#endif /* _WIN64 */ diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c index 8c3d4c0340f..ad322ccfa96 100644 --- a/dlls/winealsa.drv/mmdevdrv.c +++ b/dlls/winealsa.drv/mmdevdrv.c @@ -216,14 +216,6 @@ BOOL WINAPI DllMain(HINSTANCE dll, DWORD reason, void *reserved) return TRUE; }
-/* From <dlls/mmdevapi/mmdevapi.h> */ -enum DriverPriority { - Priority_Unavailable = 0, - Priority_Low, - Priority_Neutral, - Priority_Preferred -}; - int WINAPI AUDDRV_GetPriority(void) { return Priority_Neutral; diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c index 78aad939198..d6765d4e26c 100644 --- a/dlls/winepulse.drv/mmdevdrv.c +++ b/dlls/winepulse.drv/mmdevdrv.c @@ -56,14 +56,6 @@ static unixlib_handle_t pulse_handle;
#define NULL_PTR_ERR MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, RPC_X_NULL_REF_POINTER)
-/* From <dlls/mmdevapi/mmdevapi.h> */ -enum DriverPriority { - Priority_Unavailable = 0, - Priority_Low, - Priority_Neutral, - Priority_Preferred -}; - static HANDLE pulse_thread; static struct list g_sessions = LIST_INIT(g_sessions); static struct list g_devices_cache = LIST_INIT(g_devices_cache); @@ -493,10 +485,10 @@ int WINAPI AUDDRV_GetPriority(void) struct test_connect_params params; char *name;
- params.name = name = get_application_name(FALSE); + params.name = name = get_application_name(FALSE); pulse_call(test_connect, ¶ms); free(name); - return SUCCEEDED(params.result) ? Priority_Preferred : Priority_Unavailable; + return params.priority; }
static BOOL get_pulse_name_by_guid(const GUID *guid, char pulse_name[MAX_PULSE_NAME_LEN], EDataFlow *flow) diff --git a/dlls/winepulse.drv/pulse.c b/dlls/winepulse.drv/pulse.c index a75184e712a..cbd9b3b97ae 100644 --- a/dlls/winepulse.drv/pulse.c +++ b/dlls/winepulse.drv/pulse.c @@ -773,7 +773,7 @@ static NTSTATUS pulse_test_connect(void *args) pa_mainloop_free(pulse_ml); pulse_ml = NULL; pulse_unlock(); - params->result = E_FAIL; + params->priority = Priority_Unavailable; return STATUS_SUCCESS; }
@@ -839,7 +839,7 @@ static NTSTATUS pulse_test_connect(void *args)
pulse_unlock();
- params->result = S_OK; + params->priority = Priority_Preferred; return STATUS_SUCCESS;
fail: @@ -848,7 +848,7 @@ fail: pa_mainloop_free(pulse_ml); pulse_ml = NULL; pulse_unlock(); - params->result = E_FAIL; + params->priority = Priority_Unavailable; return STATUS_SUCCESS; }
@@ -2392,6 +2392,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = NULL, NULL, NULL, + NULL, };
#ifdef _WIN64 @@ -2734,14 +2735,14 @@ static NTSTATUS pulse_wow64_test_connect(void *args) struct { PTR32 name; - HRESULT result; + enum driver_priority priority; } *params32 = args; struct test_connect_params params = { .name = ULongToPtr(params32->name), }; pulse_test_connect(¶ms); - params32->result = params.result; + params32->priority = params.priority; return STATUS_SUCCESS; }
@@ -2835,6 +2836,7 @@ const unixlib_entry_t __wine_unix_call_wow64_funcs[] = NULL, NULL, NULL, + NULL, };
#endif /* _WIN64 */
From: Davide Beatrici git@davidebeatrici.dev
--- dlls/wineoss.drv/oss.c | 224 ++++++++++++++++++------------------- dlls/wineoss.drv/ossmidi.c | 20 ++-- dlls/wineoss.drv/unixlib.h | 72 ++++++------ 3 files changed, 158 insertions(+), 158 deletions(-)
diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c index 07a2a1ed7c1..4368523684d 100644 --- a/dlls/wineoss.drv/oss.c +++ b/dlls/wineoss.drv/oss.c @@ -116,7 +116,7 @@ static struct oss_stream *handle_get_stream(stream_handle h) return (struct oss_stream *)(UINT_PTR)h; }
-static NTSTATUS test_connect(void *args) +static NTSTATUS oss_test_connect(void *args) { struct test_connect_params *params = args; int mixer_fd; @@ -213,7 +213,7 @@ static void get_default_device(EDataFlow flow, char device[OSS_DEVNODE_SIZE]) return; }
-static NTSTATUS get_endpoint_ids(void *args) +static NTSTATUS oss_get_endpoint_ids(void *args) { struct get_endpoint_ids_params *params = args; oss_sysinfo sysinfo; @@ -544,7 +544,7 @@ static ULONG_PTR zero_bits(void) #endif }
-static NTSTATUS create_stream(void *args) +static NTSTATUS oss_create_stream(void *args) { struct create_stream_params *params = args; WAVEFORMATEXTENSIBLE *fmtex; @@ -633,7 +633,7 @@ exit: return STATUS_SUCCESS; }
-static NTSTATUS release_stream(void *args) +static NTSTATUS oss_release_stream(void *args) { struct release_stream_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -662,7 +662,7 @@ static NTSTATUS release_stream(void *args) return STATUS_SUCCESS; }
-static NTSTATUS start(void *args) +static NTSTATUS oss_start(void *args) { struct start_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -680,7 +680,7 @@ static NTSTATUS start(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS stop(void *args) +static NTSTATUS oss_stop(void *args) { struct stop_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -696,7 +696,7 @@ static NTSTATUS stop(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS reset(void *args) +static NTSTATUS oss_reset(void *args) { struct reset_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -869,7 +869,7 @@ static void oss_read_data(struct oss_stream *stream) } }
-static NTSTATUS timer_loop(void *args) +static NTSTATUS oss_timer_loop(void *args) { struct timer_loop_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -911,7 +911,7 @@ static NTSTATUS timer_loop(void *args) return STATUS_SUCCESS; }
-static NTSTATUS get_render_buffer(void *args) +static NTSTATUS oss_get_render_buffer(void *args) { struct get_render_buffer_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -977,7 +977,7 @@ static void oss_wrap_buffer(struct oss_stream *stream, BYTE *buffer, UINT32 writ } }
-static NTSTATUS release_render_buffer(void *args) +static NTSTATUS oss_release_render_buffer(void *args) { struct release_render_buffer_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1017,7 +1017,7 @@ static NTSTATUS release_render_buffer(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS get_capture_buffer(void *args) +static NTSTATUS oss_get_capture_buffer(void *args) { struct get_capture_buffer_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1083,7 +1083,7 @@ static NTSTATUS get_capture_buffer(void *args) return oss_unlock_result(stream, ¶ms->result, *frames ? S_OK : AUDCLNT_S_BUFFER_EMPTY); }
-static NTSTATUS release_capture_buffer(void *args) +static NTSTATUS oss_release_capture_buffer(void *args) { struct release_capture_buffer_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1111,7 +1111,7 @@ static NTSTATUS release_capture_buffer(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS is_format_supported(void *args) +static NTSTATUS oss_is_format_supported(void *args) { struct is_format_supported_params *params = args; int fd; @@ -1140,7 +1140,7 @@ static NTSTATUS is_format_supported(void *args) return STATUS_SUCCESS; }
-static NTSTATUS get_mix_format(void *args) +static NTSTATUS oss_get_mix_format(void *args) { struct get_mix_format_params *params = args; WAVEFORMATEXTENSIBLE *fmt = params->fmt; @@ -1240,7 +1240,7 @@ static NTSTATUS get_mix_format(void *args) return STATUS_SUCCESS; }
-static NTSTATUS get_buffer_size(void *args) +static NTSTATUS oss_get_buffer_size(void *args) { struct get_buffer_size_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1252,7 +1252,7 @@ static NTSTATUS get_buffer_size(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS get_latency(void *args) +static NTSTATUS oss_get_latency(void *args) { struct get_latency_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1266,7 +1266,7 @@ static NTSTATUS get_latency(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS get_current_padding(void *args) +static NTSTATUS oss_get_current_padding(void *args) { struct get_current_padding_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1278,7 +1278,7 @@ static NTSTATUS get_current_padding(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS get_next_packet_size(void *args) +static NTSTATUS oss_get_next_packet_size(void *args) { struct get_next_packet_size_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1291,7 +1291,7 @@ static NTSTATUS get_next_packet_size(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS get_frequency(void *args) +static NTSTATUS oss_get_frequency(void *args) { struct get_frequency_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1307,7 +1307,7 @@ static NTSTATUS get_frequency(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS get_position(void *args) +static NTSTATUS oss_get_position(void *args) { struct get_position_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1351,7 +1351,7 @@ static NTSTATUS get_position(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS set_volumes(void *args) +static NTSTATUS oss_set_volumes(void *args) { struct set_volumes_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1363,7 +1363,7 @@ static NTSTATUS set_volumes(void *args) return STATUS_SUCCESS; }
-static NTSTATUS set_event_handle(void *args) +static NTSTATUS oss_set_event_handle(void *args) { struct set_event_handle_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1383,7 +1383,7 @@ static NTSTATUS set_event_handle(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
-static NTSTATUS is_started(void *args) +static NTSTATUS oss_is_started(void *args) { struct is_started_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); @@ -1571,7 +1571,7 @@ static UINT aux_set_volume(WORD dev_id, UINT vol) return MMSYSERR_NOERROR; }
-static NTSTATUS aux_message(void *args) +static NTSTATUS oss_aux_message(void *args) { struct aux_message_params *params = args;
@@ -1612,41 +1612,41 @@ static NTSTATUS aux_message(void *args)
unixlib_entry_t __wine_unix_call_funcs[] = { - test_connect, - get_endpoint_ids, - create_stream, - release_stream, - start, - stop, - reset, - timer_loop, - get_render_buffer, - release_render_buffer, - get_capture_buffer, - release_capture_buffer, - is_format_supported, - get_mix_format, - get_buffer_size, - get_latency, - get_current_padding, - get_next_packet_size, - get_frequency, - get_position, - set_volumes, - set_event_handle, - is_started, - midi_release, - midi_out_message, - midi_in_message, - midi_notify_wait, - aux_message, + oss_test_connect, + oss_get_endpoint_ids, + oss_create_stream, + oss_release_stream, + oss_start, + oss_stop, + oss_reset, + oss_timer_loop, + oss_get_render_buffer, + oss_release_render_buffer, + oss_get_capture_buffer, + oss_release_capture_buffer, + oss_is_format_supported, + oss_get_mix_format, + oss_get_buffer_size, + oss_get_latency, + oss_get_current_padding, + oss_get_next_packet_size, + oss_get_frequency, + oss_get_position, + oss_set_volumes, + oss_set_event_handle, + oss_is_started, + oss_midi_release, + oss_midi_out_message, + oss_midi_in_message, + oss_midi_notify_wait, + oss_aux_message, };
#ifdef _WIN64
typedef UINT PTR32;
-static NTSTATUS wow64_get_endpoint_ids(void *args) +static NTSTATUS oss_wow64_get_endpoint_ids(void *args) { struct { @@ -1663,7 +1663,7 @@ static NTSTATUS wow64_get_endpoint_ids(void *args) .endpoints = ULongToPtr(params32->endpoints), .size = params32->size }; - get_endpoint_ids(¶ms); + oss_get_endpoint_ids(¶ms); params32->size = params.size; params32->result = params.result; params32->num = params.num; @@ -1671,7 +1671,7 @@ static NTSTATUS wow64_get_endpoint_ids(void *args) return STATUS_SUCCESS; }
-static NTSTATUS wow64_create_stream(void *args) +static NTSTATUS oss_wow64_create_stream(void *args) { struct { @@ -1696,12 +1696,12 @@ static NTSTATUS wow64_create_stream(void *args) .fmt = ULongToPtr(params32->fmt), .stream = ULongToPtr(params32->stream) }; - create_stream(¶ms); + oss_create_stream(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_release_stream(void *args) +static NTSTATUS oss_wow64_release_stream(void *args) { struct { @@ -1714,12 +1714,12 @@ static NTSTATUS wow64_release_stream(void *args) .stream = params32->stream, .timer_thread = ULongToHandle(params32->timer_thread) }; - release_stream(¶ms); + oss_release_stream(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_get_render_buffer(void *args) +static NTSTATUS oss_wow64_get_render_buffer(void *args) { struct { @@ -1735,13 +1735,13 @@ static NTSTATUS wow64_get_render_buffer(void *args) .frames = params32->frames, .data = &data }; - get_render_buffer(¶ms); + oss_get_render_buffer(¶ms); params32->result = params.result; *(unsigned int *)ULongToPtr(params32->data) = PtrToUlong(data); return STATUS_SUCCESS; }
-static NTSTATUS wow64_get_capture_buffer(void *args) +static NTSTATUS oss_wow64_get_capture_buffer(void *args) { struct { @@ -1763,13 +1763,13 @@ static NTSTATUS wow64_get_capture_buffer(void *args) .devpos = ULongToPtr(params32->devpos), .qpcpos = ULongToPtr(params32->qpcpos) }; - get_capture_buffer(¶ms); + oss_get_capture_buffer(¶ms); params32->result = params.result; *(unsigned int *)ULongToPtr(params32->data) = PtrToUlong(data); return STATUS_SUCCESS; };
-static NTSTATUS wow64_is_format_supported(void *args) +static NTSTATUS oss_wow64_is_format_supported(void *args) { struct { @@ -1788,12 +1788,12 @@ static NTSTATUS wow64_is_format_supported(void *args) .fmt_in = ULongToPtr(params32->fmt_in), .fmt_out = ULongToPtr(params32->fmt_out) }; - is_format_supported(¶ms); + oss_is_format_supported(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_get_mix_format(void *args) +static NTSTATUS oss_wow64_get_mix_format(void *args) { struct { @@ -1808,12 +1808,12 @@ static NTSTATUS wow64_get_mix_format(void *args) .flow = params32->flow, .fmt = ULongToPtr(params32->fmt) }; - get_mix_format(¶ms); + oss_get_mix_format(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_get_buffer_size(void *args) +static NTSTATUS oss_wow64_get_buffer_size(void *args) { struct { @@ -1826,12 +1826,12 @@ static NTSTATUS wow64_get_buffer_size(void *args) .stream = params32->stream, .size = ULongToPtr(params32->size) }; - get_buffer_size(¶ms); + oss_get_buffer_size(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_get_latency(void *args) +static NTSTATUS oss_wow64_get_latency(void *args) { struct { @@ -1844,12 +1844,12 @@ static NTSTATUS wow64_get_latency(void *args) .stream = params32->stream, .latency = ULongToPtr(params32->latency) }; - get_latency(¶ms); + oss_get_latency(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_get_current_padding(void *args) +static NTSTATUS oss_wow64_get_current_padding(void *args) { struct { @@ -1862,12 +1862,12 @@ static NTSTATUS wow64_get_current_padding(void *args) .stream = params32->stream, .padding = ULongToPtr(params32->padding) }; - get_current_padding(¶ms); + oss_get_current_padding(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_get_next_packet_size(void *args) +static NTSTATUS oss_wow64_get_next_packet_size(void *args) { struct { @@ -1880,12 +1880,12 @@ static NTSTATUS wow64_get_next_packet_size(void *args) .stream = params32->stream, .frames = ULongToPtr(params32->frames) }; - get_next_packet_size(¶ms); + oss_get_next_packet_size(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_get_frequency(void *args) +static NTSTATUS oss_wow64_get_frequency(void *args) { struct { @@ -1898,12 +1898,12 @@ static NTSTATUS wow64_get_frequency(void *args) .stream = params32->stream, .frequency = ULongToPtr(params32->frequency) }; - get_frequency(¶ms); + oss_get_frequency(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_get_position(void *args) +static NTSTATUS oss_wow64_get_position(void *args) { struct { @@ -1918,12 +1918,12 @@ static NTSTATUS wow64_get_position(void *args) .position = ULongToPtr(params32->position), .qpctime = ULongToPtr(params32->qpctime) }; - get_position(¶ms); + oss_get_position(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_set_volumes(void *args) +static NTSTATUS oss_wow64_set_volumes(void *args) { struct { @@ -1939,10 +1939,10 @@ static NTSTATUS wow64_set_volumes(void *args) .volumes = ULongToPtr(params32->volumes), .session_volumes = ULongToPtr(params32->session_volumes) }; - return set_volumes(¶ms); + return oss_set_volumes(¶ms); }
-static NTSTATUS wow64_set_event_handle(void *args) +static NTSTATUS oss_wow64_set_event_handle(void *args) { struct { @@ -1956,12 +1956,12 @@ static NTSTATUS wow64_set_event_handle(void *args) .event = ULongToHandle(params32->event) };
- set_event_handle(¶ms); + oss_set_event_handle(¶ms); params32->result = params.result; return STATUS_SUCCESS; }
-static NTSTATUS wow64_aux_message(void *args) +static NTSTATUS oss_wow64_aux_message(void *args) { struct { @@ -1981,39 +1981,39 @@ static NTSTATUS wow64_aux_message(void *args) .param_2 = params32->param_2, .err = ULongToPtr(params32->err), }; - return aux_message(¶ms); + return oss_aux_message(¶ms); }
unixlib_entry_t __wine_unix_call_wow64_funcs[] = { - test_connect, - wow64_get_endpoint_ids, - wow64_create_stream, - wow64_release_stream, - start, - stop, - reset, - timer_loop, - wow64_get_render_buffer, - release_render_buffer, - wow64_get_capture_buffer, - release_capture_buffer, - wow64_is_format_supported, - wow64_get_mix_format, - wow64_get_buffer_size, - wow64_get_latency, - wow64_get_current_padding, - wow64_get_next_packet_size, - wow64_get_frequency, - wow64_get_position, - wow64_set_volumes, - wow64_set_event_handle, - is_started, - midi_release, - wow64_midi_out_message, - wow64_midi_in_message, - wow64_midi_notify_wait, - wow64_aux_message, + oss_test_connect, + oss_wow64_get_endpoint_ids, + oss_wow64_create_stream, + oss_wow64_release_stream, + oss_start, + oss_stop, + oss_reset, + oss_timer_loop, + oss_wow64_get_render_buffer, + oss_release_render_buffer, + oss_wow64_get_capture_buffer, + oss_release_capture_buffer, + oss_wow64_is_format_supported, + oss_wow64_get_mix_format, + oss_wow64_get_buffer_size, + oss_wow64_get_latency, + oss_wow64_get_current_padding, + oss_wow64_get_next_packet_size, + oss_wow64_get_frequency, + oss_wow64_get_position, + oss_wow64_set_volumes, + oss_wow64_set_event_handle, + oss_is_started, + oss_midi_release, + oss_wow64_midi_out_message, + oss_wow64_midi_in_message, + oss_wow64_midi_notify_wait, + oss_wow64_aux_message, };
#endif /* _WIN64 */ diff --git a/dlls/wineoss.drv/ossmidi.c b/dlls/wineoss.drv/ossmidi.c index 1fd9cc216a1..f04f6212bf4 100644 --- a/dlls/wineoss.drv/ossmidi.c +++ b/dlls/wineoss.drv/ossmidi.c @@ -522,7 +522,7 @@ static UINT midi_exit(void) return 0; }
-NTSTATUS midi_release(void *args) +NTSTATUS oss_midi_release(void *args) { /* stop the notify_wait thread */ notify_post(NULL); @@ -1685,7 +1685,7 @@ static UINT midi_in_reset(WORD dev_id, struct notify_context *notify) return err; }
-NTSTATUS midi_out_message(void *args) +NTSTATUS oss_midi_out_message(void *args) { struct midi_out_message_params *params = args;
@@ -1745,7 +1745,7 @@ NTSTATUS midi_out_message(void *args) return STATUS_SUCCESS; }
-NTSTATUS midi_in_message(void *args) +NTSTATUS oss_midi_in_message(void *args) { struct midi_in_message_params *params = args;
@@ -1802,7 +1802,7 @@ NTSTATUS midi_in_message(void *args) return STATUS_SUCCESS; }
-NTSTATUS midi_notify_wait(void *args) +NTSTATUS oss_midi_notify_wait(void *args) { struct midi_notify_wait_params *params = args;
@@ -1906,7 +1906,7 @@ static UINT wow64_midi_out_unprepare(WORD dev_id, struct midi_hdr32 *hdr, UINT h return MMSYSERR_NOERROR; }
-NTSTATUS wow64_midi_out_message(void *args) +NTSTATUS oss_wow64_midi_out_message(void *args) { struct { @@ -1977,7 +1977,7 @@ NTSTATUS wow64_midi_out_message(void *args) return STATUS_SUCCESS; }
- midi_out_message(¶ms); + oss_midi_out_message(¶ms);
switch (params32->msg) { @@ -2030,7 +2030,7 @@ static UINT wow64_midi_in_unprepare(WORD dev_id, struct midi_hdr32 *hdr, UINT hd return MMSYSERR_NOERROR; }
-NTSTATUS wow64_midi_in_message(void *args) +NTSTATUS oss_wow64_midi_in_message(void *args) { struct { @@ -2102,7 +2102,7 @@ NTSTATUS wow64_midi_in_message(void *args) return STATUS_SUCCESS; }
- midi_in_message(¶ms); + oss_midi_in_message(¶ms);
switch (params32->msg) { @@ -2137,7 +2137,7 @@ NTSTATUS wow64_midi_in_message(void *args) return STATUS_SUCCESS; }
-NTSTATUS wow64_midi_notify_wait(void *args) +NTSTATUS oss_wow64_midi_notify_wait(void *args) { struct { @@ -2155,7 +2155,7 @@ NTSTATUS wow64_midi_notify_wait(void *args) }; notify32->send_notify = FALSE;
- midi_notify_wait(¶ms); + oss_midi_notify_wait(¶ms);
if (!*params.quit && notify.send_notify) { diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h index e36c82ff35b..b418bb70d2d 100644 --- a/dlls/wineoss.drv/unixlib.h +++ b/dlls/wineoss.drv/unixlib.h @@ -262,47 +262,47 @@ struct aux_message_params
enum oss_funcs { - oss_test_connect, - oss_get_endpoint_ids, - oss_create_stream, - oss_release_stream, - oss_start, - oss_stop, - oss_reset, - oss_timer_loop, - oss_get_render_buffer, - oss_release_render_buffer, - oss_get_capture_buffer, - oss_release_capture_buffer, - oss_is_format_supported, - oss_get_mix_format, - oss_get_buffer_size, - oss_get_latency, - oss_get_current_padding, - oss_get_next_packet_size, - oss_get_frequency, - oss_get_position, - oss_set_volumes, - oss_set_event_handle, - oss_is_started, - oss_midi_release, - oss_midi_out_message, - oss_midi_in_message, - oss_midi_notify_wait, - oss_aux_message, + test_connect, + get_endpoint_ids, + create_stream, + release_stream, + start, + stop, + reset, + timer_loop, + get_render_buffer, + release_render_buffer, + get_capture_buffer, + release_capture_buffer, + is_format_supported, + get_mix_format, + get_buffer_size, + get_latency, + get_current_padding, + get_next_packet_size, + get_frequency, + get_position, + set_volumes, + set_event_handle, + is_started, + midi_release, + midi_out_message, + midi_in_message, + midi_notify_wait, + aux_message, };
-NTSTATUS midi_release(void *args) DECLSPEC_HIDDEN; -NTSTATUS midi_out_message(void *args) DECLSPEC_HIDDEN; -NTSTATUS midi_in_message(void *args) DECLSPEC_HIDDEN; -NTSTATUS midi_notify_wait(void *args) DECLSPEC_HIDDEN; +NTSTATUS oss_midi_release(void *args) DECLSPEC_HIDDEN; +NTSTATUS oss_midi_out_message(void *args) DECLSPEC_HIDDEN; +NTSTATUS oss_midi_in_message(void *args) DECLSPEC_HIDDEN; +NTSTATUS oss_midi_notify_wait(void *args) DECLSPEC_HIDDEN;
#ifdef _WIN64 -NTSTATUS wow64_midi_out_message(void *args) DECLSPEC_HIDDEN; -NTSTATUS wow64_midi_in_message(void *args) DECLSPEC_HIDDEN; -NTSTATUS wow64_midi_notify_wait(void *args) DECLSPEC_HIDDEN; +NTSTATUS oss_wow64_midi_out_message(void *args) DECLSPEC_HIDDEN; +NTSTATUS oss_wow64_midi_in_message(void *args) DECLSPEC_HIDDEN; +NTSTATUS oss_wow64_midi_notify_wait(void *args) DECLSPEC_HIDDEN; #endif
extern unixlib_handle_t oss_handle;
-#define OSS_CALL(func, params) __wine_unix_call(oss_handle, oss_ ## func, params) +#define OSS_CALL(func, params) __wine_unix_call(oss_handle, func, params)
From: Davide Beatrici git@davidebeatrici.dev
--- dlls/wineoss.drv/mmdevdrv.c | 2 ++ dlls/wineoss.drv/oss.c | 18 +++++++++++++++++- dlls/wineoss.drv/unixlib.h | 13 +++++++------ 3 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index dbd9c5a0490..24c2358c184 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -234,6 +234,8 @@ int WINAPI AUDDRV_GetPriority(void) { struct test_connect_params params;
+ params.name = NULL; + OSS_CALL(test_connect, ¶ms);
return params.priority; diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c index 4368523684d..079384131a7 100644 --- a/dlls/wineoss.drv/oss.c +++ b/dlls/wineoss.drv/oss.c @@ -1646,6 +1646,22 @@ unixlib_entry_t __wine_unix_call_funcs[] =
typedef UINT PTR32;
+static NTSTATUS oss_wow64_test_connect(void *args) +{ + struct + { + PTR32 name; + enum driver_priority priority; + } *params32 = args; + struct test_connect_params params = + { + .name = ULongToPtr(params32->name), + }; + oss_test_connect(¶ms); + params32->priority = params.priority; + return STATUS_SUCCESS; +} + static NTSTATUS oss_wow64_get_endpoint_ids(void *args) { struct @@ -1986,7 +2002,7 @@ static NTSTATUS oss_wow64_aux_message(void *args)
unixlib_entry_t __wine_unix_call_wow64_funcs[] = { - oss_test_connect, + oss_wow64_test_connect, oss_wow64_get_endpoint_ids, oss_wow64_create_stream, oss_wow64_release_stream, diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h index b418bb70d2d..3ed78468d27 100644 --- a/dlls/wineoss.drv/unixlib.h +++ b/dlls/wineoss.drv/unixlib.h @@ -21,17 +21,18 @@ typedef UINT64 stream_handle;
/* From <dlls/mmdevapi/mmdevapi.h> */ -enum DriverPriority +enum driver_priority { - Priority_Unavailable = 0, - Priority_Low, - Priority_Neutral, - Priority_Preferred + Priority_Unavailable = 0, /* driver won't work */ + Priority_Low, /* driver may work, but unlikely */ + Priority_Neutral, /* driver makes no judgment */ + Priority_Preferred /* driver thinks it's correct */ };
struct test_connect_params { - enum DriverPriority priority; + const char *name; + enum driver_priority priority; };
struct endpoint
From: Davide Beatrici git@davidebeatrici.dev
--- dlls/wineoss.drv/mmdevdrv.c | 2 ++ dlls/wineoss.drv/oss.c | 4 ++++ dlls/wineoss.drv/unixlib.h | 2 ++ 3 files changed, 8 insertions(+)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index 24c2358c184..091c797c20c 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -712,6 +712,7 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient3 *iface, return AUDCLNT_E_ALREADY_INITIALIZED; }
+ params.name = NULL; params.device = This->devnode; params.flow = This->dataflow; params.share = mode; @@ -719,6 +720,7 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient3 *iface, params.duration = duration; params.period = period; params.fmt = fmt; + params.channel_count = NULL; params.stream = &stream;
OSS_CALL(create_stream, ¶ms); diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c index 079384131a7..b8c61ea0517 100644 --- a/dlls/wineoss.drv/oss.c +++ b/dlls/wineoss.drv/oss.c @@ -1691,6 +1691,7 @@ static NTSTATUS oss_wow64_create_stream(void *args) { struct { + PTR32 name; PTR32 device; EDataFlow flow; AUDCLNT_SHAREMODE share; @@ -1699,10 +1700,12 @@ static NTSTATUS oss_wow64_create_stream(void *args) REFERENCE_TIME period; PTR32 fmt; HRESULT result; + PTR32 channel_count; PTR32 stream; } *params32 = args; struct create_stream_params params = { + .name = ULongToPtr(params32->name), .device = ULongToPtr(params32->device), .flow = params32->flow, .share = params32->share, @@ -1710,6 +1713,7 @@ static NTSTATUS oss_wow64_create_stream(void *args) .duration = params32->duration, .period = params32->period, .fmt = ULongToPtr(params32->fmt), + .channel_count = ULongToPtr(params32->channel_count), .stream = ULongToPtr(params32->stream) }; oss_create_stream(¶ms); diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h index 3ed78468d27..019cf66d025 100644 --- a/dlls/wineoss.drv/unixlib.h +++ b/dlls/wineoss.drv/unixlib.h @@ -53,6 +53,7 @@ struct get_endpoint_ids_params
struct create_stream_params { + const char *name; const char *device; EDataFlow flow; AUDCLNT_SHAREMODE share; @@ -61,6 +62,7 @@ struct create_stream_params REFERENCE_TIME period; const WAVEFORMATEX *fmt; HRESULT result; + UINT32 *channel_count; stream_handle *stream; };
From: Davide Beatrici git@davidebeatrici.dev
--- dlls/wineoss.drv/mmdevdrv.c | 2 +- dlls/wineoss.drv/oss.c | 6 +++--- dlls/wineoss.drv/unixlib.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index 091c797c20c..7185be958fe 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -1414,7 +1414,7 @@ static HRESULT WINAPI AudioClock_GetFrequency(IAudioClock *iface, UINT64 *freq) TRACE("(%p)->(%p)\n", This, freq);
params.stream = This->stream; - params.frequency = freq; + params.freq = freq; OSS_CALL(get_frequency, ¶ms);
return params.result; diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c index b8c61ea0517..36597e3da84 100644 --- a/dlls/wineoss.drv/oss.c +++ b/dlls/wineoss.drv/oss.c @@ -1295,7 +1295,7 @@ static NTSTATUS oss_get_frequency(void *args) { struct get_frequency_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); - UINT64 *freq = params->frequency; + UINT64 *freq = params->freq;
oss_lock(stream);
@@ -1911,12 +1911,12 @@ static NTSTATUS oss_wow64_get_frequency(void *args) { stream_handle stream; HRESULT result; - PTR32 frequency; + PTR32 freq; } *params32 = args; struct get_frequency_params params = { .stream = params32->stream, - .frequency = ULongToPtr(params32->frequency) + .freq = ULongToPtr(params32->freq) }; oss_get_frequency(¶ms); params32->result = params.result; diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h index 019cf66d025..ef72bfe71c8 100644 --- a/dlls/wineoss.drv/unixlib.h +++ b/dlls/wineoss.drv/unixlib.h @@ -180,7 +180,7 @@ struct get_frequency_params { stream_handle stream; HRESULT result; - UINT64 *frequency; + UINT64 *freq; };
struct get_position_params
From: Davide Beatrici git@davidebeatrici.dev
--- dlls/wineoss.drv/mmdevdrv.c | 3 ++- dlls/wineoss.drv/oss.c | 8 +++++--- dlls/wineoss.drv/unixlib.h | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index 7185be958fe..1b081e171b3 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -1432,7 +1432,8 @@ static HRESULT WINAPI AudioClock_GetPosition(IAudioClock *iface, UINT64 *pos, return E_POINTER;
params.stream = This->stream; - params.position = pos; + params.device = FALSE; + params.pos = pos; params.qpctime = qpctime; OSS_CALL(get_position, ¶ms);
diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c index 36597e3da84..62016f8fe58 100644 --- a/dlls/wineoss.drv/oss.c +++ b/dlls/wineoss.drv/oss.c @@ -1311,7 +1311,7 @@ static NTSTATUS oss_get_position(void *args) { struct get_position_params *params = args; struct oss_stream *stream = handle_get_stream(params->stream); - UINT64 *pos = params->position, *qpctime = params->qpctime; + UINT64 *pos = params->pos, *qpctime = params->qpctime;
oss_lock(stream);
@@ -1928,14 +1928,16 @@ static NTSTATUS oss_wow64_get_position(void *args) struct { stream_handle stream; + BOOL device; HRESULT result; - PTR32 position; + PTR32 pos; PTR32 qpctime; } *params32 = args; struct get_position_params params = { .stream = params32->stream, - .position = ULongToPtr(params32->position), + .device = params32->device, + .pos = ULongToPtr(params32->pos), .qpctime = ULongToPtr(params32->qpctime) }; oss_get_position(¶ms); diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h index ef72bfe71c8..2bd6e182d82 100644 --- a/dlls/wineoss.drv/unixlib.h +++ b/dlls/wineoss.drv/unixlib.h @@ -186,8 +186,9 @@ struct get_frequency_params struct get_position_params { stream_handle stream; + BOOL device; HRESULT result; - UINT64 *position; + UINT64 *pos; UINT64 *qpctime; };
From: Davide Beatrici git@davidebeatrici.dev
--- dlls/wineoss.drv/oss.c | 14 +- dlls/wineoss.drv/unixlib.h | 280 +------------------------------------ 2 files changed, 13 insertions(+), 281 deletions(-)
diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c index 62016f8fe58..221e4e2ff71 100644 --- a/dlls/wineoss.drv/oss.c +++ b/dlls/wineoss.drv/oss.c @@ -1612,7 +1612,9 @@ static NTSTATUS oss_aux_message(void *args)
unixlib_entry_t __wine_unix_call_funcs[] = { - oss_test_connect, + NULL, + NULL, + NULL, oss_get_endpoint_ids, oss_create_stream, oss_release_stream, @@ -1626,6 +1628,7 @@ unixlib_entry_t __wine_unix_call_funcs[] = oss_release_capture_buffer, oss_is_format_supported, oss_get_mix_format, + NULL, oss_get_buffer_size, oss_get_latency, oss_get_current_padding, @@ -1634,7 +1637,9 @@ unixlib_entry_t __wine_unix_call_funcs[] = oss_get_position, oss_set_volumes, oss_set_event_handle, + oss_test_connect, oss_is_started, + NULL, oss_midi_release, oss_midi_out_message, oss_midi_in_message, @@ -2008,7 +2013,9 @@ static NTSTATUS oss_wow64_aux_message(void *args)
unixlib_entry_t __wine_unix_call_wow64_funcs[] = { - oss_wow64_test_connect, + NULL, + NULL, + NULL, oss_wow64_get_endpoint_ids, oss_wow64_create_stream, oss_wow64_release_stream, @@ -2022,6 +2029,7 @@ unixlib_entry_t __wine_unix_call_wow64_funcs[] = oss_release_capture_buffer, oss_wow64_is_format_supported, oss_wow64_get_mix_format, + NULL, oss_wow64_get_buffer_size, oss_wow64_get_latency, oss_wow64_get_current_padding, @@ -2030,7 +2038,9 @@ unixlib_entry_t __wine_unix_call_wow64_funcs[] = oss_wow64_get_position, oss_wow64_set_volumes, oss_wow64_set_event_handle, + oss_wow64_test_connect, oss_is_started, + NULL, oss_midi_release, oss_wow64_midi_out_message, oss_wow64_midi_in_message, diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h index 2bd6e182d82..1c3ee7b93b3 100644 --- a/dlls/wineoss.drv/unixlib.h +++ b/dlls/wineoss.drv/unixlib.h @@ -16,285 +16,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
-#include "mmdeviceapi.h" - -typedef UINT64 stream_handle; - -/* From <dlls/mmdevapi/mmdevapi.h> */ -enum driver_priority -{ - Priority_Unavailable = 0, /* driver won't work */ - Priority_Low, /* driver may work, but unlikely */ - Priority_Neutral, /* driver makes no judgment */ - Priority_Preferred /* driver thinks it's correct */ -}; - -struct test_connect_params -{ - const char *name; - enum driver_priority priority; -}; - -struct endpoint -{ - unsigned int name; - unsigned int device; -}; - -struct get_endpoint_ids_params -{ - EDataFlow flow; - struct endpoint *endpoints; - unsigned int size; - HRESULT result; - unsigned int num; - unsigned int default_idx; -}; - -struct create_stream_params -{ - const char *name; - const char *device; - EDataFlow flow; - AUDCLNT_SHAREMODE share; - UINT flags; - REFERENCE_TIME duration; - REFERENCE_TIME period; - const WAVEFORMATEX *fmt; - HRESULT result; - UINT32 *channel_count; - stream_handle *stream; -}; - -struct release_stream_params -{ - stream_handle stream; - HANDLE timer_thread; - HRESULT result; -}; - -struct start_params -{ - stream_handle stream; - HRESULT result; -}; - -struct stop_params -{ - stream_handle stream; - HRESULT result; -}; - -struct reset_params -{ - stream_handle stream; - HRESULT result; -}; - -struct timer_loop_params -{ - stream_handle stream; -}; - -struct get_render_buffer_params -{ - stream_handle stream; - UINT32 frames; - HRESULT result; - BYTE **data; -}; - -struct release_render_buffer_params -{ - stream_handle stream; - UINT32 written_frames; - UINT flags; - HRESULT result; -}; - -struct get_capture_buffer_params -{ - stream_handle stream; - HRESULT result; - BYTE **data; - UINT32 *frames; - UINT *flags; - UINT64 *devpos; - UINT64 *qpcpos; -}; - -struct release_capture_buffer_params -{ - stream_handle stream; - UINT32 done; - HRESULT result; -}; - -struct is_format_supported_params -{ - const char *device; - EDataFlow flow; - AUDCLNT_SHAREMODE share; - const WAVEFORMATEX *fmt_in; - WAVEFORMATEXTENSIBLE *fmt_out; - HRESULT result; -}; - -struct get_mix_format_params -{ - const char *device; - EDataFlow flow; - WAVEFORMATEXTENSIBLE *fmt; - HRESULT result; -}; - -struct get_buffer_size_params -{ - stream_handle stream; - HRESULT result; - UINT32 *size; -}; - -struct get_latency_params -{ - stream_handle stream; - HRESULT result; - REFERENCE_TIME *latency; -}; - -struct get_current_padding_params -{ - stream_handle stream; - HRESULT result; - UINT32 *padding; -}; - -struct get_next_packet_size_params -{ - stream_handle stream; - HRESULT result; - UINT32 *frames; -}; - -struct get_frequency_params -{ - stream_handle stream; - HRESULT result; - UINT64 *freq; -}; - -struct get_position_params -{ - stream_handle stream; - BOOL device; - HRESULT result; - UINT64 *pos; - UINT64 *qpctime; -}; - -struct set_volumes_params -{ - stream_handle stream; - float master_volume; - const float *volumes; - const float *session_volumes; -}; - -struct set_event_handle_params -{ - stream_handle stream; - HANDLE event; - HRESULT result; -}; - -struct is_started_params -{ - stream_handle stream; - HRESULT result; -}; - -struct notify_context -{ - BOOL send_notify; - WORD dev_id; - WORD msg; - UINT_PTR param_1; - UINT_PTR param_2; - UINT_PTR callback; - UINT flags; - HANDLE device; - UINT_PTR instance; -}; - -struct midi_out_message_params -{ - UINT dev_id; - UINT msg; - UINT_PTR user; - UINT_PTR param_1; - UINT_PTR param_2; - UINT *err; - struct notify_context *notify; -}; - -struct midi_in_message_params -{ - UINT dev_id; - UINT msg; - UINT_PTR user; - UINT_PTR param_1; - UINT_PTR param_2; - UINT *err; - struct notify_context *notify; -}; - -struct midi_notify_wait_params -{ - BOOL *quit; - 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 -{ - test_connect, - get_endpoint_ids, - create_stream, - release_stream, - start, - stop, - reset, - timer_loop, - get_render_buffer, - release_render_buffer, - get_capture_buffer, - release_capture_buffer, - is_format_supported, - get_mix_format, - get_buffer_size, - get_latency, - get_current_padding, - get_next_packet_size, - get_frequency, - get_position, - set_volumes, - set_event_handle, - is_started, - midi_release, - midi_out_message, - midi_in_message, - midi_notify_wait, - aux_message, -}; +#include "../mmdevapi/unixlib.h"
NTSTATUS oss_midi_release(void *args) DECLSPEC_HIDDEN; NTSTATUS oss_midi_out_message(void *args) DECLSPEC_HIDDEN;
This merge request was approved by Huw Davies.