mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +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;
|
DWORD max_sizeOfDescriptionA = 0;
|
||||||
WCHAR *descriptionW = NULL;
|
WCHAR *descriptionW = NULL;
|
||||||
DWORD max_sizeOfDescriptionW = 0;
|
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)
|
if (!lpEnumCallbackA && !lpEnumCallbackW)
|
||||||
{
|
{
|
||||||
|
@ -5776,18 +5781,36 @@ static HRESULT DirectPlayEnumerateAW(LPDPENUMDPCALLBACKA lpEnumCallbackA,
|
||||||
return DPERR_GENERIC;
|
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 */
|
/* Traverse all the service providers we have available */
|
||||||
dwIndex = 0;
|
dwIndex = 0;
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
WCHAR subKeyName[255]; /* 255 is the maximum key size according to MSDN */
|
|
||||||
DWORD sizeOfSubKeyName = sizeof(subKeyName) / sizeof(WCHAR);
|
|
||||||
HKEY hkServiceProvider;
|
HKEY hkServiceProvider;
|
||||||
GUID serviceProviderGUID;
|
|
||||||
WCHAR guidKeyContent[(2 * 16) + 1 + 6 /* This corresponds to '{....-..-..-..-......}' */ ];
|
WCHAR guidKeyContent[(2 * 16) + 1 + 6 /* This corresponds to '{....-..-..-..-......}' */ ];
|
||||||
DWORD sizeOfGuidKeyContent = sizeof(guidKeyContent);
|
DWORD sizeOfGuidKeyContent = sizeof(guidKeyContent);
|
||||||
LONG ret_value;
|
|
||||||
|
|
||||||
|
sizeOfSubKeyName = sizeof(subKeyName) / sizeof(WCHAR);
|
||||||
ret_value = RegEnumKeyExW(hkResult, dwIndex, subKeyName, &sizeOfSubKeyName,
|
ret_value = RegEnumKeyExW(hkResult, dwIndex, subKeyName, &sizeOfSubKeyName,
|
||||||
NULL, NULL, NULL, &filetime);
|
NULL, NULL, NULL, &filetime);
|
||||||
if (ret_value == ERROR_NO_MORE_ITEMS)
|
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));
|
ERR(": invalid format for the GUID registry data member for service provider %s (%s).\n", debugstr_w(subKeyName), debugstr_w(guidKeyContent));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
CLSIDFromString(guidKeyContent, &serviceProviderGUID );
|
CLSIDFromString(guidKeyContent, &guid_cache[dwIndex]);
|
||||||
|
|
||||||
/* The enumeration will return FALSE if we are not to continue.
|
/* The enumeration will return FALSE if we are not to continue.
|
||||||
*
|
*
|
||||||
|
@ -5846,7 +5869,7 @@ static HRESULT DirectPlayEnumerateAW(LPDPENUMDPCALLBACKA lpEnumCallbackA,
|
||||||
RegQueryValueExA(hkServiceProvider, "DescriptionA",
|
RegQueryValueExA(hkServiceProvider, "DescriptionA",
|
||||||
NULL, NULL, (LPBYTE) descriptionA, &sizeOfDescription);
|
NULL, NULL, (LPBYTE) descriptionA, &sizeOfDescription);
|
||||||
|
|
||||||
if (!lpEnumCallbackA(&serviceProviderGUID, descriptionA, 6, 0, lpContext))
|
if (!lpEnumCallbackA(&guid_cache[dwIndex], descriptionA, 6, 0, lpContext))
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -5868,7 +5891,7 @@ static HRESULT DirectPlayEnumerateAW(LPDPENUMDPCALLBACKA lpEnumCallbackA,
|
||||||
RegQueryValueExW(hkServiceProvider, descW,
|
RegQueryValueExW(hkServiceProvider, descW,
|
||||||
NULL, NULL, (LPBYTE) descriptionW, &sizeOfDescription);
|
NULL, NULL, (LPBYTE) descriptionW, &sizeOfDescription);
|
||||||
|
|
||||||
if (!lpEnumCallbackW(&serviceProviderGUID, descriptionW, 6, 0, lpContext))
|
if (!lpEnumCallbackW(&guid_cache[dwIndex], descriptionW, 6, 0, lpContext))
|
||||||
goto end;
|
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/dinput8 # Synced to Wine-1.7.27
|
||||||
reactos/dll/directx/wine/dmusic # Synced to WineStaging-1.7.37
|
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/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/dsound # Synced to Wine-1.3.29
|
||||||
reactos/dll/directx/wine/dxdiagn # Synced to Wine-1.7.27
|
reactos/dll/directx/wine/dxdiagn # Synced to Wine-1.7.27
|
||||||
reactos/dll/directx/wine/dxgi # Synced to Wine-1.7.27
|
reactos/dll/directx/wine/dxgi # Synced to Wine-1.7.27
|
||||||
|
|
Loading…
Reference in a new issue