1
0
mirror of https://github.com/wine-mirror/wine synced 2024-07-08 03:45:57 +00:00

xactengine3_7: Return error on invalid notification value.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
This commit is contained in:
Alistair Leslie-Hughes 2022-07-31 14:23:42 +10:00 committed by Alexandre Julliard
parent d1c08b1714
commit e43288348d
2 changed files with 26 additions and 0 deletions

View File

@ -208,6 +208,24 @@ static void test_notifications(void)
hr = IXACT3Engine_Initialize(engine, &params);
ok(hr == S_OK, "Cannot initialize engine, hr %#lx\n", hr);
notification_desc.type = 0;
notification_desc.flags = 0;
notification_desc.pvContext = &prepared_data;
hr = IXACT3Engine_RegisterNotification(engine, &notification_desc);
ok(hr == E_INVALIDARG, "got hr %#lx\n", hr);
hr = IXACT3Engine_UnRegisterNotification(engine, &notification_desc);
ok(hr == S_OK, "got hr %#lx\n", hr);
notification_desc.type = XACTNOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT + 1;
notification_desc.flags = 0;
notification_desc.pvContext = &prepared_data;
hr = IXACT3Engine_RegisterNotification(engine, &notification_desc);
ok(hr == E_INVALIDARG, "got hr %#lx\n", hr);
hr = IXACT3Engine_UnRegisterNotification(engine, &notification_desc);
ok(hr == S_OK, "got hr %#lx\n", hr);
prepared_data.type = XACTNOTIFICATIONTYPE_WAVEBANKPREPARED;
prepared_data.thread_id = GetCurrentThreadId();
notification_desc.type = XACTNOTIFICATIONTYPE_WAVEBANKPREPARED;

View File

@ -1517,6 +1517,10 @@ static HRESULT WINAPI IXACT3EngineImpl_RegisterNotification(IXACT3Engine *iface,
TRACE("(%p)->(%p)\n", This, pNotificationDesc);
if (pNotificationDesc->type < XACTNOTIFICATIONTYPE_CUEPREPARED ||
pNotificationDesc->type > XACTNOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT)
return E_INVALIDARG;
unwrap_notificationdesc(&fdesc, pNotificationDesc);
This->contexts[pNotificationDesc->type] = pNotificationDesc->pvContext;
fdesc.pvContext = This;
@ -1531,6 +1535,10 @@ static HRESULT WINAPI IXACT3EngineImpl_UnRegisterNotification(IXACT3Engine *ifac
TRACE("(%p)->(%p)\n", This, pNotificationDesc);
if (pNotificationDesc->type < XACTNOTIFICATIONTYPE_CUEPREPARED ||
pNotificationDesc->type > XACTNOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT)
return S_OK;
unwrap_notificationdesc(&fdesc, pNotificationDesc);
fdesc.pvContext = This;
return FACTAudioEngine_UnRegisterNotification(This->fact_engine, &fdesc);