mmdevapi/tests: Enable compilation with long types.

Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Eric Pouech 2022-03-01 08:33:07 +01:00 committed by Alexandre Julliard
parent 9b6a229b4f
commit 8e1b054be4
7 changed files with 738 additions and 739 deletions

View File

@ -1,4 +1,3 @@
EXTRADEFS = -DWINE_NO_LONG_TYPES
TESTDLL = mmdevapi.dll
IMPORTS = ole32 version user32 advapi32 winmm

File diff suppressed because it is too large Load Diff

View File

@ -42,25 +42,25 @@ START_TEST(dependency)
hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_INPROC_SERVER, &IID_IMMDeviceEnumerator, (void**)&mme);
if (FAILED(hr))
{
skip("mmdevapi not available: 0x%08x\n", hr);
skip("mmdevapi not available: 0x%08lx\n", hr);
goto cleanup;
}
hr = IMMDeviceEnumerator_GetDefaultAudioEndpoint(mme, eRender, eMultimedia, &dev);
ok(hr == S_OK || hr == E_NOTFOUND, "GetDefaultAudioEndpoint failed: 0x%08x\n", hr);
ok(hr == S_OK || hr == E_NOTFOUND, "GetDefaultAudioEndpoint failed: 0x%08lx\n", hr);
if (hr != S_OK)
{
if (hr == E_NOTFOUND)
skip("No sound card available\n");
else
skip("GetDefaultAudioEndpoint returns 0x%08x\n", hr);
skip("GetDefaultAudioEndpoint returns 0x%08lx\n", hr);
goto cleanup;
}
ok(!GetModuleHandleA("dsound.dll"), "dsound.dll was already loaded!\n");
hr = IMMDevice_Activate(dev, &IID_IDirectSound8, CLSCTX_INPROC_SERVER, NULL, (void**)&ds8);
ok(hr == S_OK, "Activating ds8 interface failed: 0x%08x\n", hr);
ok(hr == S_OK, "Activating ds8 interface failed: 0x%08lx\n", hr);
if (hr == S_OK)
{
ok(GetModuleHandleA("dsound.dll") != NULL, "dsound.dll not loaded!\n");
@ -71,7 +71,7 @@ START_TEST(dependency)
ok(!GetModuleHandleA("quartz.dll"), "quartz.dll was already loaded!\n");
hr = IMMDevice_Activate(dev, &IID_IBaseFilter, CLSCTX_INPROC_SERVER, NULL, (void**)&bf);
ok(hr == S_OK, "Activating bf failed: 0x%08x\n", hr);
ok(hr == S_OK, "Activating bf failed: 0x%08lx\n", hr);
if (hr == S_OK)
{
ok(GetModuleHandleA("quartz.dll") != NULL, "quartz.dll not loaded!\n");
@ -80,7 +80,7 @@ START_TEST(dependency)
{
CLSID clsid;
hr = IBaseFilter_GetClassID(bf, &clsid);
ok(hr == S_OK, "GetClassId failed with 0x%08x\n", hr);
ok(hr == S_OK, "GetClassId failed with 0x%08lx\n", hr);
if (hr == S_OK)
ok(IsEqualCLSID(&clsid, &CLSID_DSoundRender), "Wrong class id %s\n", wine_dbgstr_guid(&clsid));
}

View File

@ -51,17 +51,17 @@ static void test_collection(IMMDeviceEnumerator *mme, IMMDeviceCollection *col)
/* collection doesn't keep a ref on parent */
IMMDeviceEnumerator_AddRef(mme);
ref = IMMDeviceEnumerator_Release(mme);
ok(ref == 2, "Reference count on parent is %u\n", ref);
ok(ref == 2, "Reference count on parent is %lu\n", ref);
ref = IMMDeviceCollection_AddRef(col);
IMMDeviceCollection_Release(col);
ok(ref == 2, "Invalid reference count %u on collection\n", ref);
ok(ref == 2, "Invalid reference count %lu on collection\n", ref);
hr = IMMDeviceCollection_QueryInterface(col, &IID_IUnknown, NULL);
ok(hr == E_POINTER, "Null ppv returns %08x\n", hr);
ok(hr == E_POINTER, "Null ppv returns %08lx\n", hr);
hr = IMMDeviceCollection_QueryInterface(col, &IID_IUnknown, (void**)&unk);
ok(hr == S_OK, "Cannot query for IID_IUnknown: 0x%08x\n", hr);
ok(hr == S_OK, "Cannot query for IID_IUnknown: 0x%08lx\n", hr);
if (hr == S_OK)
{
ok((IUnknown*)col == unk, "Pointers are not identical %p/%p/%p\n", col, unk, mme);
@ -69,24 +69,24 @@ static void test_collection(IMMDeviceEnumerator *mme, IMMDeviceCollection *col)
}
hr = IMMDeviceCollection_QueryInterface(col, &IID_IMMDeviceCollection, (void**)&col2);
ok(hr == S_OK, "Cannot query for IID_IMMDeviceCollection: 0x%08x\n", hr);
ok(hr == S_OK, "Cannot query for IID_IMMDeviceCollection: 0x%08lx\n", hr);
if (hr == S_OK)
IMMDeviceCollection_Release(col2);
hr = IMMDeviceCollection_QueryInterface(col, &IID_IMMDeviceEnumerator, (void**)&mme2);
ok(hr == E_NOINTERFACE, "Query for IID_IMMDeviceEnumerator returned: 0x%08x\n", hr);
ok(hr == E_NOINTERFACE, "Query for IID_IMMDeviceEnumerator returned: 0x%08lx\n", hr);
if (hr == S_OK)
IMMDeviceEnumerator_Release(mme2);
hr = IMMDeviceCollection_GetCount(col, NULL);
ok(hr == E_POINTER, "GetCount returned 0x%08x\n", hr);
ok(hr == E_POINTER, "GetCount returned 0x%08lx\n", hr);
hr = IMMDeviceCollection_GetCount(col, &numdev);
ok(hr == S_OK, "GetCount returned 0x%08x\n", hr);
ok(hr == S_OK, "GetCount returned 0x%08lx\n", hr);
dev = (void*)(LONG_PTR)0x12345678;
hr = IMMDeviceCollection_Item(col, numdev, &dev);
ok(hr == E_INVALIDARG, "Asking for too high device returned 0x%08x\n", hr);
ok(hr == E_INVALIDARG, "Asking for too high device returned 0x%08lx\n", hr);
ok(dev == NULL, "Returned non-null device\n");
g_num_mmdevs = numdev;
@ -94,10 +94,10 @@ static void test_collection(IMMDeviceEnumerator *mme, IMMDeviceCollection *col)
if (numdev)
{
hr = IMMDeviceCollection_Item(col, 0, NULL);
ok(hr == E_POINTER, "Query with null pointer returned 0x%08x\n", hr);
ok(hr == E_POINTER, "Query with null pointer returned 0x%08lx\n", hr);
hr = IMMDeviceCollection_Item(col, 0, &dev);
ok(hr == S_OK, "Valid Item returned 0x%08x\n", hr);
ok(hr == S_OK, "Valid Item returned 0x%08lx\n", hr);
ok(dev != NULL, "Device is null!\n");
if (dev != NULL)
{
@ -113,7 +113,7 @@ static void test_collection(IMMDeviceEnumerator *mme, IMMDeviceCollection *col)
trace("Device found: %s\n", temp);
hr = IMMDeviceEnumerator_GetDevice(mme, id, &dev2);
ok(hr == S_OK, "GetDevice failed: %08x\n", hr);
ok(hr == S_OK, "GetDevice failed: %08lx\n", hr);
IMMDevice_Release(dev2);
@ -188,7 +188,7 @@ static HRESULT WINAPI async_activate_ActivateCompleted(
hr = IActivateAudioInterfaceAsyncOperation_GetActivateResult(op,
&async_activate_test.result_hr, &async_activate_test.result_iface);
ok(hr == S_OK,
"%s: GetActivateResult failed: %08x\n",
"%s: GetActivateResult failed: %08lx\n",
async_activate_test.msg_pfx, hr);
return S_OK;
@ -244,16 +244,16 @@ static void test_ActivateAudioInterfaceAsync(void)
EnterCriticalSection(&async_activate_test.lock);
hr = pActivateAudioInterfaceAsync(L"winetest_bogus", &IID_IAudioClient3, NULL, &async_activate_done, &async_activate_test.op);
ok(hr == S_OK, "ActivateAudioInterfaceAsync failed: %08x\n", hr);
ok(hr == S_OK, "ActivateAudioInterfaceAsync failed: %08lx\n", hr);
LeaveCriticalSection(&async_activate_test.lock);
IActivateAudioInterfaceAsyncOperation_Release(async_activate_test.op);
dr = WaitForSingleObject(async_activate_test.evt, 1000); /* wait for all refs other than our own to be released */
ok(dr == WAIT_OBJECT_0, "Timed out waiting for async activate to complete\n");
ok(async_activate_test.ref == 1, "ActivateAudioInterfaceAsync leaked a handler ref: %u\n", async_activate_test.ref);
ok(async_activate_test.ref == 1, "ActivateAudioInterfaceAsync leaked a handler ref: %lu\n", async_activate_test.ref);
ok(async_activate_test.result_hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
"mmdevice activation gave wrong result: %08x\n", async_activate_test.result_hr);
"mmdevice activation gave wrong result: %08lx\n", async_activate_test.result_hr);
ok(async_activate_test.result_iface == NULL, "Got non-NULL iface pointer: %p\n", async_activate_test.result_iface);
@ -263,16 +263,16 @@ static void test_ActivateAudioInterfaceAsync(void)
EnterCriticalSection(&async_activate_test.lock);
hr = pActivateAudioInterfaceAsync(g_device_path, &IID_IAudioClient3, NULL, &async_activate_done, &async_activate_test.op);
ok(hr == S_OK, "ActivateAudioInterfaceAsync failed: %08x\n", hr);
ok(hr == S_OK, "ActivateAudioInterfaceAsync failed: %08lx\n", hr);
LeaveCriticalSection(&async_activate_test.lock);
IActivateAudioInterfaceAsyncOperation_Release(async_activate_test.op);
dr = WaitForSingleObject(async_activate_test.evt, 1000);
ok(dr == WAIT_OBJECT_0, "Timed out waiting for async activate to complete\n");
ok(async_activate_test.ref == 1, "ActivateAudioInterfaceAsync leaked a handler ref: %u\n", async_activate_test.ref);
ok(async_activate_test.ref == 1, "ActivateAudioInterfaceAsync leaked a handler ref: %lu\n", async_activate_test.ref);
ok(async_activate_test.result_hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND),
"mmdevice activation gave wrong result: %08x\n", async_activate_test.result_hr);
"mmdevice activation gave wrong result: %08lx\n", async_activate_test.result_hr);
ok(async_activate_test.result_iface == NULL, "Got non-NULL iface pointer: %p\n", async_activate_test.result_iface);
}
@ -283,7 +283,7 @@ static void test_ActivateAudioInterfaceAsync(void)
EnterCriticalSection(&async_activate_test.lock);
hr = pActivateAudioInterfaceAsync(path, &IID_IAudioClient3, NULL, &async_activate_done, &async_activate_test.op);
ok(hr == S_OK, "ActivateAudioInterfaceAsync failed: %08x\n", hr);
ok(hr == S_OK, "ActivateAudioInterfaceAsync failed: %08lx\n", hr);
LeaveCriticalSection(&async_activate_test.lock);
IActivateAudioInterfaceAsyncOperation_Release(async_activate_test.op);
@ -294,14 +294,14 @@ static void test_ActivateAudioInterfaceAsync(void)
ok(async_activate_test.result_hr == S_OK ||
(g_num_mmdevs == 0 && async_activate_test.result_hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)) || /* no devices */
broken(async_activate_test.result_hr == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)), /* win8 doesn't support DEVINTERFACE_AUDIO_RENDER */
"mmdevice activation gave wrong result: %08x\n", async_activate_test.result_hr);
"mmdevice activation gave wrong result: %08lx\n", async_activate_test.result_hr);
if(async_activate_test.result_hr == S_OK){
ok(async_activate_test.result_iface != NULL, "Got NULL iface pointer on success?\n");
/* returned iface should be the IID we requested */
hr = IUnknown_QueryInterface(async_activate_test.result_iface, &IID_IAudioClient3, (void**)&ac3);
ok(hr == S_OK, "Failed to query IAudioClient3: %08x\n", hr);
ok(hr == S_OK, "Failed to query IAudioClient3: %08lx\n", hr);
ok(async_activate_test.result_iface == (IUnknown*)ac3,
"Activated interface other than IAudioClient3!\n");
IAudioClient3_Release(ac3);
@ -396,17 +396,17 @@ START_TEST(mmdevenum)
hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_INPROC_SERVER, &IID_IMMDeviceEnumerator, (void**)&mme);
if (FAILED(hr))
{
skip("mmdevapi not available: 0x%08x\n", hr);
skip("mmdevapi not available: 0x%08lx\n", hr);
return;
}
/* Odd behavior.. bug? */
ref = IMMDeviceEnumerator_AddRef(mme);
ok(ref == 3, "Invalid reference count after incrementing: %u\n", ref);
ok(ref == 3, "Invalid reference count after incrementing: %lu\n", ref);
IMMDeviceEnumerator_Release(mme);
hr = IMMDeviceEnumerator_QueryInterface(mme, &IID_IUnknown, (void**)&unk);
ok(hr == S_OK, "returned 0x%08x\n", hr);
ok(hr == S_OK, "returned 0x%08lx\n", hr);
if (hr != S_OK) return;
ok( (LONG_PTR)mme == (LONG_PTR)unk, "Pointers are unequal %p/%p\n", unk, mme);
@ -414,39 +414,39 @@ START_TEST(mmdevenum)
/* Proving that it is static.. */
hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_INPROC_SERVER, &IID_IMMDeviceEnumerator, (void**)&mme2);
ok(hr == S_OK, "CoCreateInstance failed: 0x%08x\n", hr);
ok(hr == S_OK, "CoCreateInstance failed: 0x%08lx\n", hr);
IMMDeviceEnumerator_Release(mme2);
ok(mme == mme2, "Pointers are not equal!\n");
hr = IMMDeviceEnumerator_QueryInterface(mme, &IID_IUnknown, NULL);
ok(hr == E_POINTER, "Null pointer on QueryInterface returned %08x\n", hr);
ok(hr == E_POINTER, "Null pointer on QueryInterface returned %08lx\n", hr);
hr = IMMDeviceEnumerator_QueryInterface(mme, &GUID_NULL, (void**)&unk);
ok(!unk, "Unk not reset to null after invalid QI\n");
ok(hr == E_NOINTERFACE, "Invalid hr %08x returned on IID_NULL\n", hr);
ok(hr == E_NOINTERFACE, "Invalid hr %08lx returned on IID_NULL\n", hr);
hr = IMMDeviceEnumerator_GetDevice(mme, L"notadevice", NULL);
ok(hr == E_POINTER, "GetDevice gave wrong error: %08x\n", hr);
ok(hr == E_POINTER, "GetDevice gave wrong error: %08lx\n", hr);
hr = IMMDeviceEnumerator_GetDevice(mme, NULL, &dev);
ok(hr == E_POINTER, "GetDevice gave wrong error: %08x\n", hr);
ok(hr == E_POINTER, "GetDevice gave wrong error: %08lx\n", hr);
hr = IMMDeviceEnumerator_GetDevice(mme, L"notadevice", &dev);
ok(hr == E_INVALIDARG, "GetDevice gave wrong error: %08x\n", hr);
ok(hr == E_INVALIDARG, "GetDevice gave wrong error: %08lx\n", hr);
col = (void*)(LONG_PTR)0x12345678;
hr = IMMDeviceEnumerator_EnumAudioEndpoints(mme, 0xffff, DEVICE_STATEMASK_ALL, &col);
ok(hr == E_INVALIDARG, "Setting invalid data flow returned 0x%08x\n", hr);
ok(hr == E_INVALIDARG, "Setting invalid data flow returned 0x%08lx\n", hr);
ok(col == NULL, "Collection pointer non-null on failure\n");
hr = IMMDeviceEnumerator_EnumAudioEndpoints(mme, eAll, DEVICE_STATEMASK_ALL+1, &col);
ok(hr == E_INVALIDARG, "Setting invalid mask returned 0x%08x\n", hr);
ok(hr == E_INVALIDARG, "Setting invalid mask returned 0x%08lx\n", hr);
hr = IMMDeviceEnumerator_EnumAudioEndpoints(mme, eAll, DEVICE_STATEMASK_ALL, NULL);
ok(hr == E_POINTER, "Invalid pointer returned: 0x%08x\n", hr);
ok(hr == E_POINTER, "Invalid pointer returned: 0x%08lx\n", hr);
hr = IMMDeviceEnumerator_EnumAudioEndpoints(mme, eAll, DEVICE_STATEMASK_ALL, &col);
ok(hr == S_OK, "Valid EnumAudioEndpoints returned 0x%08x\n", hr);
ok(hr == S_OK, "Valid EnumAudioEndpoints returned 0x%08lx\n", hr);
if (hr == S_OK)
{
ok(!!col, "Returned null pointer\n");
@ -455,28 +455,28 @@ START_TEST(mmdevenum)
}
hr = IMMDeviceEnumerator_RegisterEndpointNotificationCallback(mme, NULL);
ok(hr == E_POINTER, "RegisterEndpointNotificationCallback failed: %08x\n", hr);
ok(hr == E_POINTER, "RegisterEndpointNotificationCallback failed: %08lx\n", hr);
hr = IMMDeviceEnumerator_RegisterEndpointNotificationCallback(mme, &notif);
ok(hr == S_OK, "RegisterEndpointNotificationCallback failed: %08x\n", hr);
ok(hr == S_OK, "RegisterEndpointNotificationCallback failed: %08lx\n", hr);
hr = IMMDeviceEnumerator_RegisterEndpointNotificationCallback(mme, &notif);
ok(hr == S_OK, "RegisterEndpointNotificationCallback failed: %08x\n", hr);
ok(hr == S_OK, "RegisterEndpointNotificationCallback failed: %08lx\n", hr);
hr = IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(mme, NULL);
ok(hr == E_POINTER, "UnregisterEndpointNotificationCallback failed: %08x\n", hr);
ok(hr == E_POINTER, "UnregisterEndpointNotificationCallback failed: %08lx\n", hr);
hr = IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(mme, (IMMNotificationClient*)0xdeadbeef);
ok(hr == E_NOTFOUND, "UnregisterEndpointNotificationCallback failed: %08x\n", hr);
ok(hr == E_NOTFOUND, "UnregisterEndpointNotificationCallback failed: %08lx\n", hr);
hr = IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(mme, &notif);
ok(hr == S_OK, "UnregisterEndpointNotificationCallback failed: %08x\n", hr);
ok(hr == S_OK, "UnregisterEndpointNotificationCallback failed: %08lx\n", hr);
hr = IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(mme, &notif);
ok(hr == S_OK, "UnregisterEndpointNotificationCallback failed: %08x\n", hr);
ok(hr == S_OK, "UnregisterEndpointNotificationCallback failed: %08lx\n", hr);
hr = IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(mme, &notif);
ok(hr == E_NOTFOUND, "UnregisterEndpointNotificationCallback failed: %08x\n", hr);
ok(hr == E_NOTFOUND, "UnregisterEndpointNotificationCallback failed: %08lx\n", hr);
IMMDeviceEnumerator_Release(mme);

