Huw Davies : wineoss: Move set_event_handle to the unixlib.
Alexandre Julliard
julliard at winehq.org
Fri Apr 15 15:23:15 CDT 2022
Module: wine
Branch: master
Commit: 9ced8cc9239dfadfbf4323dcdfcc292f4f5450c9
URL: https://source.winehq.org/git/wine.git/?a=commit;h=9ced8cc9239dfadfbf4323dcdfcc292f4f5450c9
Author: Huw Davies <huw at codeweavers.com>
Date: Fri Apr 15 07:59:54 2022 +0100
wineoss: Move set_event_handle to the unixlib.
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wineoss.drv/mmdevdrv.c | 23 +++++------------------
dlls/wineoss.drv/oss.c | 21 +++++++++++++++++++++
dlls/wineoss.drv/unixlib.h | 8 ++++++++
3 files changed, 34 insertions(+), 18 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c
index 77548045702..921253b62c2 100644
--- a/dlls/wineoss.drv/mmdevdrv.c
+++ b/dlls/wineoss.drv/mmdevdrv.c
@@ -994,7 +994,7 @@ static HRESULT WINAPI AudioClient_SetEventHandle(IAudioClient3 *iface,
HANDLE event)
{
ACImpl *This = impl_from_IAudioClient3(iface);
- struct oss_stream *stream = This->stream;
+ struct set_event_handle_params params;
TRACE("(%p)->(%p)\n", This, event);
@@ -1004,24 +1004,11 @@ static HRESULT WINAPI AudioClient_SetEventHandle(IAudioClient3 *iface,
if(!This->stream)
return AUDCLNT_E_NOT_INITIALIZED;
- oss_lock(stream);
-
- if(!(stream->flags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK)){
- oss_unlock(stream);
- return AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED;
- }
-
- if (stream->event){
- oss_unlock(stream);
- FIXME("called twice\n");
- return HRESULT_FROM_WIN32(ERROR_INVALID_NAME);
- }
-
- stream->event = event;
-
- oss_unlock(stream);
+ params.stream = This->stream;
+ params.event = event;
+ OSS_CALL(set_event_handle, ¶ms);
- return S_OK;
+ return params.result;
}
static HRESULT WINAPI AudioClient_GetService(IAudioClient3 *iface, REFIID riid,
diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c
index 72e917dfd76..3ea0ab42e3e 100644
--- a/dlls/wineoss.drv/oss.c
+++ b/dlls/wineoss.drv/oss.c
@@ -1043,6 +1043,26 @@ static NTSTATUS get_current_padding(void *args)
return oss_unlock_result(stream, ¶ms->result, S_OK);
}
+static NTSTATUS set_event_handle(void *args)
+{
+ struct set_event_handle_params *params = args;
+ struct oss_stream *stream = params->stream;
+
+ oss_lock(stream);
+
+ if(!(stream->flags & AUDCLNT_STREAMFLAGS_EVENTCALLBACK))
+ return oss_unlock_result(stream, ¶ms->result, AUDCLNT_E_EVENTHANDLE_NOT_EXPECTED);
+
+ if (stream->event){
+ FIXME("called twice\n");
+ return oss_unlock_result(stream, ¶ms->result, HRESULT_FROM_WIN32(ERROR_INVALID_NAME));
+ }
+
+ stream->event = params->event;
+
+ return oss_unlock_result(stream, ¶ms->result, S_OK);
+}
+
unixlib_entry_t __wine_unix_call_funcs[] =
{
test_connect,
@@ -1058,4 +1078,5 @@ unixlib_entry_t __wine_unix_call_funcs[] =
get_buffer_size,
get_latency,
get_current_padding,
+ set_event_handle,
};
diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h
index bd4b065c61e..73963b1871b 100644
--- a/dlls/wineoss.drv/unixlib.h
+++ b/dlls/wineoss.drv/unixlib.h
@@ -152,6 +152,13 @@ struct get_current_padding_params
UINT32 *padding;
};
+struct set_event_handle_params
+{
+ struct oss_stream *stream;
+ HANDLE event;
+ HRESULT result;
+};
+
enum oss_funcs
{
oss_test_connect,
@@ -167,6 +174,7 @@ enum oss_funcs
oss_get_buffer_size,
oss_get_latency,
oss_get_current_padding,
+ oss_set_event_handle,
};
extern unixlib_handle_t oss_handle;
More information about the wine-cvs
mailing list