Wine-Devel
By thread
wine-devel@list.winehq.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
February 2019
- 73 participants
- 1959 messages
Re: [PATCH v3 2/2] vbscript: Add todo test for 'rem' as 'dot' identifier
by Jacek Caban
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
Feb. 28, 2019
Re: [PATCH v3 1/2] vbscript: Allow most keywords to be used as 'dot' identifiers.
by Jacek Caban
Signed-off-by: Jacek Caban <jacek(a)codeweavers.com>
Feb. 28, 2019
Re: [PATCH] xaudio2: IXAPO::Process out parameter should not be const
by Marvin
Hi,
While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=48427
Your paranoid android.
=== debian9 (32 bit report) ===
Report errors:
The report seems to have been truncated
=== debian9 (32 bit WoW report) ===
Report errors:
The report seems to have been truncated
Feb. 28, 2019
[PATCH] ieframe: add implementation for WebBrowser_get_LocationName
by Vijay Kiran Kamuju
Based on patch from Andrey Turkin
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=12456
Signed-off-by: Vijay Kiran Kamuju <infyquest(a)gmail.com>
---
dlls/ieframe/tests/webbrowser.c | 24 +++++++++++++++++++++---
dlls/ieframe/webbrowser.c | 21 +++++++++++++++++++--
2 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/dlls/ieframe/tests/webbrowser.c b/dlls/ieframe/tests/webbrowser.c
index 706d5071a9cf..c78af1f78777 100644
--- a/dlls/ieframe/tests/webbrowser.c
+++ b/dlls/ieframe/tests/webbrowser.c
@@ -166,7 +166,7 @@ static HWND container_hwnd, shell_embedding_hwnd;
static BOOL is_downloading, do_download, is_first_load, use_container_olecmd, test_close, is_http, use_container_dochostui;
static HRESULT hr_dochost_TranslateAccelerator = E_NOTIMPL;
static HRESULT hr_site_TranslateAccelerator = E_NOTIMPL;
-static const char *current_url;
+static const char *current_url, *current_title;
static int wb_version, expect_update_commands_enable, set_update_commands_enable;
static BOOL nav_back_todo, nav_forward_todo; /* FIXME */
@@ -267,6 +267,22 @@ static void _test_LocationURL(unsigned line, IWebBrowser2 *wb, const char *exurl
}
}
+#define test_LocationName(a,b) _test_LocationName(__LINE__,a,b)
+static void _test_LocationName(unsigned line, IUnknown *unk, const char *exname)
+{
+ BSTR name = (void*)0xdeadbeef;
+ static const char wine_title[] = "WineHQ - Run Windows applications on Linux, BSD, Solaris and Mac OS X";
+ HRESULT hres;
+
+ hres = IWebBrowser2_get_LocationName(wb, &name);
+ ok_(__FILE__,line) (hres == (*exname ? S_OK : S_FALSE), "get_LocationName failed: %08x\n", hres);
+ if (SUCCEEDED(hres))
+ {
+ ok_(__FILE__,line) (!strcmp_wa(name, exname) || !strcmp_wa(name,wine_title), "unexpected name: %s\n", wine_dbgstr_w(name));
+ SysFreeString(name);
+ }
+}
+
#define test_ready_state(ex) _test_ready_state(__LINE__,ex)
static void _test_ready_state(unsigned line, READYSTATE exstate)
{
@@ -2744,11 +2760,12 @@ static void test_Navigate2(IWebBrowser2 *webbrowser, const char *nav_url)
HRESULT hres;
test_LocationURL(webbrowser, is_first_load ? "" : current_url);
+ test_LocationName(webbrowser, is_first_load ? "" : current_title);
test_ready_state(is_first_load ? READYSTATE_UNINITIALIZED : READYSTATE_COMPLETE);
is_http = !memcmp(nav_url, "http:", 5);
V_VT(&url) = VT_BSTR;
- V_BSTR(&url) = a2bstr(current_url = nav_url);
+ V_BSTR(&url) = a2bstr(current_title = current_url = nav_url);
if((is_file = !strncasecmp(nav_url, "file://", 7)))
current_url = nav_url + 7;
@@ -3182,7 +3199,7 @@ static void test_put_href(IWebBrowser2 *unk, const char *url)
dwl_flags = DWL_FROM_PUT_HREF;
- str = a2bstr(current_url = url);
+ str = a2bstr(current_title = current_url = url);
is_first_load = FALSE;
hres = IHTMLLocation_put_href(location, str);
@@ -3728,6 +3745,7 @@ static void test_WebBrowser(DWORD flags, BOOL do_close)
test_ClassInfo(webbrowser);
test_EnumVerbs(webbrowser);
test_LocationURL(webbrowser, "");
+ test_LocationName(webbrowser, "");
test_ConnectionPoint(webbrowser, TRUE);
test_ClientSite(webbrowser, &ClientSite, !do_download);
test_Extent(webbrowser);
diff --git a/dlls/ieframe/webbrowser.c b/dlls/ieframe/webbrowser.c
index 03acf3886989..f93fc5295a7f 100644
--- a/dlls/ieframe/webbrowser.c
+++ b/dlls/ieframe/webbrowser.c
@@ -503,8 +503,25 @@ static HRESULT WINAPI WebBrowser_put_Height(IWebBrowser2 *iface, LONG Height)
static HRESULT WINAPI WebBrowser_get_LocationName(IWebBrowser2 *iface, BSTR *LocationName)
{
WebBrowser *This = impl_from_IWebBrowser2(iface);
- FIXME("(%p)->(%p)\n", This, LocationName);
- return E_NOTIMPL;
+ IHTMLDocument2 *doc = NULL;
+ TRACE("(%p)->(%p)\n", This, LocationName);
+
+ WebBrowser_get_Document(This, &doc);
+ if (doc)
+ {
+ HRESULT hres;
+ hres = IHTMLDocument2_get_title(doc, LocationName);
+ if (SUCCEEDED(hres))
+ IHTMLDocument2_Release(doc);
+ return hres;
+ } else if (This->doc_host.url) {
+ *LocationName = SysAllocString(This->doc_host.url);
+ return S_OK;
+ } else {
+ static const WCHAR null_string = {0};
+ *LocationName = SysAllocString(&null_string);
+ return S_FALSE;
+ }
}
static HRESULT WINAPI WebBrowser_get_LocationURL(IWebBrowser2 *iface, BSTR *LocationURL)
--
2.17.0
Feb. 28, 2019
[PATCH] xaudio2: IXAPO::Process out parameter should not be const
by Andrew Eikum
Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com>
---
dlls/xaudio2_7/xapo.c | 2 +-
include/xapo.idl | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/xaudio2_7/xapo.c b/dlls/xaudio2_7/xapo.c
index ccad417ea5..3ccb3f190b 100644
--- a/dlls/xaudio2_7/xapo.c
+++ b/dlls/xaudio2_7/xapo.c
@@ -175,7 +175,7 @@ static void WINAPI XAPOFX_UnlockForProcess(IXAPO *iface)
static void WINAPI XAPOFX_Process(IXAPO *iface, UINT32 in_params_count,
const XAPO_PROCESS_BUFFER_PARAMETERS *in_params,
UINT32 out_params_count,
- const XAPO_PROCESS_BUFFER_PARAMETERS *out_params, BOOL enabled)
+ XAPO_PROCESS_BUFFER_PARAMETERS *out_params, BOOL enabled)
{
XA2XAPOFXImpl *This = impl_from_IXAPO(iface);
TRACE("%p, %u, %p, %u, %p, %u\n", This, in_params_count, in_params,
diff --git a/include/xapo.idl b/include/xapo.idl
index 9c3ad15134..7b28ac9f43 100644
--- a/include/xapo.idl
+++ b/include/xapo.idl
@@ -118,7 +118,7 @@ interface IXAPO : IUnknown
void UnlockForProcess(void);
void Process(UINT32 in_params_count, const XAPO_PROCESS_BUFFER_PARAMETERS *in_params,
- UINT32 out_params_count, const XAPO_PROCESS_BUFFER_PARAMETERS *out_params,
+ UINT32 out_params_count, XAPO_PROCESS_BUFFER_PARAMETERS *out_params,
BOOL enabled);
UINT32 CalcInputFrames(UINT32 output_frames);
--
2.21.0
Feb. 28, 2019
Re: [PATCH] xaudio2: IXAudio23 needs its own interface, for XAUDIO23_VOICE_SENDS parameters
by Andrew Eikum
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46727
Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com>
On Wed, Feb 27, 2019 at 11:36:56AM -0500, elee(a)codeweavers.com wrote:
> From: Ethan Lee <elee(a)codeweavers.com>
>
> Signed-off-by: Ethan Lee <elee(a)codeweavers.com>
> ---
> dlls/xaudio2_7/compat.c | 222 +++++++++++++++++++++++++++++++-
> dlls/xaudio2_7/xaudio_dll.c | 4 +
> dlls/xaudio2_7/xaudio_private.h | 4 +
> include/xaudio2.idl | 61 +++++++++
> 4 files changed, 286 insertions(+), 5 deletions(-)
>
> diff --git a/dlls/xaudio2_7/compat.c b/dlls/xaudio2_7/compat.c
> index bc33cb92ed..c4538ae367 100644
> --- a/dlls/xaudio2_7/compat.c
> +++ b/dlls/xaudio2_7/compat.c
> @@ -2488,6 +2488,222 @@ const IXAudio22Vtbl XAudio22_Vtbl = {
> XA22_SetDebugConfiguration
> };
>
> +#elif XAUDIO2_VER <= 3
> +
> +static inline IXAudio2Impl *impl_from_IXAudio23(IXAudio23 *iface)
> +{
> + return CONTAINING_RECORD(iface, IXAudio2Impl, IXAudio23_iface);
> +}
> +
> +static HRESULT WINAPI XA23_QueryInterface(IXAudio23 *iface, REFIID riid,
> + void **ppvObject)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_QueryInterface(&This->IXAudio2_iface, riid, ppvObject);
> +}
> +
> +static ULONG WINAPI XA23_AddRef(IXAudio23 *iface)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_AddRef(&This->IXAudio2_iface);
> +}
> +
> +static ULONG WINAPI XA23_Release(IXAudio23 *iface)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_Release(&This->IXAudio2_iface);
> +}
> +
> +static HRESULT WINAPI XA23_GetDeviceCount(IXAudio23 *iface, UINT32 *pCount)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + TRACE("%p, %p\n", This, pCount);
> + return FAudio_GetDeviceCount(This->faudio, pCount);
> +}
> +
> +static HRESULT WINAPI XA23_GetDeviceDetails(IXAudio23 *iface, UINT32 index,
> + XAUDIO2_DEVICE_DETAILS *pDeviceDetails)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + TRACE("%p, %u, %p\n", This, index, pDeviceDetails);
> + return FAudio_GetDeviceDetails(This->faudio, index, (FAudioDeviceDetails *)pDeviceDetails);
> +}
> +
> +static HRESULT WINAPI XA23_Initialize(IXAudio23 *iface, UINT32 flags,
> + XAUDIO2_PROCESSOR processor)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + TRACE("(%p)->(0x%x, 0x%x)\n", This, flags, processor);
> + return xaudio2_initialize(This, flags, processor);
> +}
> +
> +static HRESULT WINAPI XA23_RegisterForCallbacks(IXAudio23 *iface,
> + IXAudio2EngineCallback *pCallback)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_RegisterForCallbacks(&This->IXAudio2_iface, pCallback);
> +}
> +
> +static void WINAPI XA23_UnregisterForCallbacks(IXAudio23 *iface,
> + IXAudio2EngineCallback *pCallback)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + IXAudio2_UnregisterForCallbacks(&This->IXAudio2_iface, pCallback);
> +}
> +
> +static HRESULT WINAPI XA23_CreateSourceVoice(IXAudio23 *iface,
> + IXAudio2SourceVoice **ppSourceVoice, const WAVEFORMATEX *pSourceFormat,
> + UINT32 flags, float maxFrequencyRatio,
> + IXAudio2VoiceCallback *pCallback, const XAUDIO23_VOICE_SENDS *pSendList,
> + const XAUDIO2_EFFECT_CHAIN *pEffectChain)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + XAUDIO2_VOICE_SENDS sends, *psends = NULL;
> + HRESULT hr;
> +
> + if(pSendList){
> + sends.SendCount = pSendList->OutputCount;
> + sends.pSends = convert_send_descriptors23(pSendList);
> + psends = &sends;
> + }
> +
> + hr = IXAudio2_CreateSourceVoice(&This->IXAudio2_iface, ppSourceVoice,
> + pSourceFormat, flags, maxFrequencyRatio, pCallback, psends,
> + pEffectChain);
> +
> + if(pSendList)
> + HeapFree(GetProcessHeap(), 0, sends.pSends);
> +
> + return hr;
> +}
> +
> +static HRESULT WINAPI XA23_CreateSubmixVoice(IXAudio23 *iface,
> + IXAudio2SubmixVoice **ppSubmixVoice, UINT32 inputChannels,
> + UINT32 inputSampleRate, UINT32 flags, UINT32 processingStage,
> + const XAUDIO23_VOICE_SENDS *pSendList,
> + const XAUDIO2_EFFECT_CHAIN *pEffectChain)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + XAUDIO2_VOICE_SENDS sends, *psends = NULL;
> + HRESULT hr;
> +
> + if(pSendList){
> + sends.SendCount = pSendList->OutputCount;
> + sends.pSends = convert_send_descriptors23(pSendList);
> + psends = &sends;
> + }
> +
> + hr = IXAudio2_CreateSubmixVoice(&This->IXAudio2_iface, ppSubmixVoice,
> + inputChannels, inputSampleRate, flags, processingStage, psends,
> + pEffectChain);
> +
> + if(pSendList)
> + HeapFree(GetProcessHeap(), 0, sends.pSends);
> +
> + return hr;
> +}
> +
> +static HRESULT WINAPI XA23_CreateMasteringVoice(IXAudio23 *iface,
> + IXAudio2MasteringVoice **ppMasteringVoice, UINT32 inputChannels,
> + UINT32 inputSampleRate, UINT32 flags, UINT32 deviceIndex,
> + const XAUDIO2_EFFECT_CHAIN *pEffectChain)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> +
> + TRACE("(%p)->(%p, %u, %u, 0x%x, %u, %p)\n", This, ppMasteringVoice,
> + inputChannels, inputSampleRate, flags, deviceIndex,
> + pEffectChain);
> +
> + EnterCriticalSection(&This->lock);
> +
> + /* XAUDIO2_VER == 3 */
> + *ppMasteringVoice = (IXAudio2MasteringVoice*)&This->mst.IXAudio23MasteringVoice_iface;
> +
> + EnterCriticalSection(&This->mst.lock);
> +
> + if(This->mst.in_use){
> + LeaveCriticalSection(&This->mst.lock);
> + LeaveCriticalSection(&This->lock);
> + return COMPAT_E_INVALID_CALL;
> + }
> +
> + LeaveCriticalSection(&This->lock);
> +
> + This->mst.effect_chain = wrap_effect_chain(pEffectChain);
> +
> + pthread_mutex_lock(&This->mst.engine_lock);
> +
> + This->mst.engine_thread = CreateThread(NULL, 0, &engine_thread, &This->mst, 0, NULL);
> +
> + pthread_cond_wait(&This->mst.engine_done, &This->mst.engine_lock);
> +
> + pthread_mutex_unlock(&This->mst.engine_lock);
> +
> + FAudio_SetEngineProcedureEXT(This->faudio, &engine_cb, &This->mst);
> +
> + FAudio_CreateMasteringVoice(This->faudio, &This->mst.faudio_voice, inputChannels,
> + inputSampleRate, flags, deviceIndex, This->mst.effect_chain);
> +
> + This->mst.in_use = TRUE;
> +
> + LeaveCriticalSection(&This->mst.lock);
> +
> + return S_OK;
> +}
> +
> +static HRESULT WINAPI XA23_StartEngine(IXAudio23 *iface)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_StartEngine(&This->IXAudio2_iface);
> +}
> +
> +static void WINAPI XA23_StopEngine(IXAudio23 *iface)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_StopEngine(&This->IXAudio2_iface);
> +}
> +
> +static HRESULT WINAPI XA23_CommitChanges(IXAudio23 *iface, UINT32 operationSet)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_CommitChanges(&This->IXAudio2_iface, operationSet);
> +}
> +
> +static void WINAPI XA23_GetPerformanceData(IXAudio23 *iface,
> + XAUDIO2_PERFORMANCE_DATA *pPerfData)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_GetPerformanceData(&This->IXAudio2_iface, pPerfData);
> +}
> +
> +static void WINAPI XA23_SetDebugConfiguration(IXAudio23 *iface,
> + const XAUDIO2_DEBUG_CONFIGURATION *pDebugConfiguration,
> + void *pReserved)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_SetDebugConfiguration(&This->IXAudio2_iface,
> + pDebugConfiguration, pReserved);
> +}
> +
> +const IXAudio23Vtbl XAudio23_Vtbl = {
> + XA23_QueryInterface,
> + XA23_AddRef,
> + XA23_Release,
> + XA23_GetDeviceCount,
> + XA23_GetDeviceDetails,
> + XA23_Initialize,
> + XA23_RegisterForCallbacks,
> + XA23_UnregisterForCallbacks,
> + XA23_CreateSourceVoice,
> + XA23_CreateSubmixVoice,
> + XA23_CreateMasteringVoice,
> + XA23_StartEngine,
> + XA23_StopEngine,
> + XA23_CommitChanges,
> + XA23_GetPerformanceData,
> + XA23_SetDebugConfiguration
> +};
> +
> #elif XAUDIO2_VER <= 7
>
> static inline IXAudio2Impl *impl_from_IXAudio27(IXAudio27 *iface)
> @@ -2588,12 +2804,8 @@ static HRESULT WINAPI XA27_CreateMasteringVoice(IXAudio27 *iface,
>
> EnterCriticalSection(&This->lock);
>
> - /* 3 <= XAUDIO2_VER <= 7 */
> -#if XAUDIO2_VER == 3
> - *ppMasteringVoice = (IXAudio2MasteringVoice*)&This->mst.IXAudio23MasteringVoice_iface;
> -#else
> + /* 4 <= XAUDIO2_VER <= 7 */
> *ppMasteringVoice = (IXAudio2MasteringVoice*)&This->mst.IXAudio27MasteringVoice_iface;
> -#endif
>
> EnterCriticalSection(&This->mst.lock);
>
> diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c
> index f338b56dc9..18306a1603 100644
> --- a/dlls/xaudio2_7/xaudio_dll.c
> +++ b/dlls/xaudio2_7/xaudio_dll.c
> @@ -1400,6 +1400,8 @@ static HRESULT WINAPI IXAudio2Impl_QueryInterface(IXAudio2 *iface, REFIID riid,
> *ppvObject = &This->IXAudio20_iface;
> #elif XAUDIO2_VER <= 2
> *ppvObject = &This->IXAudio22_iface;
> +#elif XAUDIO2_VER <= 3
> + *ppvObject = &This->IXAudio23_iface;
> #elif XAUDIO2_VER <= 7
> *ppvObject = &This->IXAudio27_iface;
> #else
> @@ -1902,6 +1904,8 @@ static HRESULT WINAPI XAudio2CF_CreateInstance(IClassFactory *iface, IUnknown *p
> object->IXAudio20_iface.lpVtbl = &XAudio20_Vtbl;
> #elif XAUDIO2_VER <= 2
> object->IXAudio22_iface.lpVtbl = &XAudio22_Vtbl;
> +#elif XAUDIO2_VER <= 3
> + object->IXAudio23_iface.lpVtbl = &XAudio23_Vtbl;
> #elif XAUDIO2_VER <= 7
> object->IXAudio27_iface.lpVtbl = &XAudio27_Vtbl;
> #endif
> diff --git a/dlls/xaudio2_7/xaudio_private.h b/dlls/xaudio2_7/xaudio_private.h
> index 84bab8257d..46d842bf4c 100644
> --- a/dlls/xaudio2_7/xaudio_private.h
> +++ b/dlls/xaudio2_7/xaudio_private.h
> @@ -111,6 +111,8 @@ typedef struct _IXAudio2Impl {
> IXAudio20 IXAudio20_iface;
> #elif XAUDIO2_VER <= 2
> IXAudio22 IXAudio22_iface;
> +#elif XAUDIO2_VER <= 3
> + IXAudio23 IXAudio23_iface;
> #elif XAUDIO2_VER <= 7
> IXAudio27 IXAudio27_iface;
> #endif
> @@ -158,6 +160,8 @@ extern XA2VoiceImpl *impl_from_IXAudio27MasteringVoice(IXAudio27MasteringVoice *
> extern const IXAudio20Vtbl XAudio20_Vtbl DECLSPEC_HIDDEN;
> #elif XAUDIO2_VER <= 2
> extern const IXAudio22Vtbl XAudio22_Vtbl DECLSPEC_HIDDEN;
> +#elif XAUDIO2_VER <= 3
> +extern const IXAudio23Vtbl XAudio23_Vtbl DECLSPEC_HIDDEN;
> #elif XAUDIO2_VER <= 7
> extern const IXAudio27Vtbl XAudio27_Vtbl DECLSPEC_HIDDEN;
> #endif
> diff --git a/include/xaudio2.idl b/include/xaudio2.idl
> index e97cf9948b..074454d490 100644
> --- a/include/xaudio2.idl
> +++ b/include/xaudio2.idl
> @@ -1050,6 +1050,67 @@ interface IXAudio22 : IUnknown
> [in, defaultvalue(NULL)] void* pReserved);
> }
>
> +[
> + object,
> + uuid(8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb), /* all versions before 28 share IID_IXAudio */
> +]
> +/* XAudio2 2.3's IXAudio2 interface. Actually called IXAudio2 in the Nov 2008
> + * DX SDK */
> +interface IXAudio23 : IUnknown
> +{
> + HRESULT GetDeviceCount([out] UINT32* pCount);
> +
> + HRESULT GetDeviceDetails(
> + [in] UINT32 Index,
> + [out] XAUDIO2_DEVICE_DETAILS* pDeviceDetails);
> +
> + HRESULT Initialize(
> + [in, defaultvalue(0)] UINT32 Flags,
> + [in, defaultvalue(XAUDIO2_DEFAULT_PROCESSOR)] XAUDIO2_PROCESSOR XAudio2Processor);
> +
> + HRESULT RegisterForCallbacks([in] IXAudio2EngineCallback* pCallback);
> +
> + void UnregisterForCallbacks([in] IXAudio2EngineCallback* pCallback);
> +
> + HRESULT CreateSourceVoice(
> + [out] IXAudio2SourceVoice** ppSourceVoice,
> + [in] const WAVEFORMATEX* pSourceFormat,
> + [in, defaultvalue(0)] UINT32 Flags,
> + [in, defaultvalue(XAUDIO2_DEFAULT_FREQ_RATIO)] float MaxFrequencyRatio,
> + [in, defaultvalue(NULL)] IXAudio2VoiceCallback* pCallback,
> + [in, defaultvalue(NULL)] const XAUDIO23_VOICE_SENDS* pSendList,
> + [in, defaultvalue(NULL)] const XAUDIO2_EFFECT_CHAIN* pEffectChain);
> +
> + HRESULT CreateSubmixVoice(
> + [out] IXAudio2SubmixVoice** ppSubmixVoice,
> + [in] UINT32 InputChannels,
> + [in] UINT32 InputSampleRate,
> + [in, defaultvalue(0)] UINT32 Flags,
> + [in, defaultvalue(0)] UINT32 ProcessingStage,
> + [in, defaultvalue(NULL)] const XAUDIO23_VOICE_SENDS* pSendList,
> + [in, defaultvalue(NULL)] const XAUDIO2_EFFECT_CHAIN* pEffectChain);
> +
> + HRESULT CreateMasteringVoice(
> + [out] IXAudio2MasteringVoice** ppMasteringVoice,
> + [in, defaultvalue(XAUDIO2_DEFAULT_CHANNELS)] UINT32 InputChannels,
> + [in, defaultvalue(XAUDIO2_DEFAULT_SAMPLERATE)] UINT32 InputSampleRate,
> + [in, defaultvalue(0)] UINT32 Flags,
> + [in, defaultvalue(0)] UINT32 DeviceIndex,
> + [in, defaultvalue(NULL)] const XAUDIO2_EFFECT_CHAIN* pEffectChain);
> +
> + HRESULT StartEngine();
> +
> + void StopEngine();
> +
> + HRESULT CommitChanges([in] UINT32 OperationSet);
> +
> + void GetPerformanceData([out] XAUDIO2_PERFORMANCE_DATA* pPerfData);
> +
> + [local] void SetDebugConfiguration(
> + [in] const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration,
> + [in, defaultvalue(NULL)] void* pReserved);
> +}
> +
> [
> object,
> uuid(8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb),
> --
> 2.17.2
>
>
>
Feb. 28, 2019
Re: [PATCH] xaudio2: Fix uninitialized variable access (Valgrind)
by Andrew Eikum
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46724
Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com>
On Tue, Feb 26, 2019 at 06:25:38PM -0500, elee(a)codeweavers.com wrote:
> From: Ethan Lee <elee(a)codeweavers.com>
>
> Signed-off-by: Ethan Lee <elee(a)codeweavers.com>
> ---
> dlls/xaudio2_7/compat.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/dlls/xaudio2_7/compat.c b/dlls/xaudio2_7/compat.c
> index 318f668589..bc33cb92ed 100644
> --- a/dlls/xaudio2_7/compat.c
> +++ b/dlls/xaudio2_7/compat.c
> @@ -923,7 +923,7 @@ static HRESULT WINAPI XA20SUB_SetOutputVoices(IXAudio20SubmixVoice *iface,
> const XAUDIO23_VOICE_SENDS *pSendList)
> {
> XA2VoiceImpl *This = impl_from_IXAudio20SubmixVoice(iface);
> - XAUDIO2_VOICE_SENDS sends, *psends;
> + XAUDIO2_VOICE_SENDS sends, *psends = NULL;
> HRESULT hr;
>
> TRACE("%p, %p\n", This, pSendList);
> @@ -1483,7 +1483,7 @@ static HRESULT WINAPI XA20M_SetOutputVoices(IXAudio20MasteringVoice *iface,
> const XAUDIO23_VOICE_SENDS *pSendList)
> {
> XA2VoiceImpl *This = impl_from_IXAudio20MasteringVoice(iface);
> - XAUDIO2_VOICE_SENDS sends, *psends;
> + XAUDIO2_VOICE_SENDS sends, *psends = NULL;
> HRESULT hr;
>
> TRACE("%p, %p\n", This, pSendList);
> @@ -2115,7 +2115,7 @@ static HRESULT WINAPI XA20_CreateSubmixVoice(IXAudio20 *iface,
> const XAUDIO2_EFFECT_CHAIN *pEffectChain)
> {
> IXAudio2Impl *This = impl_from_IXAudio20(iface);
> - XAUDIO2_VOICE_SENDS sends, *psends;
> + XAUDIO2_VOICE_SENDS sends, *psends = NULL;
> HRESULT hr;
>
> if(pSendList){
> @@ -2350,7 +2350,7 @@ static HRESULT WINAPI XA22_CreateSubmixVoice(IXAudio22 *iface,
> const XAUDIO2_EFFECT_CHAIN *pEffectChain)
> {
> IXAudio2Impl *This = impl_from_IXAudio22(iface);
> - XAUDIO2_VOICE_SENDS sends, *psends;
> + XAUDIO2_VOICE_SENDS sends, *psends = NULL;
> HRESULT hr;
>
> if(pSendList){
> --
> 2.17.2
>
>
>
Feb. 28, 2019
Re: [PATCH] xaudio2: IXAudio23 needs its own interface, for XAUDIO23_VOICE_SENDS parameters
by Andrew Eikum
Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com>
On Wed, Feb 27, 2019 at 11:36:56AM -0500, elee(a)codeweavers.com wrote:
> From: Ethan Lee <elee(a)codeweavers.com>
>
> Signed-off-by: Ethan Lee <elee(a)codeweavers.com>
> ---
> dlls/xaudio2_7/compat.c | 222 +++++++++++++++++++++++++++++++-
> dlls/xaudio2_7/xaudio_dll.c | 4 +
> dlls/xaudio2_7/xaudio_private.h | 4 +
> include/xaudio2.idl | 61 +++++++++
> 4 files changed, 286 insertions(+), 5 deletions(-)
>
> diff --git a/dlls/xaudio2_7/compat.c b/dlls/xaudio2_7/compat.c
> index bc33cb92ed..c4538ae367 100644
> --- a/dlls/xaudio2_7/compat.c
> +++ b/dlls/xaudio2_7/compat.c
> @@ -2488,6 +2488,222 @@ const IXAudio22Vtbl XAudio22_Vtbl = {
> XA22_SetDebugConfiguration
> };
>
> +#elif XAUDIO2_VER <= 3
> +
> +static inline IXAudio2Impl *impl_from_IXAudio23(IXAudio23 *iface)
> +{
> + return CONTAINING_RECORD(iface, IXAudio2Impl, IXAudio23_iface);
> +}
> +
> +static HRESULT WINAPI XA23_QueryInterface(IXAudio23 *iface, REFIID riid,
> + void **ppvObject)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_QueryInterface(&This->IXAudio2_iface, riid, ppvObject);
> +}
> +
> +static ULONG WINAPI XA23_AddRef(IXAudio23 *iface)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_AddRef(&This->IXAudio2_iface);
> +}
> +
> +static ULONG WINAPI XA23_Release(IXAudio23 *iface)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_Release(&This->IXAudio2_iface);
> +}
> +
> +static HRESULT WINAPI XA23_GetDeviceCount(IXAudio23 *iface, UINT32 *pCount)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + TRACE("%p, %p\n", This, pCount);
> + return FAudio_GetDeviceCount(This->faudio, pCount);
> +}
> +
> +static HRESULT WINAPI XA23_GetDeviceDetails(IXAudio23 *iface, UINT32 index,
> + XAUDIO2_DEVICE_DETAILS *pDeviceDetails)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + TRACE("%p, %u, %p\n", This, index, pDeviceDetails);
> + return FAudio_GetDeviceDetails(This->faudio, index, (FAudioDeviceDetails *)pDeviceDetails);
> +}
> +
> +static HRESULT WINAPI XA23_Initialize(IXAudio23 *iface, UINT32 flags,
> + XAUDIO2_PROCESSOR processor)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + TRACE("(%p)->(0x%x, 0x%x)\n", This, flags, processor);
> + return xaudio2_initialize(This, flags, processor);
> +}
> +
> +static HRESULT WINAPI XA23_RegisterForCallbacks(IXAudio23 *iface,
> + IXAudio2EngineCallback *pCallback)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_RegisterForCallbacks(&This->IXAudio2_iface, pCallback);
> +}
> +
> +static void WINAPI XA23_UnregisterForCallbacks(IXAudio23 *iface,
> + IXAudio2EngineCallback *pCallback)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + IXAudio2_UnregisterForCallbacks(&This->IXAudio2_iface, pCallback);
> +}
> +
> +static HRESULT WINAPI XA23_CreateSourceVoice(IXAudio23 *iface,
> + IXAudio2SourceVoice **ppSourceVoice, const WAVEFORMATEX *pSourceFormat,
> + UINT32 flags, float maxFrequencyRatio,
> + IXAudio2VoiceCallback *pCallback, const XAUDIO23_VOICE_SENDS *pSendList,
> + const XAUDIO2_EFFECT_CHAIN *pEffectChain)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + XAUDIO2_VOICE_SENDS sends, *psends = NULL;
> + HRESULT hr;
> +
> + if(pSendList){
> + sends.SendCount = pSendList->OutputCount;
> + sends.pSends = convert_send_descriptors23(pSendList);
> + psends = &sends;
> + }
> +
> + hr = IXAudio2_CreateSourceVoice(&This->IXAudio2_iface, ppSourceVoice,
> + pSourceFormat, flags, maxFrequencyRatio, pCallback, psends,
> + pEffectChain);
> +
> + if(pSendList)
> + HeapFree(GetProcessHeap(), 0, sends.pSends);
> +
> + return hr;
> +}
> +
> +static HRESULT WINAPI XA23_CreateSubmixVoice(IXAudio23 *iface,
> + IXAudio2SubmixVoice **ppSubmixVoice, UINT32 inputChannels,
> + UINT32 inputSampleRate, UINT32 flags, UINT32 processingStage,
> + const XAUDIO23_VOICE_SENDS *pSendList,
> + const XAUDIO2_EFFECT_CHAIN *pEffectChain)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + XAUDIO2_VOICE_SENDS sends, *psends = NULL;
> + HRESULT hr;
> +
> + if(pSendList){
> + sends.SendCount = pSendList->OutputCount;
> + sends.pSends = convert_send_descriptors23(pSendList);
> + psends = &sends;
> + }
> +
> + hr = IXAudio2_CreateSubmixVoice(&This->IXAudio2_iface, ppSubmixVoice,
> + inputChannels, inputSampleRate, flags, processingStage, psends,
> + pEffectChain);
> +
> + if(pSendList)
> + HeapFree(GetProcessHeap(), 0, sends.pSends);
> +
> + return hr;
> +}
> +
> +static HRESULT WINAPI XA23_CreateMasteringVoice(IXAudio23 *iface,
> + IXAudio2MasteringVoice **ppMasteringVoice, UINT32 inputChannels,
> + UINT32 inputSampleRate, UINT32 flags, UINT32 deviceIndex,
> + const XAUDIO2_EFFECT_CHAIN *pEffectChain)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> +
> + TRACE("(%p)->(%p, %u, %u, 0x%x, %u, %p)\n", This, ppMasteringVoice,
> + inputChannels, inputSampleRate, flags, deviceIndex,
> + pEffectChain);
> +
> + EnterCriticalSection(&This->lock);
> +
> + /* XAUDIO2_VER == 3 */
> + *ppMasteringVoice = (IXAudio2MasteringVoice*)&This->mst.IXAudio23MasteringVoice_iface;
> +
> + EnterCriticalSection(&This->mst.lock);
> +
> + if(This->mst.in_use){
> + LeaveCriticalSection(&This->mst.lock);
> + LeaveCriticalSection(&This->lock);
> + return COMPAT_E_INVALID_CALL;
> + }
> +
> + LeaveCriticalSection(&This->lock);
> +
> + This->mst.effect_chain = wrap_effect_chain(pEffectChain);
> +
> + pthread_mutex_lock(&This->mst.engine_lock);
> +
> + This->mst.engine_thread = CreateThread(NULL, 0, &engine_thread, &This->mst, 0, NULL);
> +
> + pthread_cond_wait(&This->mst.engine_done, &This->mst.engine_lock);
> +
> + pthread_mutex_unlock(&This->mst.engine_lock);
> +
> + FAudio_SetEngineProcedureEXT(This->faudio, &engine_cb, &This->mst);
> +
> + FAudio_CreateMasteringVoice(This->faudio, &This->mst.faudio_voice, inputChannels,
> + inputSampleRate, flags, deviceIndex, This->mst.effect_chain);
> +
> + This->mst.in_use = TRUE;
> +
> + LeaveCriticalSection(&This->mst.lock);
> +
> + return S_OK;
> +}
> +
> +static HRESULT WINAPI XA23_StartEngine(IXAudio23 *iface)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_StartEngine(&This->IXAudio2_iface);
> +}
> +
> +static void WINAPI XA23_StopEngine(IXAudio23 *iface)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_StopEngine(&This->IXAudio2_iface);
> +}
> +
> +static HRESULT WINAPI XA23_CommitChanges(IXAudio23 *iface, UINT32 operationSet)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_CommitChanges(&This->IXAudio2_iface, operationSet);
> +}
> +
> +static void WINAPI XA23_GetPerformanceData(IXAudio23 *iface,
> + XAUDIO2_PERFORMANCE_DATA *pPerfData)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_GetPerformanceData(&This->IXAudio2_iface, pPerfData);
> +}
> +
> +static void WINAPI XA23_SetDebugConfiguration(IXAudio23 *iface,
> + const XAUDIO2_DEBUG_CONFIGURATION *pDebugConfiguration,
> + void *pReserved)
> +{
> + IXAudio2Impl *This = impl_from_IXAudio23(iface);
> + return IXAudio2_SetDebugConfiguration(&This->IXAudio2_iface,
> + pDebugConfiguration, pReserved);
> +}
> +
> +const IXAudio23Vtbl XAudio23_Vtbl = {
> + XA23_QueryInterface,
> + XA23_AddRef,
> + XA23_Release,
> + XA23_GetDeviceCount,
> + XA23_GetDeviceDetails,
> + XA23_Initialize,
> + XA23_RegisterForCallbacks,
> + XA23_UnregisterForCallbacks,
> + XA23_CreateSourceVoice,
> + XA23_CreateSubmixVoice,
> + XA23_CreateMasteringVoice,
> + XA23_StartEngine,
> + XA23_StopEngine,
> + XA23_CommitChanges,
> + XA23_GetPerformanceData,
> + XA23_SetDebugConfiguration
> +};
> +
> #elif XAUDIO2_VER <= 7
>
> static inline IXAudio2Impl *impl_from_IXAudio27(IXAudio27 *iface)
> @@ -2588,12 +2804,8 @@ static HRESULT WINAPI XA27_CreateMasteringVoice(IXAudio27 *iface,
>
> EnterCriticalSection(&This->lock);
>
> - /* 3 <= XAUDIO2_VER <= 7 */
> -#if XAUDIO2_VER == 3
> - *ppMasteringVoice = (IXAudio2MasteringVoice*)&This->mst.IXAudio23MasteringVoice_iface;
> -#else
> + /* 4 <= XAUDIO2_VER <= 7 */
> *ppMasteringVoice = (IXAudio2MasteringVoice*)&This->mst.IXAudio27MasteringVoice_iface;
> -#endif
>
> EnterCriticalSection(&This->mst.lock);
>
> diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c
> index f338b56dc9..18306a1603 100644
> --- a/dlls/xaudio2_7/xaudio_dll.c
> +++ b/dlls/xaudio2_7/xaudio_dll.c
> @@ -1400,6 +1400,8 @@ static HRESULT WINAPI IXAudio2Impl_QueryInterface(IXAudio2 *iface, REFIID riid,
> *ppvObject = &This->IXAudio20_iface;
> #elif XAUDIO2_VER <= 2
> *ppvObject = &This->IXAudio22_iface;
> +#elif XAUDIO2_VER <= 3
> + *ppvObject = &This->IXAudio23_iface;
> #elif XAUDIO2_VER <= 7
> *ppvObject = &This->IXAudio27_iface;
> #else
> @@ -1902,6 +1904,8 @@ static HRESULT WINAPI XAudio2CF_CreateInstance(IClassFactory *iface, IUnknown *p
> object->IXAudio20_iface.lpVtbl = &XAudio20_Vtbl;
> #elif XAUDIO2_VER <= 2
> object->IXAudio22_iface.lpVtbl = &XAudio22_Vtbl;
> +#elif XAUDIO2_VER <= 3
> + object->IXAudio23_iface.lpVtbl = &XAudio23_Vtbl;
> #elif XAUDIO2_VER <= 7
> object->IXAudio27_iface.lpVtbl = &XAudio27_Vtbl;
> #endif
> diff --git a/dlls/xaudio2_7/xaudio_private.h b/dlls/xaudio2_7/xaudio_private.h
> index 84bab8257d..46d842bf4c 100644
> --- a/dlls/xaudio2_7/xaudio_private.h
> +++ b/dlls/xaudio2_7/xaudio_private.h
> @@ -111,6 +111,8 @@ typedef struct _IXAudio2Impl {
> IXAudio20 IXAudio20_iface;
> #elif XAUDIO2_VER <= 2
> IXAudio22 IXAudio22_iface;
> +#elif XAUDIO2_VER <= 3
> + IXAudio23 IXAudio23_iface;
> #elif XAUDIO2_VER <= 7
> IXAudio27 IXAudio27_iface;
> #endif
> @@ -158,6 +160,8 @@ extern XA2VoiceImpl *impl_from_IXAudio27MasteringVoice(IXAudio27MasteringVoice *
> extern const IXAudio20Vtbl XAudio20_Vtbl DECLSPEC_HIDDEN;
> #elif XAUDIO2_VER <= 2
> extern const IXAudio22Vtbl XAudio22_Vtbl DECLSPEC_HIDDEN;
> +#elif XAUDIO2_VER <= 3
> +extern const IXAudio23Vtbl XAudio23_Vtbl DECLSPEC_HIDDEN;
> #elif XAUDIO2_VER <= 7
> extern const IXAudio27Vtbl XAudio27_Vtbl DECLSPEC_HIDDEN;
> #endif
> diff --git a/include/xaudio2.idl b/include/xaudio2.idl
> index e97cf9948b..074454d490 100644
> --- a/include/xaudio2.idl
> +++ b/include/xaudio2.idl
> @@ -1050,6 +1050,67 @@ interface IXAudio22 : IUnknown
> [in, defaultvalue(NULL)] void* pReserved);
> }
>
> +[
> + object,
> + uuid(8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb), /* all versions before 28 share IID_IXAudio */
> +]
> +/* XAudio2 2.3's IXAudio2 interface. Actually called IXAudio2 in the Nov 2008
> + * DX SDK */
> +interface IXAudio23 : IUnknown
> +{
> + HRESULT GetDeviceCount([out] UINT32* pCount);
> +
> + HRESULT GetDeviceDetails(
> + [in] UINT32 Index,
> + [out] XAUDIO2_DEVICE_DETAILS* pDeviceDetails);
> +
> + HRESULT Initialize(
> + [in, defaultvalue(0)] UINT32 Flags,
> + [in, defaultvalue(XAUDIO2_DEFAULT_PROCESSOR)] XAUDIO2_PROCESSOR XAudio2Processor);
> +
> + HRESULT RegisterForCallbacks([in] IXAudio2EngineCallback* pCallback);
> +
> + void UnregisterForCallbacks([in] IXAudio2EngineCallback* pCallback);
> +
> + HRESULT CreateSourceVoice(
> + [out] IXAudio2SourceVoice** ppSourceVoice,
> + [in] const WAVEFORMATEX* pSourceFormat,
> + [in, defaultvalue(0)] UINT32 Flags,
> + [in, defaultvalue(XAUDIO2_DEFAULT_FREQ_RATIO)] float MaxFrequencyRatio,
> + [in, defaultvalue(NULL)] IXAudio2VoiceCallback* pCallback,
> + [in, defaultvalue(NULL)] const XAUDIO23_VOICE_SENDS* pSendList,
> + [in, defaultvalue(NULL)] const XAUDIO2_EFFECT_CHAIN* pEffectChain);
> +
> + HRESULT CreateSubmixVoice(
> + [out] IXAudio2SubmixVoice** ppSubmixVoice,
> + [in] UINT32 InputChannels,
> + [in] UINT32 InputSampleRate,
> + [in, defaultvalue(0)] UINT32 Flags,
> + [in, defaultvalue(0)] UINT32 ProcessingStage,
> + [in, defaultvalue(NULL)] const XAUDIO23_VOICE_SENDS* pSendList,
> + [in, defaultvalue(NULL)] const XAUDIO2_EFFECT_CHAIN* pEffectChain);
> +
> + HRESULT CreateMasteringVoice(
> + [out] IXAudio2MasteringVoice** ppMasteringVoice,
> + [in, defaultvalue(XAUDIO2_DEFAULT_CHANNELS)] UINT32 InputChannels,
> + [in, defaultvalue(XAUDIO2_DEFAULT_SAMPLERATE)] UINT32 InputSampleRate,
> + [in, defaultvalue(0)] UINT32 Flags,
> + [in, defaultvalue(0)] UINT32 DeviceIndex,
> + [in, defaultvalue(NULL)] const XAUDIO2_EFFECT_CHAIN* pEffectChain);
> +
> + HRESULT StartEngine();
> +
> + void StopEngine();
> +
> + HRESULT CommitChanges([in] UINT32 OperationSet);
> +
> + void GetPerformanceData([out] XAUDIO2_PERFORMANCE_DATA* pPerfData);
> +
> + [local] void SetDebugConfiguration(
> + [in] const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration,
> + [in, defaultvalue(NULL)] void* pReserved);
> +}
> +
> [
> object,
> uuid(8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb),
> --
> 2.17.2
>
>
>
Feb. 28, 2019
Re: [PATCH 5/5] user32/listbox: Implement LBS_NODATA for multi-selection listboxes
by Marvin
Hi,
While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=48420
Your paranoid android.
=== debian9 (32 bit report) ===
user32:
msg.c:8713: Test failed: WaitForSingleObject failed 102
msg.c:8719: Test failed: destroy child on thread exit: 0: the msg 0x0082 was expected, but got msg 0x000f instead
msg.c:8719: Test failed: destroy child on thread exit: 1: the msg 0x000f was expected, but got msg 0x0014 instead
msg.c:8719: Test failed: destroy child on thread exit: 2: the msg sequence is not complete: expected 0014 - actual 0000
Feb. 28, 2019
Re: [PATCH 4/5] user32/listbox: Use a helper to get the size of an item
by Marvin
Hi,
While running your changed tests on Windows, I think I found new failures.
Being a bot and all I'm not very good at pattern recognition, so I might be
wrong, but could you please double-check?
Full results can be found at:
https://testbot.winehq.org/JobDetails.pl?Key=48419
Your paranoid android.
=== debian9 (32 bit report) ===
user32:
msg.c:8713: Test failed: WaitForSingleObject failed 102
msg.c:8719: Test failed: destroy child on thread exit: 0: the msg 0x0082 was expected, but got msg 0x000f instead
msg.c:8719: Test failed: destroy child on thread exit: 1: the msg 0x000f was expected, but got msg 0x0014 instead
msg.c:8719: Test failed: destroy child on thread exit: 2: the msg sequence is not complete: expected 0014 - actual 0000
=== debian9 (32 bit Chinese:China report) ===
user32:
msg.c:8713: Test failed: WaitForSingleObject failed 102
msg.c:8719: Test failed: destroy child on thread exit: 0: the msg 0x0082 was expected, but got msg 0x000f instead
msg.c:8719: Test failed: destroy child on thread exit: 1: the msg 0x000f was expected, but got msg 0x0014 instead
msg.c:8719: Test failed: destroy child on thread exit: 2: the msg sequence is not complete: expected 0014 - actual 0000
=== debian9 (32 bit WoW report) ===
user32:
menu.c:2354: Test failed: test 21
menu: Timeout
msg.c:8713: Test failed: WaitForSingleObject failed 102
msg.c:8719: Test failed: destroy child on thread exit: 0: the msg 0x0082 was expected, but got msg 0x000f instead
msg.c:8719: Test failed: destroy child on thread exit: 1: the msg 0x000f was expected, but got msg 0x0014 instead
msg.c:8719: Test failed: destroy child on thread exit: 2: the msg sequence is not complete: expected 0014 - actual 0000
=== debian9 (64 bit WoW report) ===
user32:
clipboard.c:760: Test failed: 4: gle 5
clipboard.c:765: Test failed: 4.0: got 0000 instead of 0003
clipboard.c:805: Test failed: 4: gle 1418
clipboard.c:815: Test failed: 4: count 2
clipboard.c:818: Test failed: 4: gle 1418
clipboard.c:852: Test failed: 4: format 0003 got data 0x1c512
clipboard.c:853: Test failed: 4.0: formats 00000000 have been rendered
clipboard.c:858: Test failed: 4.0: formats 00000000 have been rendered
clipboard.c:852: Test failed: 4: format 000e got data 0x20045
clipboard.c:853: Test failed: 4.1: formats 00000000 have been rendered
clipboard.c:858: Test failed: 4.1: formats 00000000 have been rendered
msg.c:8713: Test failed: WaitForSingleObject failed 102
msg.c:8719: Test failed: destroy child on thread exit: 0: the msg 0x0082 was expected, but got msg 0x000f instead
msg.c:8719: Test failed: destroy child on thread exit: 1: the msg 0x000f was expected, but got msg 0x0014 instead
msg.c:8719: Test failed: destroy child on thread exit: 2: the msg sequence is not complete: expected 0014 - actual 0000
Feb. 28, 2019