Davide Beatrici : wineoss: Fix sound not working.
Module: wine Branch: master Commit: 029697598356028517be1ac10b6807cb877d3cf6 URL: https://gitlab.winehq.org/wine/wine/-/commit/029697598356028517be1ac10b6807c... Author: Davide Beatrici <git(a)davidebeatrici.dev> Date: Mon Nov 20 01:29:09 2023 +0100 wineoss: Fix sound not working. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55886 --- dlls/wineoss.drv/mmdevdrv.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index 48a46473956..7b7d426d1df 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -144,18 +144,11 @@ exit: void WINAPI get_device_guid(EDataFlow flow, const char *device, GUID *guid) { + OSSDevice *oss_dev; HKEY key = NULL, dev_key; DWORD type, size = sizeof(*guid); WCHAR key_name[256]; const unsigned int dev_size = strlen(device) + 1; - OSSDevice *oss_dev = HeapAlloc(GetProcessHeap(), 0, offsetof(OSSDevice, devnode[dev_size])); - - if(oss_dev){ - oss_dev->flow = flow; - oss_dev->guid = *guid; - memcpy(oss_dev->devnode, device, dev_size); - device_add(oss_dev); - } if(flow == eCapture) key_name[0] = '1'; @@ -171,7 +164,7 @@ void WINAPI get_device_guid(EDataFlow flow, const char *device, GUID *guid) if(type == REG_BINARY){ RegCloseKey(dev_key); RegCloseKey(key); - return; + goto exit; } ERR("Invalid type for device %s GUID: %lu; ignoring and overwriting\n", wine_dbgstr_w(key_name), type); @@ -183,9 +176,17 @@ void WINAPI get_device_guid(EDataFlow flow, const char *device, GUID *guid) CoCreateGuid(guid); set_device_guid(flow, key, key_name, guid); - +exit: if(key) RegCloseKey(key); + + oss_dev = HeapAlloc(GetProcessHeap(), 0, offsetof(OSSDevice, devnode[dev_size])); + if(oss_dev){ + oss_dev->flow = flow; + oss_dev->guid = *guid; + memcpy(oss_dev->devnode, device, dev_size); + device_add(oss_dev); + } } BOOL WINAPI get_device_name_from_guid(GUID *guid, char **name, EDataFlow *flow)
participants (1)
-
Alexandre Julliard