[MMDEVAPI] Sync with Wine Staging 1.7.47. CORE-9924

svn path=/trunk/; revision=68449
This commit is contained in:
Amine Khaldi 2015-07-19 22:39:34 +00:00
parent 74a9f79c00
commit cfe6b7259d
3 changed files with 33 additions and 32 deletions

View file

@ -18,8 +18,6 @@
#include "mmdevapi.h" #include "mmdevapi.h"
static const IAudioEndpointVolumeExVtbl AEVImpl_Vtbl;
typedef struct AEVImpl { typedef struct AEVImpl {
IAudioEndpointVolumeEx IAudioEndpointVolumeEx_iface; IAudioEndpointVolumeEx IAudioEndpointVolumeEx_iface;
LONG ref; LONG ref;
@ -32,20 +30,6 @@ static inline AEVImpl *impl_from_IAudioEndpointVolumeEx(IAudioEndpointVolumeEx *
return CONTAINING_RECORD(iface, AEVImpl, IAudioEndpointVolumeEx_iface); return CONTAINING_RECORD(iface, AEVImpl, IAudioEndpointVolumeEx_iface);
} }
HRESULT AudioEndpointVolume_Create(MMDevice *parent, IAudioEndpointVolume **ppv)
{
AEVImpl *This;
This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*This));
*ppv = (IAudioEndpointVolume*)This;
if (!This)
return E_OUTOFMEMORY;
This->IAudioEndpointVolumeEx_iface.lpVtbl = &AEVImpl_Vtbl;
This->ref = 1;
This->level = 1.0f;
This->mute = FALSE;
return S_OK;
}
static void AudioEndpointVolume_Destroy(AEVImpl *This) static void AudioEndpointVolume_Destroy(AEVImpl *This)
{ {
HeapFree(GetProcessHeap(), 0, This); HeapFree(GetProcessHeap(), 0, This);
@ -61,7 +45,7 @@ static HRESULT WINAPI AEV_QueryInterface(IAudioEndpointVolumeEx *iface, REFIID r
if (IsEqualIID(riid, &IID_IUnknown) || if (IsEqualIID(riid, &IID_IUnknown) ||
IsEqualIID(riid, &IID_IAudioEndpointVolume) || IsEqualIID(riid, &IID_IAudioEndpointVolume) ||
IsEqualIID(riid, &IID_IAudioEndpointVolumeEx)) { IsEqualIID(riid, &IID_IAudioEndpointVolumeEx)) {
*ppv = This; *ppv = &This->IAudioEndpointVolumeEx_iface;
} }
else else
return E_NOINTERFACE; return E_NOINTERFACE;
@ -291,3 +275,20 @@ static const IAudioEndpointVolumeExVtbl AEVImpl_Vtbl = {
AEV_GetVolumeRange, AEV_GetVolumeRange,
AEV_GetVolumeRangeChannel AEV_GetVolumeRangeChannel
}; };
HRESULT AudioEndpointVolume_Create(MMDevice *parent, IAudioEndpointVolume **ppv)
{
AEVImpl *This;
*ppv = NULL;
This = HeapAlloc(GetProcessHeap(), 0, sizeof(*This));
if (!This)
return E_OUTOFMEMORY;
This->IAudioEndpointVolumeEx_iface.lpVtbl = &AEVImpl_Vtbl;
This->ref = 1;
This->level = 1.0f;
This->mute = FALSE;
*ppv = (IAudioEndpointVolume*)&This->IAudioEndpointVolumeEx_iface;
return S_OK;
}

View file

@ -125,12 +125,12 @@ static HRESULT MMDevPropStore_OpenPropKey(const GUID *guid, DWORD flow, HKEY *pr
LONG ret; LONG ret;
HKEY key; HKEY key;
StringFromGUID2(guid, buffer, 39); StringFromGUID2(guid, buffer, 39);
if ((ret = RegOpenKeyExW(flow == eRender ? key_render : key_capture, buffer, 0, KEY_READ|KEY_WRITE, &key)) != ERROR_SUCCESS) if ((ret = RegOpenKeyExW(flow == eRender ? key_render : key_capture, buffer, 0, KEY_READ|KEY_WRITE|KEY_WOW64_64KEY, &key)) != ERROR_SUCCESS)
{ {
WARN("Opening key %s failed with %u\n", debugstr_w(buffer), ret); WARN("Opening key %s failed with %u\n", debugstr_w(buffer), ret);
return E_FAIL; return E_FAIL;
} }
ret = RegOpenKeyExW(key, reg_properties, 0, KEY_READ|KEY_WRITE, propkey); ret = RegOpenKeyExW(key, reg_properties, 0, KEY_READ|KEY_WRITE|KEY_WOW64_64KEY, propkey);
RegCloseKey(key); RegCloseKey(key);
if (ret != ERROR_SUCCESS) if (ret != ERROR_SUCCESS)
{ {
@ -327,11 +327,11 @@ static MMDevice *MMDevice_Create(WCHAR *name, GUID *id, EDataFlow flow, DWORD st
else else
root = key_capture; root = key_capture;
if (RegCreateKeyExW(root, guidstr, 0, NULL, 0, KEY_WRITE|KEY_READ, NULL, &key, NULL) == ERROR_SUCCESS) if (RegCreateKeyExW(root, guidstr, 0, NULL, 0, KEY_WRITE|KEY_READ|KEY_WOW64_64KEY, NULL, &key, NULL) == ERROR_SUCCESS)
{ {
HKEY keyprop; HKEY keyprop;
RegSetValueExW(key, reg_devicestate, 0, REG_DWORD, (const BYTE*)&state, sizeof(DWORD)); RegSetValueExW(key, reg_devicestate, 0, REG_DWORD, (const BYTE*)&state, sizeof(DWORD));
if (!RegCreateKeyExW(key, reg_properties, 0, NULL, 0, KEY_WRITE|KEY_READ, NULL, &keyprop, NULL)) if (!RegCreateKeyExW(key, reg_properties, 0, NULL, 0, KEY_WRITE|KEY_READ|KEY_WOW64_64KEY, NULL, &keyprop, NULL))
{ {
PROPVARIANT pv; PROPVARIANT pv;
@ -388,11 +388,11 @@ static HRESULT load_devices_from_reg(void)
LONG ret; LONG ret;
DWORD curflow; DWORD curflow;
ret = RegCreateKeyExW(HKEY_LOCAL_MACHINE, software_mmdevapi, 0, NULL, 0, KEY_WRITE|KEY_READ, NULL, &root, NULL); ret = RegCreateKeyExW(HKEY_LOCAL_MACHINE, software_mmdevapi, 0, NULL, 0, KEY_WRITE|KEY_READ|KEY_WOW64_64KEY, NULL, &root, NULL);
if (ret == ERROR_SUCCESS) if (ret == ERROR_SUCCESS)
ret = RegCreateKeyExW(root, reg_capture, 0, NULL, 0, KEY_READ|KEY_WRITE, NULL, &key_capture, NULL); ret = RegCreateKeyExW(root, reg_capture, 0, NULL, 0, KEY_READ|KEY_WRITE|KEY_WOW64_64KEY, NULL, &key_capture, NULL);
if (ret == ERROR_SUCCESS) if (ret == ERROR_SUCCESS)
ret = RegCreateKeyExW(root, reg_render, 0, NULL, 0, KEY_READ|KEY_WRITE, NULL, &key_render, NULL); ret = RegCreateKeyExW(root, reg_render, 0, NULL, 0, KEY_READ|KEY_WRITE|KEY_WOW64_64KEY, NULL, &key_render, NULL);
RegCloseKey(root); RegCloseKey(root);
cur = key_capture; cur = key_capture;
curflow = eCapture; curflow = eCapture;
@ -467,6 +467,7 @@ static HRESULT set_format(MMDevice *dev)
&PKEY_AudioEngine_DeviceFormat, &pv); &PKEY_AudioEngine_DeviceFormat, &pv);
MMDevice_SetPropValue(&dev->devguid, dev->flow, MMDevice_SetPropValue(&dev->devguid, dev->flow,
&PKEY_AudioEngine_OEMFormat, &pv); &PKEY_AudioEngine_OEMFormat, &pv);
CoTaskMemFree(fmt);
return S_OK; return S_OK;
} }
@ -532,7 +533,7 @@ static HRESULT WINAPI MMDevice_QueryInterface(IMMDevice *iface, REFIID riid, voi
*ppv = NULL; *ppv = NULL;
if (IsEqualIID(riid, &IID_IUnknown) if (IsEqualIID(riid, &IID_IUnknown)
|| IsEqualIID(riid, &IID_IMMDevice)) || IsEqualIID(riid, &IID_IMMDevice))
*ppv = This; *ppv = &This->IMMDevice_iface;
else if (IsEqualIID(riid, &IID_IMMEndpoint)) else if (IsEqualIID(riid, &IID_IMMEndpoint))
*ppv = &This->IMMEndpoint_iface; *ppv = &This->IMMEndpoint_iface;
if (*ppv) if (*ppv)
@ -627,8 +628,7 @@ static HRESULT WINAPI MMDevice_Activate(IMMDevice *iface, REFIID riid, DWORD cls
IDirectSound_Release((IDirectSound*)*ppv); IDirectSound_Release((IDirectSound*)*ppv);
} }
} }
else if (IsEqualIID(riid, &IID_IDirectSoundCapture) else if (IsEqualIID(riid, &IID_IDirectSoundCapture))
|| IsEqualIID(riid, &IID_IDirectSoundCapture8))
{ {
if (This->flow == eCapture) if (This->flow == eCapture)
hr = CoCreateInstance(&CLSID_DirectSoundCapture8, NULL, clsctx, riid, ppv); hr = CoCreateInstance(&CLSID_DirectSoundCapture8, NULL, clsctx, riid, ppv);
@ -779,7 +779,7 @@ static HRESULT WINAPI MMDevCol_QueryInterface(IMMDeviceCollection *iface, REFIID
return E_POINTER; return E_POINTER;
if (IsEqualIID(riid, &IID_IUnknown) if (IsEqualIID(riid, &IID_IUnknown)
|| IsEqualIID(riid, &IID_IMMDeviceCollection)) || IsEqualIID(riid, &IID_IMMDeviceCollection))
*ppv = This; *ppv = &This->IMMDeviceCollection_iface;
else else
*ppv = NULL; *ppv = NULL;
if (!*ppv) if (!*ppv)
@ -879,7 +879,7 @@ HRESULT MMDevEnum_Create(REFIID riid, void **ppv)
load_driver_devices(eRender); load_driver_devices(eRender);
load_driver_devices(eCapture); load_driver_devices(eCapture);
} }
return IUnknown_QueryInterface((IUnknown*)This, riid, ppv); return IMMDeviceEnumerator_QueryInterface(&This->IMMDeviceEnumerator_iface, riid, ppv);
} }
void MMDevEnum_Free(void) void MMDevEnum_Free(void)
@ -902,7 +902,7 @@ static HRESULT WINAPI MMDevEnum_QueryInterface(IMMDeviceEnumerator *iface, REFII
return E_POINTER; return E_POINTER;
if (IsEqualIID(riid, &IID_IUnknown) if (IsEqualIID(riid, &IID_IUnknown)
|| IsEqualIID(riid, &IID_IMMDeviceEnumerator)) || IsEqualIID(riid, &IID_IMMDeviceEnumerator))
*ppv = This; *ppv = &This->IMMDeviceEnumerator_iface;
else else
*ppv = NULL; *ppv = NULL;
if (!*ppv) if (!*ppv)
@ -1327,7 +1327,7 @@ static HRESULT WINAPI MMDevPropStore_QueryInterface(IPropertyStore *iface, REFII
return E_POINTER; return E_POINTER;
if (IsEqualIID(riid, &IID_IUnknown) if (IsEqualIID(riid, &IID_IUnknown)
|| IsEqualIID(riid, &IID_IPropertyStore)) || IsEqualIID(riid, &IID_IPropertyStore))
*ppv = This; *ppv = &This->IPropertyStore_iface;
else else
*ppv = NULL; *ppv = NULL;
if (!*ppv) if (!*ppv)

View file

@ -102,7 +102,7 @@ reactos/dll/win32/mciseq # Synced to WineStaging-1.7.37
reactos/dll/win32/mciwave # Synced to WineStaging-1.7.37 reactos/dll/win32/mciwave # Synced to WineStaging-1.7.37
reactos/dll/win32/mgmtapi # Synced to WineStaging-1.7.37 reactos/dll/win32/mgmtapi # Synced to WineStaging-1.7.37
reactos/dll/win32/mlang # Synced to WineStaging-1.7.37 reactos/dll/win32/mlang # Synced to WineStaging-1.7.37
reactos/dll/win32/mmdevapi # Synced to WineStaging-1.7.37 reactos/dll/win32/mmdevapi # Synced to WineStaging-1.7.47
reactos/dll/win32/mpr # Synced to WineStaging-1.7.37 reactos/dll/win32/mpr # Synced to WineStaging-1.7.37
reactos/dll/win32/mprapi # Synced to WineStaging-1.7.37 reactos/dll/win32/mprapi # Synced to WineStaging-1.7.37
reactos/dll/win32/msacm32 # Synced to WineStaging-1.7.37 reactos/dll/win32/msacm32 # Synced to WineStaging-1.7.37