mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +00:00
[DPLAYX] Sync with Wine Staging 1.7.37. CORE-9246
svn path=/trunk/; revision=66494
This commit is contained in:
parent
cf10f6f049
commit
572558396d
2 changed files with 32 additions and 9 deletions
|
@ -5761,6 +5761,11 @@ static HRESULT DirectPlayEnumerateAW(LPDPENUMDPCALLBACKA lpEnumCallbackA,
|
|||
DWORD max_sizeOfDescriptionA = 0;
|
||||
WCHAR *descriptionW = NULL;
|
||||
DWORD max_sizeOfDescriptionW = 0;
|
||||
DWORD sizeOfSubKeyName;
|
||||
WCHAR subKeyName[255]; /* 255 is the maximum key size according to MSDN */
|
||||
LONG ret_value;
|
||||
static GUID *guid_cache;
|
||||
static int cache_count;
|
||||
|
||||
if (!lpEnumCallbackA && !lpEnumCallbackW)
|
||||
{
|
||||
|
@ -5776,18 +5781,36 @@ static HRESULT DirectPlayEnumerateAW(LPDPENUMDPCALLBACKA lpEnumCallbackA,
|
|||
return DPERR_GENERIC;
|
||||
}
|
||||
|
||||
dwIndex = 0;
|
||||
do
|
||||
{
|
||||
sizeOfSubKeyName = sizeof(subKeyName) / sizeof(WCHAR);
|
||||
ret_value = RegEnumKeyW(hkResult, dwIndex, subKeyName, sizeOfSubKeyName);
|
||||
dwIndex++;
|
||||
}
|
||||
while (ret_value == ERROR_SUCCESS);
|
||||
/* The game Swing from bug 37185 expects GUID values to persist after
|
||||
* the end of the enumeration. */
|
||||
if (cache_count < dwIndex)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, guid_cache);
|
||||
guid_cache = HeapAlloc(GetProcessHeap(), 0, sizeof(GUID) * dwIndex);
|
||||
if (!guid_cache)
|
||||
{
|
||||
ERR(": failed to alloc required memory.\n");
|
||||
return DPERR_EXCEPTION;
|
||||
}
|
||||
cache_count = dwIndex;
|
||||
}
|
||||
/* Traverse all the service providers we have available */
|
||||
dwIndex = 0;
|
||||
while (1)
|
||||
{
|
||||
WCHAR subKeyName[255]; /* 255 is the maximum key size according to MSDN */
|
||||
DWORD sizeOfSubKeyName = sizeof(subKeyName) / sizeof(WCHAR);
|
||||
HKEY hkServiceProvider;
|
||||
GUID serviceProviderGUID;
|
||||
WCHAR guidKeyContent[(2 * 16) + 1 + 6 /* This corresponds to '{....-..-..-..-......}' */ ];
|
||||
DWORD sizeOfGuidKeyContent = sizeof(guidKeyContent);
|
||||
LONG ret_value;
|
||||
|
||||
sizeOfSubKeyName = sizeof(subKeyName) / sizeof(WCHAR);
|
||||
ret_value = RegEnumKeyExW(hkResult, dwIndex, subKeyName, &sizeOfSubKeyName,
|
||||
NULL, NULL, NULL, &filetime);
|
||||
if (ret_value == ERROR_NO_MORE_ITEMS)
|
||||
|
@ -5818,7 +5841,7 @@ static HRESULT DirectPlayEnumerateAW(LPDPENUMDPCALLBACKA lpEnumCallbackA,
|
|||
ERR(": invalid format for the GUID registry data member for service provider %s (%s).\n", debugstr_w(subKeyName), debugstr_w(guidKeyContent));
|
||||
continue;
|
||||
}
|
||||
CLSIDFromString(guidKeyContent, &serviceProviderGUID );
|
||||
CLSIDFromString(guidKeyContent, &guid_cache[dwIndex]);
|
||||
|
||||
/* The enumeration will return FALSE if we are not to continue.
|
||||
*
|
||||
|
@ -5846,7 +5869,7 @@ static HRESULT DirectPlayEnumerateAW(LPDPENUMDPCALLBACKA lpEnumCallbackA,
|
|||
RegQueryValueExA(hkServiceProvider, "DescriptionA",
|
||||
NULL, NULL, (LPBYTE) descriptionA, &sizeOfDescription);
|
||||
|
||||
if (!lpEnumCallbackA(&serviceProviderGUID, descriptionA, 6, 0, lpContext))
|
||||
if (!lpEnumCallbackA(&guid_cache[dwIndex], descriptionA, 6, 0, lpContext))
|
||||
goto end;
|
||||
}
|
||||
else
|
||||
|
@ -5868,7 +5891,7 @@ static HRESULT DirectPlayEnumerateAW(LPDPENUMDPCALLBACKA lpEnumCallbackA,
|
|||
RegQueryValueExW(hkServiceProvider, descW,
|
||||
NULL, NULL, (LPBYTE) descriptionW, &sizeOfDescription);
|
||||
|
||||
if (!lpEnumCallbackW(&serviceProviderGUID, descriptionW, 6, 0, lpContext))
|
||||
if (!lpEnumCallbackW(&guid_cache[dwIndex], descriptionW, 6, 0, lpContext))
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ reactos/dll/directx/wine/dinput # Synced to WineStaging-1.7.37
|
|||
reactos/dll/directx/wine/dinput8 # Synced to Wine-1.7.27
|
||||
reactos/dll/directx/wine/dmusic # Synced to WineStaging-1.7.37
|
||||
reactos/dll/directx/wine/dplay # Synced to Wine-1.7.27
|
||||
reactos/dll/directx/wine/dplayx # Synced to Wine-1.7.27
|
||||
reactos/dll/directx/wine/dplayx # Synced to WineStaging-1.7.37
|
||||
reactos/dll/directx/wine/dsound # Synced to Wine-1.3.29
|
||||
reactos/dll/directx/wine/dxdiagn # Synced to Wine-1.7.27
|
||||
reactos/dll/directx/wine/dxgi # Synced to Wine-1.7.27
|
||||
|
|
Loading…
Reference in a new issue