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
January 2020
- 75 participants
- 1522 messages
Re: [PATCH 2/5] ole32: Respond to CLSID in pointer moniker interface query.
by Marvin
Hi,
While running your changed tests, 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=64253
Your paranoid android.
=== debian10 (64 bit WoW report) ===
ole32:
clipboard.c:1529: Test failed: gle 5
clipboard.c:1531: Test failed: gle 1418
clipboard.c:1533: Test failed: gle 1418
clipboard.c:1541: Test failed: got 800401d0
Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004069b5).
Report errors:
ole32:clipboard crashed (c0000005)
Jan. 31, 2020
[PATCH 5/5] ole32: Respond to CLSID in item moniker interface query.
by Nikolay Sivov
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/ole32/itemmoniker.c | 10 ++++++----
dlls/ole32/tests/moniker.c | 8 ++------
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/dlls/ole32/itemmoniker.c b/dlls/ole32/itemmoniker.c
index 78b23ae633..dee4fc0bf2 100644
--- a/dlls/ole32/itemmoniker.c
+++ b/dlls/ole32/itemmoniker.c
@@ -140,21 +140,23 @@ static HRESULT set_container_lock(IOleItemContainer *container, IBindCtx *pbc)
/*******************************************************************************
* ItemMoniker_QueryInterface
*******************************************************************************/
-static HRESULT WINAPI ItemMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
+static HRESULT WINAPI ItemMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
{
ItemMonikerImpl *This = impl_from_IMoniker(iface);
- TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject);
+ TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), ppvObject);
if (!ppvObject)
return E_INVALIDARG;
- /* Compare the riid with the interface IDs implemented by this object.*/
if (IsEqualIID(&IID_IUnknown, riid) ||
IsEqualIID(&IID_IPersist, riid) ||
IsEqualIID(&IID_IPersistStream, riid) ||
- IsEqualIID(&IID_IMoniker, riid))
+ IsEqualIID(&IID_IMoniker, riid) ||
+ IsEqualGUID(&CLSID_ItemMoniker, riid))
+ {
*ppvObject = iface;
+ }
else if (IsEqualIID(&IID_IROTData, riid))
*ppvObject = &This->IROTData_iface;
else if (IsEqualIID(&IID_IMarshal, riid))
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index b22cf84946..d485360215 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -2087,13 +2087,9 @@ static void test_item_moniker(void)
ok(hr == S_OK, "Failed to create item moniker, hr %#x.\n", hr);
hr = IMoniker_QueryInterface(moniker, &CLSID_ItemMoniker, (void **)&unknown);
-todo_wine
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- if (SUCCEEDED(hr))
- {
- ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
- IUnknown_Release(unknown);
- }
+ ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+ IUnknown_Release(unknown);
test_moniker("item moniker 2", moniker,
expected_item_moniker_marshal_data2, sizeof(expected_item_moniker_marshal_data2),
--
2.24.1
Jan. 31, 2020
[PATCH 4/5] ole32: Respond to CLSID in file moniker interface query.
by Nikolay Sivov
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/ole32/filemoniker.c | 21 ++++++++-------------
dlls/ole32/tests/moniker.c | 8 ++------
2 files changed, 10 insertions(+), 19 deletions(-)
diff --git a/dlls/ole32/filemoniker.c b/dlls/ole32/filemoniker.c
index 6310a5acd5..e5978169ca 100644
--- a/dlls/ole32/filemoniker.c
+++ b/dlls/ole32/filemoniker.c
@@ -64,28 +64,25 @@ static HRESULT FileMonikerImpl_Destroy(FileMonikerImpl* iface);
/*******************************************************************************
* FileMoniker_QueryInterface
*/
-static HRESULT WINAPI
-FileMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
+static HRESULT WINAPI FileMonikerImpl_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
{
FileMonikerImpl *This = impl_from_IMoniker(iface);
- TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject);
+ TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), ppvObject);
- /* Perform a sanity check on the parameters.*/
- if ( ppvObject==0 )
+ if (!ppvObject)
return E_INVALIDARG;
- /* Initialize the return parameter */
*ppvObject = 0;
- /* Compare the riid with the interface IDs implemented by this object.*/
if (IsEqualIID(&IID_IUnknown, riid) ||
IsEqualIID(&IID_IPersist, riid) ||
IsEqualIID(&IID_IPersistStream,riid) ||
- IsEqualIID(&IID_IMoniker, riid)
- )
+ IsEqualIID(&IID_IMoniker, riid) ||
+ IsEqualGUID(&CLSID_FileMoniker, riid))
+ {
*ppvObject = iface;
-
+ }
else if (IsEqualIID(&IID_IROTData, riid))
*ppvObject = &This->IROTData_iface;
else if (IsEqualIID(&IID_IMarshal, riid))
@@ -98,11 +95,9 @@ FileMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
return IUnknown_QueryInterface(This->pMarshal, riid, ppvObject);
}
- /* Check that we obtained an interface.*/
- if ((*ppvObject)==0)
+ if (!*ppvObject)
return E_NOINTERFACE;
- /* Query Interface always increases the reference count by one when it is successful */
IMoniker_AddRef(iface);
return S_OK;
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index e0a87e0701..b22cf84946 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -1877,13 +1877,9 @@ static void test_file_moniker(WCHAR* path)
ok_ole_success(hr, CreateFileMoniker);
hr = IMoniker_QueryInterface(moniker1, &CLSID_FileMoniker, (void **)&unk);
-todo_wine
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- if (SUCCEEDED(hr))
- {
- ok(unk == (IUnknown *)moniker1, "Unexpected interface.\n");
- IUnknown_Release(unk);
- }
+ ok(unk == (IUnknown *)moniker1, "Unexpected interface.\n");
+ IUnknown_Release(unk);
hr = IMoniker_Inverse(moniker1, &inverse);
ok(hr == S_OK, "Failed to get inverse, hr %#x.\n", hr);
--
2.24.1
Jan. 31, 2020
[PATCH 3/5] ole32: Respond to CLSID in class moniker interface query.
by Nikolay Sivov
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/ole32/classmoniker.c | 12 ++++--------
dlls/ole32/tests/moniker.c | 8 ++------
2 files changed, 6 insertions(+), 14 deletions(-)
diff --git a/dlls/ole32/classmoniker.c b/dlls/ole32/classmoniker.c
index 07d55e2f94..86d954a9c9 100644
--- a/dlls/ole32/classmoniker.c
+++ b/dlls/ole32/classmoniker.c
@@ -60,24 +60,22 @@ static inline ClassMoniker *impl_from_IROTData(IROTData *iface)
/*******************************************************************************
* ClassMoniker_QueryInterface
*******************************************************************************/
-static HRESULT WINAPI ClassMoniker_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
+static HRESULT WINAPI ClassMoniker_QueryInterface(IMoniker *iface, REFIID riid, void **ppvObject)
{
ClassMoniker *This = impl_from_IMoniker(iface);
- TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject);
+ TRACE("%p, %s, %p.\n", iface, debugstr_guid(riid), ppvObject);
- /* Perform a sanity check on the parameters.*/
if (!ppvObject)
return E_POINTER;
- /* Initialize the return parameter */
*ppvObject = 0;
- /* Compare the riid with the interface IDs implemented by this object.*/
if (IsEqualIID(&IID_IUnknown, riid) ||
IsEqualIID(&IID_IPersist, riid) ||
IsEqualIID(&IID_IPersistStream, riid) ||
- IsEqualIID(&IID_IMoniker, riid))
+ IsEqualIID(&IID_IMoniker, riid) ||
+ IsEqualGUID(&CLSID_ClassMoniker, riid))
{
*ppvObject = iface;
}
@@ -93,11 +91,9 @@ static HRESULT WINAPI ClassMoniker_QueryInterface(IMoniker* iface,REFIID riid,vo
return IUnknown_QueryInterface(This->pMarshal, riid, ppvObject);
}
- /* Check that we obtained an interface.*/
if (!*ppvObject)
return E_NOINTERFACE;
- /* Query Interface always increases the reference count by one when it is successful */
IMoniker_AddRef(iface);
return S_OK;
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index 0e6eaff57b..e0a87e0701 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -1773,13 +1773,9 @@ static void test_class_moniker(void)
ok_ole_success(hr, CreateClassMoniker);
hr = IMoniker_QueryInterface(moniker, &CLSID_ClassMoniker, (void **)&unknown);
-todo_wine
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- if (SUCCEEDED(hr))
- {
- ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
- IUnknown_Release(unknown);
- }
+ ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+ IUnknown_Release(unknown);
test_moniker("class moniker", moniker,
expected_class_moniker_marshal_data, sizeof(expected_class_moniker_marshal_data),
--
2.24.1
Jan. 31, 2020
[PATCH 2/5] ole32: Respond to CLSID in pointer moniker interface query.
by Nikolay Sivov
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/ole32/pointermoniker.c | 3 ++-
dlls/ole32/tests/moniker.c | 9 ++-------
2 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/dlls/ole32/pointermoniker.c b/dlls/ole32/pointermoniker.c
index 2ece11f53b..34692c4965 100644
--- a/dlls/ole32/pointermoniker.c
+++ b/dlls/ole32/pointermoniker.c
@@ -74,7 +74,8 @@ static HRESULT WINAPI PointerMonikerImpl_QueryInterface(IMoniker *iface, REFIID
if (IsEqualIID(&IID_IUnknown, riid) ||
IsEqualIID(&IID_IPersist, riid) ||
IsEqualIID(&IID_IPersistStream, riid) ||
- IsEqualIID(&IID_IMoniker, riid))
+ IsEqualIID(&IID_IMoniker, riid) ||
+ IsEqualGUID(&CLSID_PointerMoniker, riid))
{
*ppvObject = iface;
}
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index 3dd7048ef4..0e6eaff57b 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -2886,13 +2886,8 @@ static void test_pointer_moniker(void)
ok(hr == E_INVALIDARG, "Unexpected hr %#x.\n", hr);
hr = IMoniker_QueryInterface(moniker, &CLSID_PointerMoniker, (void **)&unknown);
-todo_wine
- ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- if (SUCCEEDED(hr))
- {
- ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
- IUnknown_Release(unknown);
- }
+ ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+ IUnknown_Release(unknown);
hr = IMoniker_QueryInterface(moniker, &IID_IMarshal, (void **)&marshal);
ok(hr == S_OK, "Failed to get interface, hr %#x.\n", hr);
--
2.24.1
Jan. 31, 2020
[PATCH 1/5] ole32: Respond to CLSID in antimoniker interface query.
by Nikolay Sivov
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/ole32/antimoniker.c | 10 ++++------
dlls/ole32/tests/moniker.c | 8 ++------
2 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/dlls/ole32/antimoniker.c b/dlls/ole32/antimoniker.c
index 7abbfc544f..c0937a8d90 100644
--- a/dlls/ole32/antimoniker.c
+++ b/dlls/ole32/antimoniker.c
@@ -81,19 +81,19 @@ AntiMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppvObject);
- /* Perform a sanity check on the parameters.*/
if ( ppvObject==0 )
return E_INVALIDARG;
- /* Initialize the return parameter */
*ppvObject = 0;
- /* Compare the riid with the interface IDs implemented by this object.*/
if (IsEqualIID(&IID_IUnknown, riid) ||
IsEqualIID(&IID_IPersist, riid) ||
IsEqualIID(&IID_IPersistStream, riid) ||
- IsEqualIID(&IID_IMoniker, riid))
+ IsEqualIID(&IID_IMoniker, riid) ||
+ IsEqualGUID(&CLSID_AntiMoniker, riid))
+ {
*ppvObject = iface;
+ }
else if (IsEqualIID(&IID_IROTData, riid))
*ppvObject = &This->IROTData_iface;
else if (IsEqualIID(&IID_IMarshal, riid))
@@ -106,11 +106,9 @@ AntiMonikerImpl_QueryInterface(IMoniker* iface,REFIID riid,void** ppvObject)
return IUnknown_QueryInterface(This->pMarshal, riid, ppvObject);
}
- /* Check that we obtained an interface.*/
if ((*ppvObject)==0)
return E_NOINTERFACE;
- /* always increase the reference count by one when it is successful */
IMoniker_AddRef(iface);
return S_OK;
diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c
index 7e7d615645..3dd7048ef4 100644
--- a/dlls/ole32/tests/moniker.c
+++ b/dlls/ole32/tests/moniker.c
@@ -2454,13 +2454,9 @@ static void test_anti_moniker(void)
ok_ole_success(hr, CreateAntiMoniker);
hr = IMoniker_QueryInterface(moniker, &CLSID_AntiMoniker, (void **)&unknown);
-todo_wine
ok(hr == S_OK, "Unexpected hr %#x.\n", hr);
- if (SUCCEEDED(hr))
- {
- ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
- IUnknown_Release(unknown);
- }
+ ok(unknown == (IUnknown *)moniker, "Unexpected interface.\n");
+ IUnknown_Release(unknown);
test_moniker("anti moniker", moniker,
expected_anti_moniker_marshal_data, sizeof(expected_anti_moniker_marshal_data),
--
2.24.1
Jan. 31, 2020
[PATCH v7] include: Add xact3.idl
by Alistair Leslie-Hughes
From: Ethan Lee <elee(a)codeweavers.com>
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com>
---
include/Makefile.in | 1 +
include/xact3.idl | 533 ++++++++++++++++++++++++++++++++++++++++++++
include/xact3wb.h | 2 +
3 files changed, 536 insertions(+)
create mode 100644 include/xact3.idl
diff --git a/include/Makefile.in b/include/Makefile.in
index b1e7d0084f..acfbfe329a 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -772,6 +772,7 @@ SOURCES = \
wtypes.idl \
wuapi.idl \
x3daudio.h \
+ xact3.idl \
xact3wb.h \
xapo.idl \
xapofx.h \
diff --git a/include/xact3.idl b/include/xact3.idl
new file mode 100644
index 0000000000..b9f7445f97
--- /dev/null
+++ b/include/xact3.idl
@@ -0,0 +1,533 @@
+/*
+ * Copyright (c) 2018 Ethan Lee for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+import "unknwn.idl";
+import "xaudio2.idl";
+
+import "xact3wb.h";
+
+[
+ uuid(bcc782bc-6492-4c22-8c35-f5d72fe73c6e)
+]
+coclass XACTEngine
+{
+}
+
+interface IXACT3Engine;
+interface IXACT3SoundBank;
+interface IXACT3WaveBank;
+interface IXACT3Cue;
+interface IXACT3Wave;
+
+typedef WORD XACTCATEGORY;
+typedef BYTE XACTCHANNEL;
+typedef WORD XACTINDEX;
+typedef BYTE XACTINSTANCELIMIT;
+typedef BYTE XACTLOOPCOUNT;
+typedef BYTE XACTNOTIFICATIONTYPE;
+typedef SHORT XACTPITCH;
+typedef LONG XACTTIME;
+typedef WORD XACTVARIABLEINDEX;
+typedef FLOAT XACTVARIABLEVALUE;
+typedef BYTE XACTVARIATIONWEIGHT;
+typedef FLOAT XACTVOLUME;
+
+#define XACT_RENDERER_ID_LENGTH 0xff
+#define XACT_RENDERER_NAME_LENGTH 0xff
+#define XACT_CUE_NAME_LENGTH 0xff
+
+cpp_quote("#ifndef WAVEBANK_ENTRYNAME_LENGTH")
+#define WAVEBANK_ENTRYNAME_LENGTH 64
+cpp_quote("#endif")
+
+typedef struct XACT_RENDERER_DETAILS
+{
+ WCHAR rendererID[XACT_RENDERER_ID_LENGTH];
+ WCHAR displayName[XACT_RENDERER_NAME_LENGTH];
+ BOOL defaultDevice;
+} XACT_RENDERER_DETAILS;
+
+typedef BOOL (__stdcall *XACT_READFILE_CALLBACK)(
+ HANDLE hFile,
+ LPVOID lpBuffer,
+ DWORD nNumberOfBytesRead,
+ LPDWORD lpNumberOfBytesRead,
+ void* lpOverlapped
+);
+typedef BOOL (__stdcall *XACT_GETOVERLAPPEDRESULT_CALLBACK)(
+ HANDLE hFile,
+ void* lpOverlapped,
+ LPDWORD lpNumberOfBytesTransferred,
+ BOOL bWait
+);
+typedef struct XACT_FILEIO_CALLBACKS
+{
+ XACT_READFILE_CALLBACK readFileCallback;
+ XACT_GETOVERLAPPEDRESULT_CALLBACK getOverlappedResultCallback;
+} XACT_FILEIO_CALLBACKS;
+
+typedef struct XACT_NOTIFICATION XACT_NOTIFICATION;
+typedef void (__stdcall *XACT_NOTIFICATION_CALLBACK)(
+ const XACT_NOTIFICATION *pNotification
+);
+
+typedef struct XACT_RUNTIME_PARAMETERS
+{
+ DWORD lookAheadTime;
+ void* pGlobalSettingsBuffer;
+ DWORD globalSettingsBufferSize;
+ DWORD globalSettingsFlags;
+ DWORD globalSettingsAllocAttributes;
+ XACT_FILEIO_CALLBACKS fileIOCallbacks;
+ XACT_NOTIFICATION_CALLBACK fnNotificationCallback;
+ LPCWSTR pRendererID;
+ IXAudio2 *pXAudio2;
+ IXAudio2MasteringVoice *pMasteringVoice;
+} XACT_RUNTIME_PARAMETERS;
+
+typedef struct XACT_STREAMING_PARAMETERS
+{
+ HANDLE file;
+ DWORD offset;
+ DWORD flags;
+ WORD packetSize;
+} XACT_STREAMING_PARAMETERS;
+
+typedef struct XACT_WAVE_PROPERTIES
+{
+ char friendlyName[WAVEBANK_ENTRYNAME_LENGTH];
+ WAVEBANKMINIWAVEFORMAT format;
+ DWORD durationInSamples;
+ WAVEBANKSAMPLEREGION loopRegion;
+ BOOL streaming;
+} XACT_WAVE_PROPERTIES;
+
+cpp_quote("#if 0")
+typedef struct XACT_WAVE_INSTANCE_PROPERTIES
+{
+ XACT_WAVE_PROPERTIES waveProperties; /* properties is a keyword for midl */
+ BOOL backgroundMusic;
+} XACT_WAVE_INSTANCE_PROPERTIES;
+cpp_quote("#endif")
+
+cpp_quote("typedef struct XACT_WAVE_INSTANCE_PROPERTIES")
+cpp_quote("{")
+cpp_quote(" XACT_WAVE_PROPERTIES properties;")
+cpp_quote(" BOOL backgroundMusic;")
+cpp_quote("} XACT_WAVE_INSTANCE_PROPERTIES;")
+
+typedef struct XACT_CUE_PROPERTIES
+{
+ char friendlyName[XACT_CUE_NAME_LENGTH];
+ BOOL interactive;
+ XACTINDEX iaVariableIndex;
+ XACTINDEX numVariations;
+ XACTINSTANCELIMIT maxInstances;
+ XACTINSTANCELIMIT currentInstances;
+} XACT_CUE_PROPERTIES;
+
+typedef struct XACT_TRACK_PROPERTIES
+{
+ XACTTIME duration;
+ XACTINDEX numVariations;
+ XACTCHANNEL numChannels;
+ XACTINDEX waveVariation;
+ XACTLOOPCOUNT loopCount;
+} XACT_TRACK_PROPERTIES;
+
+typedef struct XACT_VARIATION_PROPERTIES
+{
+ XACTINDEX index;
+ XACTVARIATIONWEIGHT weight;
+ XACTVARIABLEVALUE iaVariableMin;
+ XACTVARIABLEVALUE iaVariableMax;
+ BOOL linger;
+} XACT_VARIATION_PROPERTIES;
+
+typedef struct XACT_SOUND_PROPERTIES
+{
+ XACTCATEGORY category;
+ BYTE priority;
+ XACTPITCH pitch;
+ XACTVOLUME volume;
+ XACTINDEX numTracks;
+ XACT_TRACK_PROPERTIES arrTrackProperties[1];
+} XACT_SOUND_PROPERTIES;
+
+typedef struct XACT_SOUND_VARIATION_PROPERTIES
+{
+ XACT_VARIATION_PROPERTIES variationProperties;
+ XACT_SOUND_PROPERTIES soundProperties;
+} XACT_SOUND_VARIATION_PROPERTIES;
+
+typedef struct XACT_CUE_INSTANCE_PROPERTIES
+{
+ DWORD allocAttributes;
+ XACT_CUE_PROPERTIES cueProperties;
+ XACT_SOUND_VARIATION_PROPERTIES activeVariationProperties;
+} XACT_CUE_INSTANCE_PROPERTIES;
+
+cpp_quote("#include <pshpack1.h>")
+
+typedef struct XACT_NOTIFICATION_DESCRIPTION
+{
+ XACTNOTIFICATIONTYPE type;
+ BYTE flags;
+ IXACT3SoundBank *pSoundBank;
+ IXACT3WaveBank *pWaveBank;
+ IXACT3Cue *pCue;
+ IXACT3Wave *pWave;
+ XACTINDEX cueIndex;
+ XACTINDEX waveIndex;
+ void* pvContext;
+} XACT_NOTIFICATION_DESCRIPTION;
+
+typedef struct XACT_NOTIFICATION_CUE
+{
+ XACTINDEX cueIndex;
+ IXACT3SoundBank *pSoundBank;
+ IXACT3Cue *pCue;
+} XACT_NOTIFICATION_CUE;
+
+typedef struct XACT_NOTIFICATION_MARKER
+{
+ XACTINDEX cueIndex;
+ IXACT3SoundBank *pSoundBank;
+ IXACT3Cue *pCue;
+ DWORD marker;
+} XACT_NOTIFICATION_MARKER;
+
+typedef struct XACT_NOTIFICATION_SOUNDBANK
+{
+ IXACT3SoundBank *pSoundBank;
+} XACT_NOTIFICATION_SOUNDBANK;
+
+typedef struct XACT_NOTIFICATION_WAVEBANK
+{
+ IXACT3WaveBank *pWaveBank;
+} XACT_NOTIFICATION_WAVEBANK;
+
+typedef struct XACT_NOTIFICATION_VARIABLE
+{
+ XACTINDEX cueIndex;
+ IXACT3SoundBank *pSoundBank;
+ IXACT3Cue *pCue;
+ XACTVARIABLEINDEX variableIndex;
+ XACTVARIABLEVALUE variableValue;
+ BOOL local;
+} XACT_NOTIFICATION_VARIABLE;
+
+typedef struct XACT_NOTIFICATION_GUI
+{
+ DWORD reserved;
+} XACT_NOTIFICATION_GUI;
+
+typedef struct XACT_NOTIFICATION_WAVE
+{
+ IXACT3WaveBank *pWaveBank;
+ XACTINDEX waveIndex;
+ XACTINDEX cueIndex;
+ IXACT3SoundBank *pSoundBank;
+ IXACT3Cue *pCue;
+ IXACT3Wave *pWave;
+} XACT_NOTIFICATION_WAVE;
+
+struct XACT_NOTIFICATION
+{
+ XACTNOTIFICATIONTYPE type;
+ LONG timeStamp;
+ PVOID pvContext;
+ union
+ {
+ XACT_NOTIFICATION_CUE cue;
+ XACT_NOTIFICATION_MARKER marker;
+ XACT_NOTIFICATION_SOUNDBANK soundBank;
+ XACT_NOTIFICATION_WAVEBANK waveBank;
+ XACT_NOTIFICATION_VARIABLE variable;
+ XACT_NOTIFICATION_GUI gui;
+ XACT_NOTIFICATION_WAVE wave;
+ };
+};
+
+cpp_quote("#include <poppack.h>")
+
+static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_CUEDESTROYED = 4;
+static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_SOUNDBANKDESTROYED = 6;
+static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEBANKDESTROYED = 7;
+static const XACTNOTIFICATIONTYPE XACTNOTIFICATIONTYPE_WAVEDESTROYED = 16;
+
+[
+ object,
+ local,
+ uuid(b1ee676a-d9cd-4d2a-89a8-fa53eb9e480b),
+]
+interface IXACT3Engine : IUnknown
+{
+ HRESULT GetRendererCount(XACTINDEX *pnRendererCount);
+
+ HRESULT GetRendererDetails(
+ XACTINDEX nRendererIndex,
+ XACT_RENDERER_DETAILS *pRendererDetails);
+
+ HRESULT GetFinalMixFormat(WAVEFORMATEXTENSIBLE *pFinalMixFormat);
+
+ HRESULT Initialize(const XACT_RUNTIME_PARAMETERS *pParams);
+
+ HRESULT ShutDown();
+
+ HRESULT DoWork();
+
+ HRESULT CreateSoundBank(
+ const void* pvBuffer,
+ DWORD dwSize,
+ DWORD dwFlags,
+ DWORD dwAllocAttributes,
+ IXACT3SoundBank **ppSoundBank);
+
+ HRESULT CreateInMemoryWaveBank(
+ const void* pvBuffer,
+ DWORD dwSize,
+ DWORD dwFlags,
+ DWORD dwAllocAttributes,
+ IXACT3WaveBank **ppWaveBank);
+
+ HRESULT CreateStreamingWaveBank(
+ const XACT_STREAMING_PARAMETERS *pParms,
+ IXACT3WaveBank **ppWaveBank);
+
+ HRESULT PrepareWave(
+ DWORD dwFlags,
+ LPCSTR szWavePath,
+ WORD wStreamingPacketSize,
+ DWORD dwAlignment,
+ DWORD dwPlayOffset,
+ XACTLOOPCOUNT nLoopCount,
+ IXACT3Wave **ppWave);
+
+ HRESULT PrepareInMemoryWave(
+ DWORD dwFlags,
+ WAVEBANKENTRY entry,
+ DWORD *pdwSeekTable,
+ BYTE *pbWaveData,
+ DWORD dwPlayOffset,
+ XACTLOOPCOUNT nLoopCount,
+ IXACT3Wave **ppWave);
+
+ HRESULT PrepareStreamingWave(
+ DWORD dwFlags,
+ WAVEBANKENTRY entry,
+ XACT_STREAMING_PARAMETERS streamingParams,
+ DWORD dwAlignment,
+ DWORD *pdwSeekTable,
+ DWORD dwPlayOffset,
+ XACTLOOPCOUNT nLoopCount,
+ IXACT3Wave **ppWave);
+
+ HRESULT RegisterNotification(
+ const XACT_NOTIFICATION_DESCRIPTION *pNotificationDesc);
+
+ HRESULT UnRegisterNotification(
+ const XACT_NOTIFICATION_DESCRIPTION *pNotificationDesc);
+
+ XACTCATEGORY GetCategory(
+ LPCSTR szFriendlyName);
+
+ HRESULT Stop(XACTCATEGORY nCategory, DWORD dwFlags);
+
+ HRESULT SetVolume(XACTCATEGORY nCategory, XACTVOLUME nVolume);
+
+ HRESULT Pause(XACTCATEGORY nCategory, BOOL fPause);
+
+ XACTVARIABLEINDEX GetGlobalVariableIndex(LPCSTR szFriendlyName);
+
+ HRESULT SetGlobalVariable(
+ XACTVARIABLEINDEX nIndex,
+ XACTVARIABLEVALUE nValue);
+
+ HRESULT GetGlobalVariable(
+ XACTVARIABLEINDEX nIndex,
+ XACTVARIABLEVALUE *nValue);
+}
+
+[
+ object,
+ local
+]
+interface IXACT3SoundBank
+{
+ XACTINDEX GetCueIndex(LPCSTR szFriendlyName);
+
+ HRESULT GetNumCues(XACTINDEX *pnNumCues);
+
+ HRESULT GetCueProperties(
+ XACTINDEX nCueIndex,
+ XACT_CUE_PROPERTIES *pProperties);
+
+ HRESULT Prepare(
+ XACTINDEX nCueIndex,
+ DWORD dwFlags,
+ XACTTIME timeOffset,
+ IXACT3Cue **ppCue);
+
+ HRESULT Play(
+ XACTINDEX nCueIndex,
+ DWORD dwFlags,
+ XACTTIME timeOffset,
+ IXACT3Cue **ppCue);
+
+ HRESULT Stop(XACTINDEX nCueIndex, DWORD dwFlags);
+
+ HRESULT Destroy();
+
+ HRESULT GetState(DWORD *pdwState);
+}
+
+[
+ object,
+ local
+]
+interface IXACT3WaveBank
+{
+ HRESULT Destroy();
+
+ HRESULT GetNumWaves(XACTINDEX *pnNumWaves);
+
+ XACTINDEX GetWaveIndex(LPCSTR szFriendlyName);
+
+ HRESULT GetWaveProperties(
+ XACTINDEX nWaveIndex,
+ XACT_WAVE_PROPERTIES *pWaveProperties);
+
+ HRESULT Prepare(
+ XACTINDEX nWaveIndex,
+ DWORD dwFlags,
+ DWORD dwPlayOffset,
+ XACTLOOPCOUNT nLoopCount,
+ IXACT3Wave **ppWave);
+
+ HRESULT Play(
+ XACTINDEX nWaveIndex,
+ DWORD dwFlags,
+ DWORD dwPlayOffset,
+ XACTLOOPCOUNT nLoopCount,
+ IXACT3Wave **ppWave);
+
+ HRESULT Stop(XACTINDEX nWaveIndex, DWORD dwFlags);
+
+ HRESULT GetState(DWORD *pdwState);
+}
+
+[
+ object,
+ local
+]
+interface IXACT34Cue
+{
+ HRESULT Play();
+
+ HRESULT Stop(DWORD dwFlags);
+
+ HRESULT GetState(DWORD *pdwState);
+
+ HRESULT Destroy();
+
+ HRESULT SetMatrixCoefficients(
+ UINT32 uSrcChannelCount,
+ UINT32 uDstChannelCount,
+ float *pMatrixCoefficients);
+
+ XACTVARIABLEINDEX GetVariableIndex(LPCSTR szFriendlyName);
+
+ HRESULT SetVariable(XACTVARIABLEINDEX nIndex, XACTVARIABLEVALUE nValue);
+
+ HRESULT GetVariable(
+ XACTVARIABLEINDEX nIndex,
+ XACTVARIABLEVALUE *nValue);
+
+ HRESULT Pause(BOOL fPause);
+
+ HRESULT GetProperties(XACT_CUE_INSTANCE_PROPERTIES **ppProperties);
+}
+
+[
+ object,
+ local
+]
+interface IXACT3Cue
+{
+ HRESULT Play();
+
+ HRESULT Stop(DWORD dwFlags);
+
+ HRESULT GetState(DWORD *pdwState);
+
+ HRESULT Destroy();
+
+ HRESULT SetMatrixCoefficients(
+ UINT32 uSrcChannelCount,
+ UINT32 uDstChannelCount,
+ float *pMatrixCoefficients);
+
+ XACTVARIABLEINDEX GetVariableIndex(LPCSTR szFriendlyName);
+
+ HRESULT SetVariable(XACTVARIABLEINDEX nIndex, XACTVARIABLEVALUE nValue);
+
+ HRESULT GetVariable(
+ XACTVARIABLEINDEX nIndex,
+ XACTVARIABLEVALUE *nValue);
+
+ HRESULT Pause(BOOL fPause);
+
+ HRESULT GetProperties(XACT_CUE_INSTANCE_PROPERTIES **ppProperties);
+
+ HRESULT SetOutputVoices(const XAUDIO2_VOICE_SENDS *pSendList);
+
+ HRESULT SetOutputVoiceMatrix(
+ IXAudio2Voice *pDestinationVoice,
+ UINT32 SourceChannels,
+ UINT32 DestinationChannels,
+ const float *pLevelMatrix);
+}
+
+[
+ object,
+ local
+]
+interface IXACT3Wave
+{
+ HRESULT Destroy();
+
+ HRESULT Play();
+
+ HRESULT Stop(DWORD dwFlags);
+
+ HRESULT Pause(BOOL fPause);
+
+ HRESULT GetState(DWORD *pdwState);
+
+ HRESULT SetPitch(XACTPITCH pitch);
+
+ HRESULT SetVolume(XACTVOLUME volume);
+
+ HRESULT SetMatrixCoefficients(
+ UINT32 uSrcChannelCount,
+ UINT32 uDstChannelCount,
+ float *pMatrixCoefficients);
+
+ HRESULT GetProperties(XACT_WAVE_INSTANCE_PROPERTIES *pProperties);
+}
diff --git a/include/xact3wb.h b/include/xact3wb.h
index b4c5a53d40..130efc9745 100644
--- a/include/xact3wb.h
+++ b/include/xact3wb.h
@@ -18,6 +18,8 @@
#ifndef __XACT3WB_H__
#define __XACT3WB_H__
+#define WAVEBANK_ENTRYNAME_LENGTH 64
+
typedef union WAVEBANKMINIWAVEFORMAT
{
struct
--
2.24.1
Jan. 31, 2020
[PATCH] msi: Change unknown platform enum entry name.
by Nikolay Sivov
Public shlwapi.h defines same name, it seems safer to rename internal type.
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
---
dlls/msi/msipriv.h | 2 +-
dlls/msi/package.c | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h
index 6b87cfb3d8..572bb08768 100644
--- a/dlls/msi/msipriv.h
+++ b/dlls/msi/msipriv.h
@@ -363,7 +363,7 @@ typedef struct msi_dialog_tag msi_dialog;
enum platform
{
- PLATFORM_UNKNOWN,
+ PLATFORM_UNRECOGNIZED,
PLATFORM_INTEL,
PLATFORM_INTEL64,
PLATFORM_X64,
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 86fee09547..5065558827 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1209,7 +1209,7 @@ static enum platform parse_platform( const WCHAR *str )
else if (!wcscmp( str, szX64 ) || !wcscmp( str, szAMD64 )) return PLATFORM_X64;
else if (!wcscmp( str, szARM )) return PLATFORM_ARM;
else if (!wcscmp( str, szARM64 )) return PLATFORM_ARM64;
- return PLATFORM_UNKNOWN;
+ return PLATFORM_UNRECOGNIZED;
}
static UINT parse_suminfo( MSISUMMARYINFO *si, MSIPACKAGE *package )
@@ -1237,13 +1237,13 @@ static UINT parse_suminfo( MSISUMMARYINFO *si, MSIPACKAGE *package )
platform = template;
if ((q = wcschr( platform, ',' ))) *q = 0;
package->platform = parse_platform( platform );
- while (package->platform == PLATFORM_UNKNOWN && q)
+ while (package->platform == PLATFORM_UNRECOGNIZED && q)
{
platform = q + 1;
if ((q = wcschr( platform, ',' ))) *q = 0;
package->platform = parse_platform( platform );
}
- if (package->platform == PLATFORM_UNKNOWN)
+ if (package->platform == PLATFORM_UNRECOGNIZED)
{
WARN("unknown platform %s\n", debugstr_w(template));
msi_free( template );
--
2.24.1
Jan. 31, 2020
[PATCH V2 3/3] mscms: Add stub for WcsGetDefaultRenderingIntent
by Vijay Kiran Kamuju
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48541
Signed-off-by: Vijay Kiran Kamuju <infyquest(a)gmail.com>
Jan. 31, 2020
[PATCH V2 2/3] mscms: Add stub for WcsGetDefaultColorProfileSize
by Vijay Kiran Kamuju
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48541
Signed-off-by: Vijay Kiran Kamuju <infyquest(a)gmail.com>
Jan. 31, 2020