View File

@ -45,7 +45,7 @@ static void test_propertystore(IPropertyStore *store)
pv.vt = VT_EMPTY;
hr = IPropertyStore_GetValue(store, &PKEY_AudioEndpoint_GUID, &pv);
ok(hr == S_OK, "Failed with %08x\n", hr);
ok(hr == S_OK, "Failed with %08lx\n", hr);
ok(pv.vt == VT_LPWSTR, "Value should be %i, is %i\n", VT_LPWSTR, pv.vt);
if (hr == S_OK && pv.vt == VT_LPWSTR)
{
@ -56,19 +56,19 @@ static void test_propertystore(IPropertyStore *store)
pv.vt = VT_EMPTY;
hr = IPropertyStore_GetValue(store, (const PROPERTYKEY*)&DEVPKEY_DeviceInterface_FriendlyName, &pv);
ok(hr == S_OK, "Failed with %08x\n", hr);
ok(hr == S_OK, "Failed with %08lx\n", hr);
ok(pv.vt == VT_LPWSTR && pv.pwszVal, "FriendlyName value had wrong type: 0x%x or was NULL\n", pv.vt);
PropVariantClear(&pv);
pv.vt = VT_EMPTY;
hr = IPropertyStore_GetValue(store, (const PROPERTYKEY*)&DEVPKEY_DeviceInterface_Enabled, &pv);
ok(hr == S_OK, "Failed with %08x\n", hr);
ok(hr == S_OK, "Failed with %08lx\n", hr);
ok(pv.vt == VT_EMPTY, "Key should not be found\n");
PropVariantClear(&pv);
pv.vt = VT_EMPTY;
hr = IPropertyStore_GetValue(store, (const PROPERTYKEY*)&DEVPKEY_DeviceInterface_ClassGuid, &pv);
ok(hr == S_OK, "Failed with %08x\n", hr);
ok(hr == S_OK, "Failed with %08lx\n", hr);
ok(pv.vt == VT_EMPTY, "Key should not be found\n");
PropVariantClear(&pv);
}
@ -84,7 +84,7 @@ static void test_deviceinterface(IPropertyStore *store)
pv.vt = VT_EMPTY;
hr = IPropertyStore_GetValue(store, &deviceinterface_key, &pv);
ok(hr == S_OK, "GetValue failed: %08x\n", hr);
ok(hr == S_OK, "GetValue failed: %08lx\n", hr);
ok(pv.vt == VT_LPWSTR, "Got wrong variant type: 0x%x\n", pv.vt);
trace("device interface: %s\n", wine_dbgstr_w(pv.pwszVal));
PropVariantClear(&pv);
@ -103,12 +103,12 @@ static void test_getat(IPropertyStore *store)
hr = IPropertyStore_GetCount(store, &propcount);
ok(hr == S_OK, "Failed with %08x\n", hr);
ok(propcount > 0, "Propcount %d should be greater than zero\n", propcount);
ok(hr == S_OK, "Failed with %08lx\n", hr);
ok(propcount > 0, "Propcount %ld should be greater than zero\n", propcount);
for (prop = 0; prop < propcount; prop++) {
hr = IPropertyStore_GetAt(store, prop, &pkey);
ok(hr == S_OK, "Failed with %08x\n", hr);
ok(hr == S_OK, "Failed with %08lx\n", hr);
if (IsEqualPropertyKey(pkey, DEVPKEY_Device_FriendlyName))
found_name = TRUE;
if (IsEqualPropertyKey(pkey, DEVPKEY_Device_DeviceDesc))
@ -137,7 +137,7 @@ static void test_setvalue_on_wow64(IPropertyStore *store)
pv.vt = VT_EMPTY;
hr = IPropertyStore_GetValue(store, &PKEY_AudioEndpoint_GUID, &pv);
ok(hr == S_OK, "Failed to get Endpoint GUID: %08x\n", hr);
ok(hr == S_OK, "Failed to get Endpoint GUID: %08lx\n", hr);
guidW = pv.pwszVal;
@ -145,7 +145,7 @@ static void test_setvalue_on_wow64(IPropertyStore *store)
pv.ulVal = 0xAB;
hr = IPropertyStore_SetValue(store, &PKEY_Bogus, &pv);
ok(hr == S_OK || hr == E_ACCESSDENIED, "SetValue failed: %08x\n", hr);
ok(hr == S_OK || hr == E_ACCESSDENIED, "SetValue failed: %08lx\n", hr);
if (hr != S_OK)
{
win_skip("Missing permission to write to registry\n");
@ -155,25 +155,25 @@ static void test_setvalue_on_wow64(IPropertyStore *store)
pv.ulVal = 0x00;
hr = IPropertyStore_GetValue(store, &PKEY_Bogus, &pv);
ok(hr == S_OK, "GetValue failed: %08x\n", hr);
ok(pv.ulVal == 0xAB, "Got wrong value: 0x%x\n", pv.ulVal);
ok(hr == S_OK, "GetValue failed: %08lx\n", hr);
ok(pv.ulVal == 0xAB, "Got wrong value: 0x%lx\n", pv.ulVal);
/* should find the key in 64-bit view */
ret = RegOpenKeyExW(HKEY_LOCAL_MACHINE, software_renderW, 0, KEY_READ|KEY_WOW64_64KEY, &root);
ok(ret == ERROR_SUCCESS, "Couldn't open mmdevices Render key: %u\n", ret);
ok(ret == ERROR_SUCCESS, "Couldn't open mmdevices Render key: %lu\n", ret);
ret = RegOpenKeyExW(root, guidW, 0, KEY_READ|KEY_WOW64_64KEY, &devkey);
ok(ret == ERROR_SUCCESS, "Couldn't open mmdevice guid key: %u\n", ret);
ok(ret == ERROR_SUCCESS, "Couldn't open mmdevice guid key: %lu\n", ret);
ret = RegOpenKeyExW(devkey, L"Properties", 0, KEY_READ|KEY_WOW64_64KEY, &props);
ok(ret == ERROR_SUCCESS, "Couldn't open mmdevice property key: %u\n", ret);
ok(ret == ERROR_SUCCESS, "Couldn't open mmdevice property key: %lu\n", ret);
/* Note: the registry key exists even without calling IPropStore::Commit */
size = sizeof(regval);
ret = RegQueryValueExW(props, bogusW, NULL, &type, (LPBYTE)&regval, &size);
ok(ret == ERROR_SUCCESS, "Couldn't get bogus propertykey value: %u\n", ret);
ok(type == REG_DWORD, "Got wrong value type: %u\n", type);
ok(regval == 0xAB, "Got wrong value: 0x%x\n", regval);
ok(ret == ERROR_SUCCESS, "Couldn't get bogus propertykey value: %lu\n", ret);
ok(type == REG_DWORD, "Got wrong value type: %lu\n", type);
ok(regval == 0xAB, "Got wrong value: 0x%lx\n", regval);
RegCloseKey(props);
RegCloseKey(devkey);
@ -183,7 +183,7 @@ static void test_setvalue_on_wow64(IPropertyStore *store)
/* should NOT find the key in 32-bit view */
ret = RegOpenKeyExW(HKEY_LOCAL_MACHINE, software_renderW, 0, KEY_READ, &root);
ok(ret == ERROR_FILE_NOT_FOUND, "Wrong error when opening mmdevices Render key: %u\n", ret);
ok(ret == ERROR_FILE_NOT_FOUND, "Wrong error when opening mmdevices Render key: %lu\n", ret);
}
START_TEST(propstore)
@ -204,39 +204,39 @@ START_TEST(propstore)
hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_INPROC_SERVER, &IID_IMMDeviceEnumerator, (void**)&mme);
if (FAILED(hr))
{
skip("mmdevapi not available: 0x%08x\n", hr);
skip("mmdevapi not available: 0x%08lx\n", hr);
goto cleanup;
}
hr = IMMDeviceEnumerator_GetDefaultAudioEndpoint(mme, eRender, eMultimedia, &dev);
ok(hr == S_OK || hr == E_NOTFOUND, "GetDefaultAudioEndpoint failed: 0x%08x\n", hr);
ok(hr == S_OK || hr == E_NOTFOUND, "GetDefaultAudioEndpoint failed: 0x%08lx\n", hr);
if (hr != S_OK)
{
if (hr == E_NOTFOUND)
skip("No sound card available\n");
else
skip("GetDefaultAudioEndpoint returns 0x%08x\n", hr);
skip("GetDefaultAudioEndpoint returns 0x%08lx\n", hr);
goto cleanup;
}
store = NULL;
hr = IMMDevice_OpenPropertyStore(dev, 3, &store);
ok(hr == E_INVALIDARG, "Wrong hr returned: %08x\n", hr);
ok(hr == E_INVALIDARG, "Wrong hr returned: %08lx\n", hr);
if (hr != S_OK)
/* It seems on windows returning with E_INVALIDARG doesn't
* set store to NULL, so just don't set store to non-null
* before calling this function
*/
ok(!store, "Store set to non-NULL on failure: %p/%08x\n", store, hr);
ok(!store, "Store set to non-NULL on failure: %p/%08lx\n", store, hr);
else if (store)
IPropertyStore_Release(store);
hr = IMMDevice_OpenPropertyStore(dev, STGM_READ, NULL);
ok(hr == E_POINTER, "Wrong hr returned: %08x\n", hr);
ok(hr == E_POINTER, "Wrong hr returned: %08lx\n", hr);
store = NULL;
hr = IMMDevice_OpenPropertyStore(dev, STGM_READWRITE, &store);
if(hr == E_ACCESSDENIED)
hr = IMMDevice_OpenPropertyStore(dev, STGM_READ, &store);
ok(hr == S_OK, "Opening valid store returned %08x\n", hr);
ok(hr == S_OK, "Opening valid store returned %08lx\n", hr);
if (store)
{
test_propertystore(store);

File diff suppressed because it is too large Load Diff

View File

@ -46,22 +46,22 @@ static void test_formats(void)
WAVEFORMATEX *fmt = NULL;
hr = ISpatialAudioClient_GetSupportedAudioObjectFormatEnumerator(sac, &afe);
ok(hr == S_OK, "Getting format enumerator failed: 0x%08x\n", hr);
ok(hr == S_OK, "Getting format enumerator failed: 0x%08lx\n", hr);
hr = IAudioFormatEnumerator_GetCount(afe, &format_count);
ok(hr == S_OK, "Getting format count failed: 0x%08x\n", hr);
ok(hr == S_OK, "Getting format count failed: 0x%08lx\n", hr);
ok(format_count == 1, "Got wrong format count, expected 1 got %u\n", format_count);
hr = IAudioFormatEnumerator_GetFormat(afe, 0, &fmt);
ok(hr == S_OK, "Getting format failed: 0x%08x\n", hr);
ok(hr == S_OK, "Getting format failed: 0x%08lx\n", hr);
ok(fmt != NULL, "Expected to get non-NULL format\n");
ok(fmt->wFormatTag == WAVE_FORMAT_IEEE_FLOAT, "Wrong format, expected WAVE_FORMAT_IEEE_FLOAT got %hx\n", fmt->wFormatTag);
ok(fmt->nChannels == 1, "Wrong number of channels, expected 1 got %hu\n", fmt->nChannels);
ok(fmt->nSamplesPerSec == 48000, "Wrong sample ret, expected 48000 got %u\n", fmt->nSamplesPerSec);
ok(fmt->nSamplesPerSec == 48000, "Wrong sample ret, expected 48000 got %lu\n", fmt->nSamplesPerSec);
ok(fmt->wBitsPerSample == 32, "Wrong bits per sample, expected 32 got %hu\n", fmt->wBitsPerSample);
ok(fmt->nBlockAlign == 4, "Wrong block align, expected 4 got %hu\n", fmt->nBlockAlign);
ok(fmt->nAvgBytesPerSec == 192000, "Wrong avg bytes per sec, expected 192000 got %u\n", fmt->nAvgBytesPerSec);
ok(fmt->nAvgBytesPerSec == 192000, "Wrong avg bytes per sec, expected 192000 got %lu\n", fmt->nAvgBytesPerSec);
ok(fmt->cbSize == 0, "Wrong cbSize for simple format, expected 0, got %hu\n", fmt->cbSize);
memcpy(&format, fmt, sizeof(format));
@ -160,19 +160,19 @@ static void test_stream_activation(void)
/* correct params */
fill_activation_params(&activation_params);
hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas);
ok(hr == S_OK, "Failed to activate spatial audio stream: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio stream: 0x%08lx\n", hr);
ok(ISpatialAudioObjectRenderStream_Release(sas) == 0, "Expected to release the last reference\n");
/* event handle */
fill_activation_params(&activation_params);
activation_params.EventHandle = NULL;
hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas);
ok(hr == E_INVALIDARG, "Expected lack of no EventHandle to be invalid: 0x%08x\n", hr);
ok(hr == E_INVALIDARG, "Expected lack of no EventHandle to be invalid: 0x%08lx\n", hr);
ok(sas == NULL, "Expected spatial audio stream to be set to NULL upon failed activation\n");
activation_params.EventHandle = INVALID_HANDLE_VALUE;
hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas);
ok(hr == E_INVALIDARG, "Expected INVALID_HANDLE_VALUE to be invalid: 0x%08x\n", hr);
ok(hr == E_INVALIDARG, "Expected INVALID_HANDLE_VALUE to be invalid: 0x%08lx\n", hr);
ok(sas == NULL, "Expected spatial audio stream to be set to NULL upon failed activation\n");
/* must use only queried sample rate */
@ -182,7 +182,7 @@ static void test_stream_activation(void)
wrong_format.nSamplesPerSec = 44100;
wrong_format.nAvgBytesPerSec = wrong_format.nSamplesPerSec * wrong_format.nBlockAlign;
hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas);
ok(hr == AUDCLNT_E_UNSUPPORTED_FORMAT, "Expected format to be unsupported: 0x%08x\n", hr);
ok(hr == AUDCLNT_E_UNSUPPORTED_FORMAT, "Expected format to be unsupported: 0x%08lx\n", hr);
ok(sas == NULL, "Expected spatial audio stream to be set to NULL upon failed activation\n");
/* dynamic objects are not supported */
@ -191,7 +191,7 @@ static void test_stream_activation(void)
fill_activation_params(&activation_params);
activation_params.StaticObjectTypeMask |= AudioObjectType_Dynamic;
hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas);
ok(hr == E_INVALIDARG, "Expected dynamic objects type be invalid: 0x%08x\n", hr);
ok(hr == E_INVALIDARG, "Expected dynamic objects type be invalid: 0x%08lx\n", hr);
ok(sas == NULL, "Expected spatial audio stream to be set to NULL upon failed activation\n");
}
@ -199,9 +199,9 @@ static void test_stream_activation(void)
activation_params.MaxDynamicObjectCount = max_dyn_count + 1;
hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas);
if (max_dyn_count)
ok(hr == AUDCLNT_E_UNSUPPORTED_FORMAT, "Expected dynamic object count exceeding max to be unsupported: 0x%08x\n", hr);
ok(hr == AUDCLNT_E_UNSUPPORTED_FORMAT, "Expected dynamic object count exceeding max to be unsupported: 0x%08lx\n", hr);
else
ok(hr == E_INVALIDARG, "Expected setting dynamic object count to be invalid: 0x%08x\n", hr);
ok(hr == E_INVALIDARG, "Expected setting dynamic object count to be invalid: 0x%08lx\n", hr);
/* ISpatialAudioObjectRenderStreamNotify */
fill_activation_params(&activation_params);
@ -209,7 +209,7 @@ static void test_stream_activation(void)
notify_object.ref = 0;
activation_params.NotifyObject = &notify_object.ISpatialAudioObjectRenderStreamNotify_iface;
hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas);
ok(hr == S_OK, "Failed to activate spatial audio stream: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio stream: 0x%08lx\n", hr);
ok(notify_object.ref == 1, "Expected to get increased NotifyObject's ref count\n");
ok(ISpatialAudioObjectRenderStream_Release(sas) == 0, "Expected to release the last reference\n");
ok(notify_object.ref == 0, "Expected to get lowered NotifyObject's ref count\n");
@ -233,23 +233,23 @@ static void test_audio_object_activation(void)
fill_activation_params(&activation_params);
activation_params.StaticObjectTypeMask &= ~AudioObjectType_FrontRight;
hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas);
ok(hr == S_OK, "Failed to activate spatial audio stream: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio stream: 0x%08lx\n", hr);
hr = ISpatialAudioObjectRenderStream_ActivateSpatialAudioObject(sas, AudioObjectType_FrontLeft, &sao1);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08lx\n", hr);
hr = ISpatialAudioObject_IsActive(sao1, &is_active);
todo_wine ok(hr == S_OK, "Failed to check if spatial audio object is active: 0x%08x\n", hr);
todo_wine ok(hr == S_OK, "Failed to check if spatial audio object is active: 0x%08lx\n", hr);
if (hr == S_OK)
ok(is_active, "Expected spaital audio object to be active\n");
hr = ISpatialAudioObjectRenderStream_ActivateSpatialAudioObject(sas, AudioObjectType_FrontLeft, &sao2);
ok(hr == SPTLAUDCLNT_E_OBJECT_ALREADY_ACTIVE, "Expected audio object to be already active: 0x%08x\n", hr);
ok(hr == SPTLAUDCLNT_E_OBJECT_ALREADY_ACTIVE, "Expected audio object to be already active: 0x%08lx\n", hr);
hr = ISpatialAudioObjectRenderStream_ActivateSpatialAudioObject(sas, AudioObjectType_FrontRight, &sao2);
ok(hr == SPTLAUDCLNT_E_STATIC_OBJECT_NOT_AVAILABLE, "Expected static object to be not available: 0x%08x\n", hr);
ok(hr == SPTLAUDCLNT_E_STATIC_OBJECT_NOT_AVAILABLE, "Expected static object to be not available: 0x%08lx\n", hr);
hr = ISpatialAudioObjectRenderStream_ActivateSpatialAudioObject(sas, AudioObjectType_Dynamic, &sao2);
ok(hr == SPTLAUDCLNT_E_NO_MORE_OBJECTS, "Expected to not have no more dynamic objects: 0x%08x\n", hr);
ok(hr == SPTLAUDCLNT_E_NO_MORE_OBJECTS, "Expected to not have no more dynamic objects: 0x%08lx\n", hr);
ISpatialAudioObject_Release(sao1);
ISpatialAudioObjectRenderStream_Release(sas);
@ -286,10 +286,10 @@ static void test_audio_object_buffers(void)
fill_activation_params(&activation_params);
hr = ISpatialAudioClient_ActivateSpatialAudioStream(sac, &activation_params_prop, &IID_ISpatialAudioObjectRenderStream, (void**)&sas);
ok(hr == S_OK, "Failed to activate spatial audio stream: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio stream: 0x%08lx\n", hr);
hr = ISpatialAudioClient_GetMaxFrameCount(sac, &format, &max_frame_count);
ok(hr == S_OK, "Got unexpected hr %#x.\n", hr);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
frame_count = format.nSamplesPerSec / 100; /* 10ms */
/* Most of the time the frame count matches the 10ms interval exactly.
* However (seen on some Testbot machines) it might be a bit higher for some reason. */
@ -300,32 +300,32 @@ static void test_audio_object_buffers(void)
max_frame_count = frame_count + frame_count / 4;
hr = ISpatialAudioObjectRenderStream_ActivateSpatialAudioObject(sas, AudioObjectType_FrontLeft, &sao[0]);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08lx\n", hr);
hr = ISpatialAudioObjectRenderStream_Start(sas);
ok(hr == S_OK, "Failed to activate spatial audio render stream: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio render stream: 0x%08lx\n", hr);
hr = ISpatialAudioObjectRenderStream_ActivateSpatialAudioObject(sas, AudioObjectType_FrontRight, &sao[1]);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08lx\n", hr);
hr = WaitForSingleObject(event, 200);
ok(hr == WAIT_OBJECT_0, "Expected event to be flagged: 0x%08x\n", hr);
ok(hr == WAIT_OBJECT_0, "Expected event to be flagged: 0x%08lx\n", hr);
hr = ISpatialAudioObjectRenderStream_ActivateSpatialAudioObject(sas, AudioObjectType_SideLeft, &sao[2]);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08lx\n", hr);
hr = ISpatialAudioObjectRenderStream_BeginUpdatingAudioObjects(sas, &dyn_object_count, &frame_count);
ok(hr == S_OK, "Failed to beging updating audio objects: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to beging updating audio objects: 0x%08lx\n", hr);
ok(dyn_object_count == 0, "Unexpected dynamic objects\n");
ok(frame_count <= max_frame_count, "Got unexpected frame count %u.\n", frame_count);
hr = ISpatialAudioObjectRenderStream_ActivateSpatialAudioObject(sas, AudioObjectType_SideRight, &sao[3]);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to activate spatial audio object: 0x%08lx\n", hr);
for (i = 0; i < ARRAYSIZE(sao); i++)
{
hr = ISpatialAudioObject_GetBuffer(sao[i], &buffer, &buffer_length);
ok(hr == S_OK, "Expected to be able to get buffers for audio object: 0x%08x\n", hr);
ok(hr == S_OK, "Expected to be able to get buffers for audio object: 0x%08lx\n", hr);
ok(buffer != NULL, "Expected to get a non-NULL buffer\n");
ok(buffer_length == frame_count * format.wBitsPerSample / 8, "Expected buffer length to be sample_size * frame_count = %hu but got %u\n",
frame_count * format.wBitsPerSample / 8, buffer_length);
@ -333,7 +333,7 @@ static void test_audio_object_buffers(void)
}
hr = ISpatialAudioObjectRenderStream_EndUpdatingAudioObjects(sas);
ok(hr == S_OK, "Failed to end updating audio objects: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to end updating audio objects: 0x%08lx\n", hr);
/* Emulate underrun and test frame count approximate limit. */
@ -342,10 +342,10 @@ static void test_audio_object_buffers(void)
for (j = 0; j < 20; ++j)
{
hr = WaitForSingleObject(event, 200);
ok(hr == WAIT_OBJECT_0, "Expected event to be flagged: 0x%08x, j %u.\n", hr, j);
ok(hr == WAIT_OBJECT_0, "Expected event to be flagged: 0x%08lx, j %u.\n", hr, j);
hr = ISpatialAudioObjectRenderStream_BeginUpdatingAudioObjects(sas, &dyn_object_count, &frame_count);
ok(hr == S_OK, "Failed to beging updating audio objects: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to beging updating audio objects: 0x%08lx\n", hr);
ok(dyn_object_count == 0, "Unexpected dynamic objects\n");
ok(frame_count <= max_frame_count, "Got unexpected frame_count %u.\n", frame_count);
@ -358,7 +358,7 @@ static void test_audio_object_buffers(void)
for (i = 0; i < ARRAYSIZE(sao); i++)
{
hr = ISpatialAudioObject_GetBuffer(sao[i], &buffer, &buffer_length);
ok(hr == S_OK, "Expected to be able to get buffers for audio object: 0x%08x, i %d\n", hr, i);
ok(hr == S_OK, "Expected to be able to get buffers for audio object: 0x%08lx, i %d\n", hr, i);
ok(buffer != NULL, "Expected to get a non-NULL buffer\n");
ok(buffer_length == frame_count * format.wBitsPerSample / 8,
"Expected buffer length to be sample_size * frame_count = %hu but got %u\n",
@ -380,22 +380,22 @@ static void test_audio_object_buffers(void)
}
}
hr = ISpatialAudioObjectRenderStream_EndUpdatingAudioObjects(sas);
ok(hr == S_OK, "Failed to end updating audio objects: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to end updating audio objects: 0x%08lx\n", hr);
}
timeEndPeriod(1);
hr = WaitForSingleObject(event, 200);
ok(hr == WAIT_OBJECT_0, "Expected event to be flagged: 0x%08x\n", hr);
ok(hr == WAIT_OBJECT_0, "Expected event to be flagged: 0x%08lx\n", hr);
hr = ISpatialAudioObjectRenderStream_BeginUpdatingAudioObjects(sas, &dyn_object_count, &frame_count);
ok(hr == S_OK, "Failed to beging updating audio objects: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to beging updating audio objects: 0x%08lx\n", hr);
ok(dyn_object_count == 0, "Unexpected dynamic objects\n");
/* one more iteration but not with every object */
for (i = 0; i < ARRAYSIZE(sao) - 1; i++)
{
hr = ISpatialAudioObject_GetBuffer(sao[i], &buffer, &buffer_length);
ok(hr == S_OK, "Expected to be able to get buffers for audio object: 0x%08x\n", hr);
ok(hr == S_OK, "Expected to be able to get buffers for audio object: 0x%08lx\n", hr);
ok(buffer != NULL, "Expected to get a non-NULL buffer\n");
ok(buffer_length == frame_count * format.wBitsPerSample / 8, "Expected buffer length to be sample_size * frame_count = %hu but got %u\n",
frame_count * format.wBitsPerSample / 8, buffer_length);
@ -403,40 +403,40 @@ static void test_audio_object_buffers(void)
}
hr = ISpatialAudioObjectRenderStream_EndUpdatingAudioObjects(sas);
ok(hr == S_OK, "Failed to end updating audio objects: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to end updating audio objects: 0x%08lx\n", hr);
/* ending the stream */
hr = ISpatialAudioObject_SetEndOfStream(sao[0], 0);
todo_wine ok(hr == SPTLAUDCLNT_E_OUT_OF_ORDER, "Expected that ending the stream at this point won't be allowed: 0x%08x\n", hr);
todo_wine ok(hr == SPTLAUDCLNT_E_OUT_OF_ORDER, "Expected that ending the stream at this point won't be allowed: 0x%08lx\n", hr);
hr = WaitForSingleObject(event, 200);
ok(hr == WAIT_OBJECT_0, "Expected event to be flagged: 0x%08x\n", hr);
ok(hr == WAIT_OBJECT_0, "Expected event to be flagged: 0x%08lx\n", hr);
hr = ISpatialAudioObject_SetEndOfStream(sao[0], 0);
todo_wine ok(hr == SPTLAUDCLNT_E_OUT_OF_ORDER, "Expected that ending the stream at this point won't be allowed: 0x%08x\n", hr);
todo_wine ok(hr == SPTLAUDCLNT_E_OUT_OF_ORDER, "Expected that ending the stream at this point won't be allowed: 0x%08lx\n", hr);
hr = ISpatialAudioObjectRenderStream_BeginUpdatingAudioObjects(sas, &dyn_object_count, &frame_count);
ok(hr == S_OK, "Failed to beging updating audio objects: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to beging updating audio objects: 0x%08lx\n", hr);
ok(dyn_object_count == 0, "Unexpected dynamic objects\n");
/* expect the object that was not updated last cycle to be invalidated */
hr = ISpatialAudioObject_GetBuffer(sao[ARRAYSIZE(sao) - 1], &buffer, &buffer_length);
todo_wine ok(hr == SPTLAUDCLNT_E_RESOURCES_INVALIDATED, "Expected audio object to be invalidated: 0x%08x\n", hr);
todo_wine ok(hr == SPTLAUDCLNT_E_RESOURCES_INVALIDATED, "Expected audio object to be invalidated: 0x%08lx\n", hr);
for (i = 0; i < ARRAYSIZE(sao) - 1; i++)
{
hr = ISpatialAudioObject_GetBuffer(sao[i], &buffer, &buffer_length);
ok(hr == S_OK, "Expected to be able to get buffers for audio object: 0x%08x\n", hr);
ok(hr == S_OK, "Expected to be able to get buffers for audio object: 0x%08lx\n", hr);
hr = ISpatialAudioObject_SetEndOfStream(sao[i], 0);
todo_wine ok(hr == S_OK, "Failed to end the stream: 0x%08x\n", hr);
todo_wine ok(hr == S_OK, "Failed to end the stream: 0x%08lx\n", hr);
hr = ISpatialAudioObject_GetBuffer(sao[i], &buffer, &buffer_length);
todo_wine ok(hr == SPTLAUDCLNT_E_RESOURCES_INVALIDATED, "Expected audio object to be invalidated: 0x%08x\n", hr);
todo_wine ok(hr == SPTLAUDCLNT_E_RESOURCES_INVALIDATED, "Expected audio object to be invalidated: 0x%08lx\n", hr);
}
hr = ISpatialAudioObjectRenderStream_EndUpdatingAudioObjects(sas);
ok(hr == S_OK, "Failed to end updating audio objects: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to end updating audio objects: 0x%08lx\n", hr);
for (i = 0; i < ARRAYSIZE(sao); i++)
{
@ -451,40 +451,40 @@ START_TEST(spatialaudio)
HRESULT hr;
event = CreateEventA(NULL, FALSE, FALSE, "spatial-audio-test-prog-event");
ok(event != NULL, "Failed to create event, last error: 0x%08x\n", GetLastError());
ok(event != NULL, "Failed to create event, last error: 0x%08lx\n", GetLastError());
CoInitializeEx(NULL, COINIT_MULTITHREADED);
hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_INPROC_SERVER, &IID_IMMDeviceEnumerator, (void**)&mme);
if (FAILED(hr))
{
skip("mmdevapi not available: 0x%08x\n", hr);
skip("mmdevapi not available: 0x%08lx\n", hr);
goto cleanup;
}
hr = IMMDeviceEnumerator_GetDefaultAudioEndpoint(mme, eRender, eMultimedia, &dev);
ok(hr == S_OK || hr == E_NOTFOUND, "GetDefaultAudioEndpoint failed: 0x%08x\n", hr);
ok(hr == S_OK || hr == E_NOTFOUND, "GetDefaultAudioEndpoint failed: 0x%08lx\n", hr);
if (hr != S_OK || !dev)
{
if (hr == E_NOTFOUND)
skip("No sound card available\n");
else
skip("GetDefaultAudioEndpoint returns 0x%08x\n", hr);
skip("GetDefaultAudioEndpoint returns 0x%08lx\n", hr);
goto cleanup;
}
hr = IMMDevice_Activate(dev, &IID_ISpatialAudioClient, CLSCTX_INPROC_SERVER, NULL, (void**)&sac);
ok(hr == S_OK || hr == E_NOINTERFACE, "ISpatialAudioClient Activation failed: 0x%08x\n", hr);
ok(hr == S_OK || hr == E_NOINTERFACE, "ISpatialAudioClient Activation failed: 0x%08lx\n", hr);
if (hr != S_OK || !dev)
{
if (hr == E_NOINTERFACE)
skip("ISpatialAudioClient interface not found\n");
else
skip("ISpatialAudioClient Activation returns 0x%08x\n", hr);
skip("ISpatialAudioClient Activation returns 0x%08lx\n", hr);
goto cleanup;
}
hr = ISpatialAudioClient_GetMaxDynamicObjectCount(sac, &max_dyn_count);
ok(hr == S_OK, "Failed to get max dynamic object count: 0x%08x\n", hr);
ok(hr == S_OK, "Failed to get max dynamic object count: 0x%08lx\n", hr);
/* that's the default, after manually enabling Windows Sonic it's possible to have max_dyn_count > 0 */
/* ok(max_dyn_count == 0, "expected max dynamic object count to be 0 got %u\n", max_dyn_count); */