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
June 2022
- 68 participants
- 3274 messages
[PATCH 9/9] windows.media.speech: Add some comments to describe the code regions in synthesizer.c.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 48 +++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index 3aa04ed9fbd..e8c9f0a280d 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -23,6 +23,12 @@
WINE_DEFAULT_DEBUG_CHANNEL(speech);
+/*
+ *
+ * IVectorView_VoiceInformation
+ *
+ */
+
struct voice_information_vector
{
IVectorView_VoiceInformation IVectorView_VoiceInformation_iface;
@@ -140,6 +146,12 @@ static struct voice_information_vector all_voices =
0
};
+/*
+ *
+ * SpeechSynthesizer runtimeclass
+ *
+ */
+
struct synthesizer
{
ISpeechSynthesizer ISpeechSynthesizer_iface;
@@ -148,6 +160,12 @@ struct synthesizer
LONG ref;
};
+/*
+ *
+ * ISpeechSynthesizer for SpeechSynthesizer runtimeclass
+ *
+ */
+
static inline struct synthesizer *impl_from_ISpeechSynthesizer( ISpeechSynthesizer *iface )
{
return CONTAINING_RECORD(iface, struct synthesizer, ISpeechSynthesizer_iface);
@@ -266,6 +284,12 @@ static const struct ISpeechSynthesizerVtbl synthesizer_vtbl =
synthesizer_get_Voice,
};
+/*
+ *
+ * ISpeechSynthesizer2 for SpeechSynthesizer runtimeclass
+ *
+ */
+
DEFINE_IINSPECTABLE(synthesizer2, ISpeechSynthesizer2, struct synthesizer, ISpeechSynthesizer_iface)
static HRESULT WINAPI synthesizer2_get_Options( ISpeechSynthesizer2 *iface, ISpeechSynthesizerOptions **value )
@@ -288,6 +312,12 @@ static const struct ISpeechSynthesizer2Vtbl synthesizer2_vtbl =
synthesizer2_get_Options,
};
+/*
+ *
+ * IClosable for SpeechSynthesizer runtimeclass
+ *
+ */
+
DEFINE_IINSPECTABLE(closable, IClosable, struct synthesizer, ISpeechSynthesizer_iface)
static HRESULT WINAPI closable_Close( IClosable *iface )
@@ -310,6 +340,12 @@ static const struct IClosableVtbl closable_vtbl =
closable_Close,
};
+/*
+ *
+ * Static interfaces for SpeechSynthesizer runtimeclass
+ *
+ */
+
struct synthesizer_statics
{
IActivationFactory IActivationFactory_iface;
@@ -317,6 +353,12 @@ struct synthesizer_statics
LONG ref;
};
+/*
+ *
+ * IActivationFactory for SpeechSynthesizer runtimeclass
+ *
+ */
+
static inline struct synthesizer_statics *impl_from_IActivationFactory( IActivationFactory *iface )
{
return CONTAINING_RECORD(iface, struct synthesizer_statics, IActivationFactory_iface);
@@ -416,6 +458,12 @@ static const struct IActivationFactoryVtbl factory_vtbl =
factory_ActivateInstance,
};
+/*
+ *
+ * IInstalledVoicesStatic for SpeechSynthesizer runtimeclass
+ *
+ */
+
DEFINE_IINSPECTABLE(installed_voices_static, IInstalledVoicesStatic, struct synthesizer_statics, IActivationFactory_iface)
static HRESULT WINAPI installed_voices_static_get_AllVoices( IInstalledVoicesStatic *iface, IVectorView_VoiceInformation **value )
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022
[PATCH 8/9] windows.media.speech: Rename variable out to impl in factory_ActivateInstance.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index 7a1a43be889..3aa04ed9fbd 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -384,21 +384,22 @@ static HRESULT WINAPI factory_GetTrustLevel( IActivationFactory *iface, TrustLev
static HRESULT WINAPI factory_ActivateInstance( IActivationFactory *iface, IInspectable **instance )
{
- struct synthesizer *obj;
+ struct synthesizer *impl;
TRACE("iface %p, instance %p.\n", iface, instance);
- if (!(obj = calloc(1, sizeof(*obj))))
+ if (!(impl = calloc(1, sizeof(*impl))))
{
*instance = NULL;
return E_OUTOFMEMORY;
}
- obj->ISpeechSynthesizer_iface.lpVtbl = &synthesizer_vtbl;
- obj->ISpeechSynthesizer2_iface.lpVtbl = &synthesizer2_vtbl;
- obj->IClosable_iface.lpVtbl = &closable_vtbl;
- obj->ref = 1;
- *instance = (IInspectable *)&obj->ISpeechSynthesizer_iface;
+ impl->ISpeechSynthesizer_iface.lpVtbl = &synthesizer_vtbl;
+ impl->ISpeechSynthesizer2_iface.lpVtbl = &synthesizer2_vtbl;
+ impl->IClosable_iface.lpVtbl = &closable_vtbl;
+ impl->ref = 1;
+
+ *instance = (IInspectable *)&impl->ISpeechSynthesizer_iface;
return S_OK;
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022
[PATCH 7/9] windows.media.speech: Remove some empty lines.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index 4b158d7e8e4..7a1a43be889 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -188,9 +188,7 @@ static ULONG WINAPI synthesizer_AddRef( ISpeechSynthesizer *iface )
{
struct synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
ULONG ref = InterlockedIncrement(&impl->ref);
-
TRACE("iface %p, ref %lu.\n", iface, ref);
-
return ref;
}
@@ -210,21 +208,18 @@ static ULONG WINAPI synthesizer_Release( ISpeechSynthesizer *iface )
static HRESULT WINAPI synthesizer_GetIids( ISpeechSynthesizer *iface, ULONG *iid_count, IID **iids )
{
FIXME("iface %p, iid_count %p, iids %p stub.\n", iface, iid_count, iids);
-
return E_NOTIMPL;
}
static HRESULT WINAPI synthesizer_GetRuntimeClassName( ISpeechSynthesizer *iface, HSTRING *class_name )
{
FIXME("iface %p, class_name %p stub.\n", iface, class_name);
-
return E_NOTIMPL;
}
static HRESULT WINAPI synthesizer_GetTrustLevel( ISpeechSynthesizer *iface, TrustLevel *trust_level )
{
FIXME("iface %p, trust_level %p stub.\n", iface, trust_level);
-
return E_NOTIMPL;
}
@@ -232,7 +227,6 @@ static HRESULT WINAPI synthesizer_SynthesizeTextToStreamAsync( ISpeechSynthesize
IAsyncOperation_SpeechSynthesisStream **operation )
{
FIXME("iface %p, text %p, operation %p stub.\n", iface, text, operation);
-
return E_NOTIMPL;
}
@@ -240,21 +234,18 @@ static HRESULT WINAPI synthesizer_SynthesizeSsmlToStreamAsync( ISpeechSynthesize
IAsyncOperation_SpeechSynthesisStream **operation )
{
FIXME("iface %p, text %p, operation %p stub.\n", iface, ssml, operation);
-
return E_NOTIMPL;
}
static HRESULT WINAPI synthesizer_put_Voice( ISpeechSynthesizer *iface, IVoiceInformation *value )
{
FIXME("iface %p, value %p stub.\n", iface, value);
-
return E_NOTIMPL;
}
static HRESULT WINAPI synthesizer_get_Voice( ISpeechSynthesizer *iface, IVoiceInformation **value )
{
FIXME("iface %p, value %p stub.\n", iface, value);
-
return E_NOTIMPL;
}
@@ -280,7 +271,6 @@ DEFINE_IINSPECTABLE(synthesizer2, ISpeechSynthesizer2, struct synthesizer, ISpee
static HRESULT WINAPI synthesizer2_get_Options( ISpeechSynthesizer2 *iface, ISpeechSynthesizerOptions **value )
{
FIXME("iface %p, value %p stub.\n", iface, value);
-
return E_NOTIMPL;
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022
[PATCH 6/9] windows.media.speech: Simplify QueryInterface functions in synthesizer.c.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 20 ++++++++------------
1 file changed, 8 insertions(+), 12 deletions(-)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index 3b9e9377394..4b158d7e8e4 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -36,14 +36,15 @@ static inline struct voice_information_vector *impl_from_IVectorView_VoiceInform
static HRESULT WINAPI vector_view_voice_information_QueryInterface( IVectorView_VoiceInformation *iface, REFIID iid, void **out )
{
+ struct voice_information_vector *impl = impl_from_IVectorView_VoiceInformation(iface);
+
TRACE("iface %p, iid %s, out %p stub!\n", iface, debugstr_guid(iid), out);
if (IsEqualGUID(iid, &IID_IUnknown) ||
IsEqualGUID(iid, &IID_IInspectable) ||
IsEqualGUID(iid, &IID_IVectorView_VoiceInformation))
{
- IUnknown_AddRef(iface);
- *out = iface;
+ IInspectable_AddRef((*out = &impl->IVectorView_VoiceInformation_iface));
return S_OK;
}
@@ -162,22 +163,19 @@ static HRESULT WINAPI synthesizer_QueryInterface( ISpeechSynthesizer *iface, REF
IsEqualGUID(iid, &IID_IInspectable) ||
IsEqualGUID(iid, &IID_ISpeechSynthesizer))
{
- IUnknown_AddRef(iface);
- *out = iface;
+ IInspectable_AddRef((*out = &impl->ISpeechSynthesizer_iface));
return S_OK;
}
if (IsEqualGUID(iid, &IID_ISpeechSynthesizer2))
{
- IUnknown_AddRef(iface);
- *out = &impl->ISpeechSynthesizer2_iface;
+ IInspectable_AddRef((*out = &impl->ISpeechSynthesizer2_iface));
return S_OK;
}
if (IsEqualGUID(iid, &IID_IClosable))
{
- IUnknown_AddRef(iface);
- *out = &impl->IClosable_iface;
+ IInspectable_AddRef((*out = &impl->IClosable_iface));
return S_OK;
}
@@ -345,15 +343,13 @@ static HRESULT WINAPI factory_QueryInterface( IActivationFactory *iface, REFIID
IsEqualGUID(iid, &IID_IAgileObject) ||
IsEqualGUID(iid, &IID_IActivationFactory))
{
- IUnknown_AddRef(iface);
- *out = iface;
+ IInspectable_AddRef((*out = &impl->IActivationFactory_iface));
return S_OK;
}
if (IsEqualGUID(iid, &IID_IInstalledVoicesStatic))
{
- IUnknown_AddRef(iface);
- *out = &impl->IInstalledVoicesStatic_iface;
+ IInspectable_AddRef((*out = &impl->IInstalledVoicesStatic_iface));
return S_OK;
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022
[PATCH 5/9] windows.media.speech: Make use of DEFINE_IINSPECTABLE for IInstalledVoicesStatic from SpeechSynthesizer statics.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 41 +------------------------
1 file changed, 1 insertion(+), 40 deletions(-)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index 4299750adf6..3b9e9377394 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -334,11 +334,6 @@ static inline struct synthesizer_statics *impl_from_IActivationFactory( IActivat
return CONTAINING_RECORD(iface, struct synthesizer_statics, IActivationFactory_iface);
}
-static inline struct synthesizer_statics *impl_from_IInstalledVoicesStatic( IInstalledVoicesStatic *iface )
-{
- return CONTAINING_RECORD(iface, struct synthesizer_statics, IInstalledVoicesStatic_iface);
-}
-
static HRESULT WINAPI factory_QueryInterface( IActivationFactory *iface, REFIID iid, void **out )
{
struct synthesizer_statics *impl = impl_from_IActivationFactory(iface);
@@ -434,41 +429,7 @@ static const struct IActivationFactoryVtbl factory_vtbl =
factory_ActivateInstance,
};
-static HRESULT WINAPI installed_voices_static_QueryInterface( IInstalledVoicesStatic *iface, REFIID iid, void **out )
-{
- struct synthesizer_statics *impl = impl_from_IInstalledVoicesStatic(iface);
- return IActivationFactory_QueryInterface(&impl->IActivationFactory_iface, iid, out);
-}
-
-static ULONG WINAPI installed_voices_static_AddRef( IInstalledVoicesStatic *iface )
-{
- struct synthesizer_statics *impl = impl_from_IInstalledVoicesStatic(iface);
- return IActivationFactory_AddRef(&impl->IActivationFactory_iface);
-}
-
-static ULONG WINAPI installed_voices_static_Release( IInstalledVoicesStatic *iface )
-{
- struct synthesizer_statics *impl = impl_from_IInstalledVoicesStatic(iface);
- return IActivationFactory_Release(&impl->IActivationFactory_iface);
-}
-
-static HRESULT WINAPI installed_voices_static_GetIids( IInstalledVoicesStatic *iface, ULONG *iid_count, IID **iids )
-{
- FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
- return E_NOTIMPL;
-}
-
-static HRESULT WINAPI installed_voices_static_GetRuntimeClassName( IInstalledVoicesStatic *iface, HSTRING *class_name )
-{
- FIXME("iface %p, class_name %p stub!\n", iface, class_name);
- return E_NOTIMPL;
-}
-
-static HRESULT WINAPI installed_voices_static_GetTrustLevel( IInstalledVoicesStatic *iface, TrustLevel *trust_level )
-{
- FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
- return E_NOTIMPL;
-}
+DEFINE_IINSPECTABLE(installed_voices_static, IInstalledVoicesStatic, struct synthesizer_statics, IActivationFactory_iface)
static HRESULT WINAPI installed_voices_static_get_AllVoices( IInstalledVoicesStatic *iface, IVectorView_VoiceInformation **value )
{
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022
[PATCH 4/9] windows.media.speech: Remove redundant speech prefix.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 86 ++++++++++++-------------
1 file changed, 43 insertions(+), 43 deletions(-)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index d59089d2e08..4299750adf6 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -139,7 +139,7 @@ static struct voice_information_vector all_voices =
0
};
-struct speech_synthesizer
+struct synthesizer
{
ISpeechSynthesizer ISpeechSynthesizer_iface;
ISpeechSynthesizer2 ISpeechSynthesizer2_iface;
@@ -147,14 +147,14 @@ struct speech_synthesizer
LONG ref;
};
-static inline struct speech_synthesizer *impl_from_ISpeechSynthesizer( ISpeechSynthesizer *iface )
+static inline struct synthesizer *impl_from_ISpeechSynthesizer( ISpeechSynthesizer *iface )
{
- return CONTAINING_RECORD(iface, struct speech_synthesizer, ISpeechSynthesizer_iface);
+ return CONTAINING_RECORD(iface, struct synthesizer, ISpeechSynthesizer_iface);
}
-static HRESULT WINAPI speech_synthesizer_QueryInterface( ISpeechSynthesizer *iface, REFIID iid, void **out )
+static HRESULT WINAPI synthesizer_QueryInterface( ISpeechSynthesizer *iface, REFIID iid, void **out )
{
- struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
+ struct synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
TRACE("iface %p, iid %s, out %p stub!\n", iface, debugstr_guid(iid), out);
@@ -186,9 +186,9 @@ static HRESULT WINAPI speech_synthesizer_QueryInterface( ISpeechSynthesizer *ifa
return E_NOINTERFACE;
}
-static ULONG WINAPI speech_synthesizer_AddRef( ISpeechSynthesizer *iface )
+static ULONG WINAPI synthesizer_AddRef( ISpeechSynthesizer *iface )
{
- struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
+ struct synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
ULONG ref = InterlockedIncrement(&impl->ref);
TRACE("iface %p, ref %lu.\n", iface, ref);
@@ -196,9 +196,9 @@ static ULONG WINAPI speech_synthesizer_AddRef( ISpeechSynthesizer *iface )
return ref;
}
-static ULONG WINAPI speech_synthesizer_Release( ISpeechSynthesizer *iface )
+static ULONG WINAPI synthesizer_Release( ISpeechSynthesizer *iface )
{
- struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
+ struct synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
ULONG ref = InterlockedDecrement(&impl->ref);
TRACE("iface %p, ref %lu.\n", iface, ref);
@@ -209,98 +209,98 @@ static ULONG WINAPI speech_synthesizer_Release( ISpeechSynthesizer *iface )
return ref;
}
-static HRESULT WINAPI speech_synthesizer_GetIids( ISpeechSynthesizer *iface, ULONG *iid_count, IID **iids )
+static HRESULT WINAPI synthesizer_GetIids( ISpeechSynthesizer *iface, ULONG *iid_count, IID **iids )
{
FIXME("iface %p, iid_count %p, iids %p stub.\n", iface, iid_count, iids);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_GetRuntimeClassName( ISpeechSynthesizer *iface, HSTRING *class_name )
+static HRESULT WINAPI synthesizer_GetRuntimeClassName( ISpeechSynthesizer *iface, HSTRING *class_name )
{
FIXME("iface %p, class_name %p stub.\n", iface, class_name);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_GetTrustLevel( ISpeechSynthesizer *iface, TrustLevel *trust_level )
+static HRESULT WINAPI synthesizer_GetTrustLevel( ISpeechSynthesizer *iface, TrustLevel *trust_level )
{
FIXME("iface %p, trust_level %p stub.\n", iface, trust_level);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_SynthesizeTextToStreamAsync( ISpeechSynthesizer *iface, HSTRING text,
- IAsyncOperation_SpeechSynthesisStream **operation )
+static HRESULT WINAPI synthesizer_SynthesizeTextToStreamAsync( ISpeechSynthesizer *iface, HSTRING text,
+ IAsyncOperation_SpeechSynthesisStream **operation )
{
FIXME("iface %p, text %p, operation %p stub.\n", iface, text, operation);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_SynthesizeSsmlToStreamAsync( ISpeechSynthesizer *iface, HSTRING ssml,
- IAsyncOperation_SpeechSynthesisStream **operation )
+static HRESULT WINAPI synthesizer_SynthesizeSsmlToStreamAsync( ISpeechSynthesizer *iface, HSTRING ssml,
+ IAsyncOperation_SpeechSynthesisStream **operation )
{
FIXME("iface %p, text %p, operation %p stub.\n", iface, ssml, operation);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_put_Voice( ISpeechSynthesizer *iface, IVoiceInformation *value )
+static HRESULT WINAPI synthesizer_put_Voice( ISpeechSynthesizer *iface, IVoiceInformation *value )
{
FIXME("iface %p, value %p stub.\n", iface, value);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_get_Voice( ISpeechSynthesizer *iface, IVoiceInformation **value )
+static HRESULT WINAPI synthesizer_get_Voice( ISpeechSynthesizer *iface, IVoiceInformation **value )
{
FIXME("iface %p, value %p stub.\n", iface, value);
return E_NOTIMPL;
}
-static const struct ISpeechSynthesizerVtbl speech_synthesizer_vtbl =
+static const struct ISpeechSynthesizerVtbl synthesizer_vtbl =
{
/* IUnknown methods */
- speech_synthesizer_QueryInterface,
- speech_synthesizer_AddRef,
- speech_synthesizer_Release,
+ synthesizer_QueryInterface,
+ synthesizer_AddRef,
+ synthesizer_Release,
/* IInspectable methods */
- speech_synthesizer_GetIids,
- speech_synthesizer_GetRuntimeClassName,
- speech_synthesizer_GetTrustLevel,
+ synthesizer_GetIids,
+ synthesizer_GetRuntimeClassName,
+ synthesizer_GetTrustLevel,
/* ISpeechSynthesizer methods */
- speech_synthesizer_SynthesizeTextToStreamAsync,
- speech_synthesizer_SynthesizeSsmlToStreamAsync,
- speech_synthesizer_put_Voice,
- speech_synthesizer_get_Voice,
+ synthesizer_SynthesizeTextToStreamAsync,
+ synthesizer_SynthesizeSsmlToStreamAsync,
+ synthesizer_put_Voice,
+ synthesizer_get_Voice,
};
-DEFINE_IINSPECTABLE(speech_synthesizer2, ISpeechSynthesizer2, struct speech_synthesizer, ISpeechSynthesizer_iface)
+DEFINE_IINSPECTABLE(synthesizer2, ISpeechSynthesizer2, struct synthesizer, ISpeechSynthesizer_iface)
-static HRESULT WINAPI speech_synthesizer2_get_Options( ISpeechSynthesizer2 *iface, ISpeechSynthesizerOptions **value )
+static HRESULT WINAPI synthesizer2_get_Options( ISpeechSynthesizer2 *iface, ISpeechSynthesizerOptions **value )
{
FIXME("iface %p, value %p stub.\n", iface, value);
return E_NOTIMPL;
}
-static const struct ISpeechSynthesizer2Vtbl speech_synthesizer2_vtbl =
+static const struct ISpeechSynthesizer2Vtbl synthesizer2_vtbl =
{
/* IUnknown methods */
- speech_synthesizer2_QueryInterface,
- speech_synthesizer2_AddRef,
- speech_synthesizer2_Release,
+ synthesizer2_QueryInterface,
+ synthesizer2_AddRef,
+ synthesizer2_Release,
/* IInspectable methods */
- speech_synthesizer2_GetIids,
- speech_synthesizer2_GetRuntimeClassName,
- speech_synthesizer2_GetTrustLevel,
+ synthesizer2_GetIids,
+ synthesizer2_GetRuntimeClassName,
+ synthesizer2_GetTrustLevel,
/* ISpeechSynthesizer2 methods */
- speech_synthesizer2_get_Options,
+ synthesizer2_get_Options,
};
-DEFINE_IINSPECTABLE(closable, IClosable, struct speech_synthesizer, ISpeechSynthesizer_iface)
+DEFINE_IINSPECTABLE(closable, IClosable, struct synthesizer, ISpeechSynthesizer_iface)
static HRESULT WINAPI closable_Close( IClosable *iface )
{
@@ -403,7 +403,7 @@ static HRESULT WINAPI factory_GetTrustLevel( IActivationFactory *iface, TrustLev
static HRESULT WINAPI factory_ActivateInstance( IActivationFactory *iface, IInspectable **instance )
{
- struct speech_synthesizer *obj;
+ struct synthesizer *obj;
TRACE("iface %p, instance %p.\n", iface, instance);
@@ -413,8 +413,8 @@ static HRESULT WINAPI factory_ActivateInstance( IActivationFactory *iface, IInsp
return E_OUTOFMEMORY;
}
- obj->ISpeechSynthesizer_iface.lpVtbl = &speech_synthesizer_vtbl;
- obj->ISpeechSynthesizer2_iface.lpVtbl = &speech_synthesizer2_vtbl;
+ obj->ISpeechSynthesizer_iface.lpVtbl = &synthesizer_vtbl;
+ obj->ISpeechSynthesizer2_iface.lpVtbl = &synthesizer2_vtbl;
obj->IClosable_iface.lpVtbl = &closable_vtbl;
obj->ref = 1;
*instance = (IInspectable *)&obj->ISpeechSynthesizer_iface;
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022
[PATCH 3/9] windows.media.speech: Make use of DEFINE_IINSPECTABLE for IClosable from ISpeechSynthesizer.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 57 +------------------------
1 file changed, 1 insertion(+), 56 deletions(-)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index cbcb7df1481..d59089d2e08 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -152,11 +152,6 @@ static inline struct speech_synthesizer *impl_from_ISpeechSynthesizer( ISpeechSy
return CONTAINING_RECORD(iface, struct speech_synthesizer, ISpeechSynthesizer_iface);
}
-static inline struct speech_synthesizer *impl_from_IClosable( IClosable *iface )
-{
- return CONTAINING_RECORD(iface, struct speech_synthesizer, IClosable_iface);
-}
-
static HRESULT WINAPI speech_synthesizer_QueryInterface( ISpeechSynthesizer *iface, REFIID iid, void **out )
{
struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
@@ -305,61 +300,11 @@ static const struct ISpeechSynthesizer2Vtbl speech_synthesizer2_vtbl =
speech_synthesizer2_get_Options,
};
-static HRESULT WINAPI closable_QueryInterface( IClosable *iface, REFIID iid, void **out )
-{
- struct speech_synthesizer *impl = impl_from_IClosable(iface);
-
- return ISpeechSynthesizer_QueryInterface(&impl->ISpeechSynthesizer_iface, iid, out);
-}
-
-static ULONG WINAPI closable_AddRef( IClosable *iface )
-{
- struct speech_synthesizer *impl = impl_from_IClosable(iface);
- ULONG ref = InterlockedIncrement(&impl->ref);
-
- TRACE("iface %p, ref %lu.\n", iface, ref);
-
- return ref;
-}
-
-static ULONG WINAPI closable_Release( IClosable *iface )
-{
- struct speech_synthesizer *impl = impl_from_IClosable(iface);
- ULONG ref = InterlockedDecrement(&impl->ref);
-
- TRACE("iface %p, ref %lu.\n", iface, ref);
-
- if (!ref)
- free(impl);
-
- return ref;
-}
-
-static HRESULT WINAPI closable_GetIids( IClosable *iface, ULONG *iid_count, IID **iids )
-{
- FIXME("iface %p, iid_count %p, iids %p stub.\n", iface, iid_count, iids);
-
- return E_NOTIMPL;
-}
-
-static HRESULT WINAPI closable_GetRuntimeClassName( IClosable *iface, HSTRING *class_name )
-{
- FIXME("iface %p, class_name %p stub.\n", iface, class_name);
-
- return E_NOTIMPL;
-}
-
-static HRESULT WINAPI closable_GetTrustLevel( IClosable *iface, TrustLevel *trust_level )
-{
- FIXME("iface %p, trust_level %p stub.\n", iface, trust_level);
-
- return E_NOTIMPL;
-}
+DEFINE_IINSPECTABLE(closable, IClosable, struct speech_synthesizer, ISpeechSynthesizer_iface)
static HRESULT WINAPI closable_Close( IClosable *iface )
{
FIXME("iface %p stub.\n", iface);
-
return E_NOTIMPL;
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022
[PATCH 2/9] windows.media.speech: Refactor function params in synthesizer.c.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 141 +++++++++---------------
1 file changed, 52 insertions(+), 89 deletions(-)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index edd71e60bc0..cbcb7df1481 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -29,13 +29,12 @@ struct voice_information_vector
LONG ref;
};
-static inline struct voice_information_vector *impl_from_IVectorView_VoiceInformation(IVectorView_VoiceInformation *iface)
+static inline struct voice_information_vector *impl_from_IVectorView_VoiceInformation( IVectorView_VoiceInformation *iface )
{
return CONTAINING_RECORD(iface, struct voice_information_vector, IVectorView_VoiceInformation_iface);
}
-static HRESULT WINAPI vector_view_voice_information_QueryInterface(
- IVectorView_VoiceInformation *iface, REFIID iid, void **out)
+static HRESULT WINAPI vector_view_voice_information_QueryInterface( IVectorView_VoiceInformation *iface, REFIID iid, void **out )
{
TRACE("iface %p, iid %s, out %p stub!\n", iface, debugstr_guid(iid), out);
@@ -53,8 +52,7 @@ static HRESULT WINAPI vector_view_voice_information_QueryInterface(
return E_NOINTERFACE;
}
-static ULONG WINAPI vector_view_voice_information_AddRef(
- IVectorView_VoiceInformation *iface)
+static ULONG WINAPI vector_view_voice_information_AddRef( IVectorView_VoiceInformation *iface )
{
struct voice_information_vector *impl = impl_from_IVectorView_VoiceInformation(iface);
ULONG ref = InterlockedIncrement(&impl->ref);
@@ -62,8 +60,7 @@ static ULONG WINAPI vector_view_voice_information_AddRef(
return ref;
}
-static ULONG WINAPI vector_view_voice_information_Release(
- IVectorView_VoiceInformation *iface)
+static ULONG WINAPI vector_view_voice_information_Release( IVectorView_VoiceInformation *iface )
{
struct voice_information_vector *impl = impl_from_IVectorView_VoiceInformation(iface);
ULONG ref = InterlockedDecrement(&impl->ref);
@@ -71,45 +68,40 @@ static ULONG WINAPI vector_view_voice_information_Release(
return ref;
}
-static HRESULT WINAPI vector_view_voice_information_GetIids(
- IVectorView_VoiceInformation *iface, ULONG *iid_count, IID **iids)
+static HRESULT WINAPI vector_view_voice_information_GetIids( IVectorView_VoiceInformation *iface, ULONG *iid_count, IID **iids )
{
FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
return E_NOTIMPL;
}
-static HRESULT WINAPI vector_view_voice_information_GetRuntimeClassName(
- IVectorView_VoiceInformation *iface, HSTRING *class_name)
+static HRESULT WINAPI vector_view_voice_information_GetRuntimeClassName( IVectorView_VoiceInformation *iface, HSTRING *class_name )
{
FIXME("iface %p, class_name %p stub!\n", iface, class_name);
return E_NOTIMPL;
}
-static HRESULT WINAPI vector_view_voice_information_GetTrustLevel(
- IVectorView_VoiceInformation *iface, TrustLevel *trust_level)
+static HRESULT WINAPI vector_view_voice_information_GetTrustLevel( IVectorView_VoiceInformation *iface, TrustLevel *trust_level )
{
FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
return E_NOTIMPL;
}
-static HRESULT WINAPI vector_view_voice_information_GetAt(
- IVectorView_VoiceInformation *iface, UINT32 index, IVoiceInformation **value)
+static HRESULT WINAPI vector_view_voice_information_GetAt( IVectorView_VoiceInformation *iface, UINT32 index, IVoiceInformation **value )
{
FIXME("iface %p, index %#x, value %p stub!\n", iface, index, value);
*value = NULL;
return E_BOUNDS;
}
-static HRESULT WINAPI vector_view_voice_information_get_Size(
- IVectorView_VoiceInformation *iface, UINT32 *value)
+static HRESULT WINAPI vector_view_voice_information_get_Size( IVectorView_VoiceInformation *iface, UINT32 *value )
{
FIXME("iface %p, value %p stub!\n", iface, value);
*value = 0;
return S_OK;
}
-static HRESULT WINAPI vector_view_voice_information_IndexOf(
- IVectorView_VoiceInformation *iface, IVoiceInformation *element, UINT32 *index, BOOLEAN *found)
+static HRESULT WINAPI vector_view_voice_information_IndexOf( IVectorView_VoiceInformation *iface,
+ IVoiceInformation *element, UINT32 *index, BOOLEAN *found )
{
FIXME("iface %p, element %p, index %p, found %p stub!\n", iface, element, index, found);
*index = 0;
@@ -117,9 +109,8 @@ static HRESULT WINAPI vector_view_voice_information_IndexOf(
return S_OK;
}
-static HRESULT WINAPI vector_view_voice_information_GetMany(
- IVectorView_VoiceInformation *iface, UINT32 start_index,
- UINT32 items_size, IVoiceInformation **items, UINT *value)
+static HRESULT WINAPI vector_view_voice_information_GetMany( IVectorView_VoiceInformation *iface, UINT32 start_index,
+ UINT32 items_size, IVoiceInformation **items, UINT *value )
{
FIXME("iface %p, start_index %#x, items %p, value %p stub!\n", iface, start_index, items, value);
*value = 0;
@@ -156,18 +147,17 @@ struct speech_synthesizer
LONG ref;
};
-static inline struct speech_synthesizer *impl_from_ISpeechSynthesizer(ISpeechSynthesizer *iface)
+static inline struct speech_synthesizer *impl_from_ISpeechSynthesizer( ISpeechSynthesizer *iface )
{
return CONTAINING_RECORD(iface, struct speech_synthesizer, ISpeechSynthesizer_iface);
}
-static inline struct speech_synthesizer *impl_from_IClosable(IClosable *iface)
+static inline struct speech_synthesizer *impl_from_IClosable( IClosable *iface )
{
return CONTAINING_RECORD(iface, struct speech_synthesizer, IClosable_iface);
}
-static HRESULT WINAPI speech_synthesizer_QueryInterface(
- ISpeechSynthesizer *iface, REFIID iid, void **out)
+static HRESULT WINAPI speech_synthesizer_QueryInterface( ISpeechSynthesizer *iface, REFIID iid, void **out )
{
struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
@@ -201,8 +191,7 @@ static HRESULT WINAPI speech_synthesizer_QueryInterface(
return E_NOINTERFACE;
}
-static ULONG WINAPI speech_synthesizer_AddRef(
- ISpeechSynthesizer *iface)
+static ULONG WINAPI speech_synthesizer_AddRef( ISpeechSynthesizer *iface )
{
struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
ULONG ref = InterlockedIncrement(&impl->ref);
@@ -212,8 +201,7 @@ static ULONG WINAPI speech_synthesizer_AddRef(
return ref;
}
-static ULONG WINAPI speech_synthesizer_Release(
- ISpeechSynthesizer *iface)
+static ULONG WINAPI speech_synthesizer_Release( ISpeechSynthesizer *iface )
{
struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
ULONG ref = InterlockedDecrement(&impl->ref);
@@ -226,54 +214,51 @@ static ULONG WINAPI speech_synthesizer_Release(
return ref;
}
-static HRESULT WINAPI speech_synthesizer_GetIids(
- ISpeechSynthesizer *iface, ULONG *iid_count, IID **iids)
+static HRESULT WINAPI speech_synthesizer_GetIids( ISpeechSynthesizer *iface, ULONG *iid_count, IID **iids )
{
FIXME("iface %p, iid_count %p, iids %p stub.\n", iface, iid_count, iids);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_GetRuntimeClassName(
- ISpeechSynthesizer *iface, HSTRING *class_name)
+static HRESULT WINAPI speech_synthesizer_GetRuntimeClassName( ISpeechSynthesizer *iface, HSTRING *class_name )
{
FIXME("iface %p, class_name %p stub.\n", iface, class_name);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_GetTrustLevel(
- ISpeechSynthesizer *iface, TrustLevel *trust_level)
+static HRESULT WINAPI speech_synthesizer_GetTrustLevel( ISpeechSynthesizer *iface, TrustLevel *trust_level )
{
FIXME("iface %p, trust_level %p stub.\n", iface, trust_level);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_SynthesizeTextToStreamAsync(ISpeechSynthesizer *iface,
- HSTRING text, IAsyncOperation_SpeechSynthesisStream **operation)
+static HRESULT WINAPI speech_synthesizer_SynthesizeTextToStreamAsync( ISpeechSynthesizer *iface, HSTRING text,
+ IAsyncOperation_SpeechSynthesisStream **operation )
{
FIXME("iface %p, text %p, operation %p stub.\n", iface, text, operation);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_SynthesizeSsmlToStreamAsync(ISpeechSynthesizer *iface,
- HSTRING ssml, IAsyncOperation_SpeechSynthesisStream **operation)
+static HRESULT WINAPI speech_synthesizer_SynthesizeSsmlToStreamAsync( ISpeechSynthesizer *iface, HSTRING ssml,
+ IAsyncOperation_SpeechSynthesisStream **operation )
{
FIXME("iface %p, text %p, operation %p stub.\n", iface, ssml, operation);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_put_Voice(ISpeechSynthesizer *iface, IVoiceInformation *value)
+static HRESULT WINAPI speech_synthesizer_put_Voice( ISpeechSynthesizer *iface, IVoiceInformation *value )
{
FIXME("iface %p, value %p stub.\n", iface, value);
return E_NOTIMPL;
}
-static HRESULT WINAPI speech_synthesizer_get_Voice(ISpeechSynthesizer *iface, IVoiceInformation **value)
+static HRESULT WINAPI speech_synthesizer_get_Voice( ISpeechSynthesizer *iface, IVoiceInformation **value )
{
FIXME("iface %p, value %p stub.\n", iface, value);
@@ -299,7 +284,7 @@ static const struct ISpeechSynthesizerVtbl speech_synthesizer_vtbl =
DEFINE_IINSPECTABLE(speech_synthesizer2, ISpeechSynthesizer2, struct speech_synthesizer, ISpeechSynthesizer_iface)
-static HRESULT WINAPI speech_synthesizer2_get_Options(ISpeechSynthesizer2 *iface, ISpeechSynthesizerOptions **value)
+static HRESULT WINAPI speech_synthesizer2_get_Options( ISpeechSynthesizer2 *iface, ISpeechSynthesizerOptions **value )
{
FIXME("iface %p, value %p stub.\n", iface, value);
@@ -320,16 +305,14 @@ static const struct ISpeechSynthesizer2Vtbl speech_synthesizer2_vtbl =
speech_synthesizer2_get_Options,
};
-static HRESULT WINAPI closable_QueryInterface(
- IClosable *iface, REFIID iid, void **out)
+static HRESULT WINAPI closable_QueryInterface( IClosable *iface, REFIID iid, void **out )
{
struct speech_synthesizer *impl = impl_from_IClosable(iface);
return ISpeechSynthesizer_QueryInterface(&impl->ISpeechSynthesizer_iface, iid, out);
}
-static ULONG WINAPI closable_AddRef(
- IClosable *iface)
+static ULONG WINAPI closable_AddRef( IClosable *iface )
{
struct speech_synthesizer *impl = impl_from_IClosable(iface);
ULONG ref = InterlockedIncrement(&impl->ref);
@@ -339,8 +322,7 @@ static ULONG WINAPI closable_AddRef(
return ref;
}
-static ULONG WINAPI closable_Release(
- IClosable *iface)
+static ULONG WINAPI closable_Release( IClosable *iface )
{
struct speech_synthesizer *impl = impl_from_IClosable(iface);
ULONG ref = InterlockedDecrement(&impl->ref);
@@ -353,32 +335,28 @@ static ULONG WINAPI closable_Release(
return ref;
}
-static HRESULT WINAPI closable_GetIids(
- IClosable *iface, ULONG *iid_count, IID **iids)
+static HRESULT WINAPI closable_GetIids( IClosable *iface, ULONG *iid_count, IID **iids )
{
FIXME("iface %p, iid_count %p, iids %p stub.\n", iface, iid_count, iids);
return E_NOTIMPL;
}
-static HRESULT WINAPI closable_GetRuntimeClassName(
- IClosable *iface, HSTRING *class_name)
+static HRESULT WINAPI closable_GetRuntimeClassName( IClosable *iface, HSTRING *class_name )
{
FIXME("iface %p, class_name %p stub.\n", iface, class_name);
return E_NOTIMPL;
}
-static HRESULT WINAPI closable_GetTrustLevel(
- IClosable *iface, TrustLevel *trust_level)
+static HRESULT WINAPI closable_GetTrustLevel( IClosable *iface, TrustLevel *trust_level )
{
FIXME("iface %p, trust_level %p stub.\n", iface, trust_level);
return E_NOTIMPL;
}
-static HRESULT WINAPI closable_Close(
- IClosable *iface)
+static HRESULT WINAPI closable_Close( IClosable *iface )
{
FIXME("iface %p stub.\n", iface);
@@ -406,18 +384,17 @@ struct synthesizer_statics
LONG ref;
};
-static inline struct synthesizer_statics *impl_from_IActivationFactory(IActivationFactory *iface)
+static inline struct synthesizer_statics *impl_from_IActivationFactory( IActivationFactory *iface )
{
return CONTAINING_RECORD(iface, struct synthesizer_statics, IActivationFactory_iface);
}
-static inline struct synthesizer_statics *impl_from_IInstalledVoicesStatic(IInstalledVoicesStatic *iface)
+static inline struct synthesizer_statics *impl_from_IInstalledVoicesStatic( IInstalledVoicesStatic *iface )
{
return CONTAINING_RECORD(iface, struct synthesizer_statics, IInstalledVoicesStatic_iface);
}
-static HRESULT WINAPI factory_QueryInterface(
- IActivationFactory *iface, REFIID iid, void **out)
+static HRESULT WINAPI factory_QueryInterface( IActivationFactory *iface, REFIID iid, void **out )
{
struct synthesizer_statics *impl = impl_from_IActivationFactory(iface);
@@ -445,8 +422,7 @@ static HRESULT WINAPI factory_QueryInterface(
return E_NOINTERFACE;
}
-static ULONG WINAPI factory_AddRef(
- IActivationFactory *iface)
+static ULONG WINAPI factory_AddRef( IActivationFactory *iface )
{
struct synthesizer_statics *impl = impl_from_IActivationFactory(iface);
ULONG ref = InterlockedIncrement(&impl->ref);
@@ -454,8 +430,7 @@ static ULONG WINAPI factory_AddRef(
return ref;
}
-static ULONG WINAPI factory_Release(
- IActivationFactory *iface)
+static ULONG WINAPI factory_Release( IActivationFactory *iface )
{
struct synthesizer_statics *impl = impl_from_IActivationFactory(iface);
ULONG ref = InterlockedDecrement(&impl->ref);
@@ -463,29 +438,25 @@ static ULONG WINAPI factory_Release(
return ref;
}
-static HRESULT WINAPI factory_GetIids(
- IActivationFactory *iface, ULONG *iid_count, IID **iids)
+static HRESULT WINAPI factory_GetIids( IActivationFactory *iface, ULONG *iid_count, IID **iids )
{
FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
return E_NOTIMPL;
}
-static HRESULT WINAPI factory_GetRuntimeClassName(
- IActivationFactory *iface, HSTRING *class_name)
+static HRESULT WINAPI factory_GetRuntimeClassName( IActivationFactory *iface, HSTRING *class_name )
{
FIXME("iface %p, class_name %p stub!\n", iface, class_name);
return E_NOTIMPL;
}
-static HRESULT WINAPI factory_GetTrustLevel(
- IActivationFactory *iface, TrustLevel *trust_level)
+static HRESULT WINAPI factory_GetTrustLevel( IActivationFactory *iface, TrustLevel *trust_level )
{
FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
return E_NOTIMPL;
}
-static HRESULT WINAPI factory_ActivateInstance(
- IActivationFactory *iface, IInspectable **instance)
+static HRESULT WINAPI factory_ActivateInstance( IActivationFactory *iface, IInspectable **instance )
{
struct speech_synthesizer *obj;
@@ -518,50 +489,43 @@ static const struct IActivationFactoryVtbl factory_vtbl =
factory_ActivateInstance,
};
-static HRESULT WINAPI installed_voices_static_QueryInterface(
- IInstalledVoicesStatic *iface, REFIID iid, void **out)
+static HRESULT WINAPI installed_voices_static_QueryInterface( IInstalledVoicesStatic *iface, REFIID iid, void **out )
{
struct synthesizer_statics *impl = impl_from_IInstalledVoicesStatic(iface);
return IActivationFactory_QueryInterface(&impl->IActivationFactory_iface, iid, out);
}
-static ULONG WINAPI installed_voices_static_AddRef(
- IInstalledVoicesStatic *iface)
+static ULONG WINAPI installed_voices_static_AddRef( IInstalledVoicesStatic *iface )
{
struct synthesizer_statics *impl = impl_from_IInstalledVoicesStatic(iface);
return IActivationFactory_AddRef(&impl->IActivationFactory_iface);
}
-static ULONG WINAPI installed_voices_static_Release(
- IInstalledVoicesStatic *iface)
+static ULONG WINAPI installed_voices_static_Release( IInstalledVoicesStatic *iface )
{
struct synthesizer_statics *impl = impl_from_IInstalledVoicesStatic(iface);
return IActivationFactory_Release(&impl->IActivationFactory_iface);
}
-static HRESULT WINAPI installed_voices_static_GetIids(
- IInstalledVoicesStatic *iface, ULONG *iid_count, IID **iids)
+static HRESULT WINAPI installed_voices_static_GetIids( IInstalledVoicesStatic *iface, ULONG *iid_count, IID **iids )
{
FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
return E_NOTIMPL;
}
-static HRESULT WINAPI installed_voices_static_GetRuntimeClassName(
- IInstalledVoicesStatic *iface, HSTRING *class_name)
+static HRESULT WINAPI installed_voices_static_GetRuntimeClassName( IInstalledVoicesStatic *iface, HSTRING *class_name )
{
FIXME("iface %p, class_name %p stub!\n", iface, class_name);
return E_NOTIMPL;
}
-static HRESULT WINAPI installed_voices_static_GetTrustLevel(
- IInstalledVoicesStatic *iface, TrustLevel *trust_level)
+static HRESULT WINAPI installed_voices_static_GetTrustLevel( IInstalledVoicesStatic *iface, TrustLevel *trust_level )
{
FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
return E_NOTIMPL;
}
-static HRESULT WINAPI installed_voices_static_get_AllVoices(
- IInstalledVoicesStatic *iface, IVectorView_VoiceInformation **value)
+static HRESULT WINAPI installed_voices_static_get_AllVoices( IInstalledVoicesStatic *iface, IVectorView_VoiceInformation **value )
{
TRACE("iface %p, value %p.\n", iface, value);
*value = &all_voices.IVectorView_VoiceInformation_iface;
@@ -569,8 +533,7 @@ static HRESULT WINAPI installed_voices_static_get_AllVoices(
return S_OK;
}
-static HRESULT WINAPI installed_voices_static_get_DefaultVoice(
- IInstalledVoicesStatic *iface, IVoiceInformation **value)
+static HRESULT WINAPI installed_voices_static_get_DefaultVoice( IInstalledVoicesStatic *iface, IVoiceInformation **value )
{
FIXME("iface %p, value %p stub!\n", iface, value);
return E_NOTIMPL;
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022
[PATCH 1/9] windows.media.speech: Replace STDMETHODCALLTYPE with WINAPI on synthesis functions.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 87 ++++++++++++-------------
1 file changed, 43 insertions(+), 44 deletions(-)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index 179229b4bb4..edd71e60bc0 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -34,7 +34,7 @@ static inline struct voice_information_vector *impl_from_IVectorView_VoiceInform
return CONTAINING_RECORD(iface, struct voice_information_vector, IVectorView_VoiceInformation_iface);
}
-static HRESULT STDMETHODCALLTYPE vector_view_voice_information_QueryInterface(
+static HRESULT WINAPI vector_view_voice_information_QueryInterface(
IVectorView_VoiceInformation *iface, REFIID iid, void **out)
{
TRACE("iface %p, iid %s, out %p stub!\n", iface, debugstr_guid(iid), out);
@@ -53,7 +53,7 @@ static HRESULT STDMETHODCALLTYPE vector_view_voice_information_QueryInterface(
return E_NOINTERFACE;
}
-static ULONG STDMETHODCALLTYPE vector_view_voice_information_AddRef(
+static ULONG WINAPI vector_view_voice_information_AddRef(
IVectorView_VoiceInformation *iface)
{
struct voice_information_vector *impl = impl_from_IVectorView_VoiceInformation(iface);
@@ -62,7 +62,7 @@ static ULONG STDMETHODCALLTYPE vector_view_voice_information_AddRef(
return ref;
}
-static ULONG STDMETHODCALLTYPE vector_view_voice_information_Release(
+static ULONG WINAPI vector_view_voice_information_Release(
IVectorView_VoiceInformation *iface)
{
struct voice_information_vector *impl = impl_from_IVectorView_VoiceInformation(iface);
@@ -71,28 +71,28 @@ static ULONG STDMETHODCALLTYPE vector_view_voice_information_Release(
return ref;
}
-static HRESULT STDMETHODCALLTYPE vector_view_voice_information_GetIids(
+static HRESULT WINAPI vector_view_voice_information_GetIids(
IVectorView_VoiceInformation *iface, ULONG *iid_count, IID **iids)
{
FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE vector_view_voice_information_GetRuntimeClassName(
+static HRESULT WINAPI vector_view_voice_information_GetRuntimeClassName(
IVectorView_VoiceInformation *iface, HSTRING *class_name)
{
FIXME("iface %p, class_name %p stub!\n", iface, class_name);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE vector_view_voice_information_GetTrustLevel(
+static HRESULT WINAPI vector_view_voice_information_GetTrustLevel(
IVectorView_VoiceInformation *iface, TrustLevel *trust_level)
{
FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE vector_view_voice_information_GetAt(
+static HRESULT WINAPI vector_view_voice_information_GetAt(
IVectorView_VoiceInformation *iface, UINT32 index, IVoiceInformation **value)
{
FIXME("iface %p, index %#x, value %p stub!\n", iface, index, value);
@@ -100,7 +100,7 @@ static HRESULT STDMETHODCALLTYPE vector_view_voice_information_GetAt(
return E_BOUNDS;
}
-static HRESULT STDMETHODCALLTYPE vector_view_voice_information_get_Size(
+static HRESULT WINAPI vector_view_voice_information_get_Size(
IVectorView_VoiceInformation *iface, UINT32 *value)
{
FIXME("iface %p, value %p stub!\n", iface, value);
@@ -108,7 +108,7 @@ static HRESULT STDMETHODCALLTYPE vector_view_voice_information_get_Size(
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE vector_view_voice_information_IndexOf(
+static HRESULT WINAPI vector_view_voice_information_IndexOf(
IVectorView_VoiceInformation *iface, IVoiceInformation *element, UINT32 *index, BOOLEAN *found)
{
FIXME("iface %p, element %p, index %p, found %p stub!\n", iface, element, index, found);
@@ -117,7 +117,7 @@ static HRESULT STDMETHODCALLTYPE vector_view_voice_information_IndexOf(
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE vector_view_voice_information_GetMany(
+static HRESULT WINAPI vector_view_voice_information_GetMany(
IVectorView_VoiceInformation *iface, UINT32 start_index,
UINT32 items_size, IVoiceInformation **items, UINT *value)
{
@@ -166,7 +166,7 @@ static inline struct speech_synthesizer *impl_from_IClosable(IClosable *iface)
return CONTAINING_RECORD(iface, struct speech_synthesizer, IClosable_iface);
}
-static HRESULT STDMETHODCALLTYPE speech_synthesizer_QueryInterface(
+static HRESULT WINAPI speech_synthesizer_QueryInterface(
ISpeechSynthesizer *iface, REFIID iid, void **out)
{
struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
@@ -201,7 +201,7 @@ static HRESULT STDMETHODCALLTYPE speech_synthesizer_QueryInterface(
return E_NOINTERFACE;
}
-static ULONG STDMETHODCALLTYPE speech_synthesizer_AddRef(
+static ULONG WINAPI speech_synthesizer_AddRef(
ISpeechSynthesizer *iface)
{
struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
@@ -212,7 +212,7 @@ static ULONG STDMETHODCALLTYPE speech_synthesizer_AddRef(
return ref;
}
-static ULONG STDMETHODCALLTYPE speech_synthesizer_Release(
+static ULONG WINAPI speech_synthesizer_Release(
ISpeechSynthesizer *iface)
{
struct speech_synthesizer *impl = impl_from_ISpeechSynthesizer(iface);
@@ -226,7 +226,7 @@ static ULONG STDMETHODCALLTYPE speech_synthesizer_Release(
return ref;
}
-static HRESULT STDMETHODCALLTYPE speech_synthesizer_GetIids(
+static HRESULT WINAPI speech_synthesizer_GetIids(
ISpeechSynthesizer *iface, ULONG *iid_count, IID **iids)
{
FIXME("iface %p, iid_count %p, iids %p stub.\n", iface, iid_count, iids);
@@ -234,7 +234,7 @@ static HRESULT STDMETHODCALLTYPE speech_synthesizer_GetIids(
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE speech_synthesizer_GetRuntimeClassName(
+static HRESULT WINAPI speech_synthesizer_GetRuntimeClassName(
ISpeechSynthesizer *iface, HSTRING *class_name)
{
FIXME("iface %p, class_name %p stub.\n", iface, class_name);
@@ -242,7 +242,7 @@ static HRESULT STDMETHODCALLTYPE speech_synthesizer_GetRuntimeClassName(
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE speech_synthesizer_GetTrustLevel(
+static HRESULT WINAPI speech_synthesizer_GetTrustLevel(
ISpeechSynthesizer *iface, TrustLevel *trust_level)
{
FIXME("iface %p, trust_level %p stub.\n", iface, trust_level);
@@ -250,7 +250,7 @@ static HRESULT STDMETHODCALLTYPE speech_synthesizer_GetTrustLevel(
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE speech_synthesizer_SynthesizeTextToStreamAsync(ISpeechSynthesizer *iface,
+static HRESULT WINAPI speech_synthesizer_SynthesizeTextToStreamAsync(ISpeechSynthesizer *iface,
HSTRING text, IAsyncOperation_SpeechSynthesisStream **operation)
{
FIXME("iface %p, text %p, operation %p stub.\n", iface, text, operation);
@@ -258,7 +258,7 @@ static HRESULT STDMETHODCALLTYPE speech_synthesizer_SynthesizeTextToStreamAsync(
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE speech_synthesizer_SynthesizeSsmlToStreamAsync(ISpeechSynthesizer *iface,
+static HRESULT WINAPI speech_synthesizer_SynthesizeSsmlToStreamAsync(ISpeechSynthesizer *iface,
HSTRING ssml, IAsyncOperation_SpeechSynthesisStream **operation)
{
FIXME("iface %p, text %p, operation %p stub.\n", iface, ssml, operation);
@@ -266,14 +266,14 @@ static HRESULT STDMETHODCALLTYPE speech_synthesizer_SynthesizeSsmlToStreamAsync(
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE speech_synthesizer_put_Voice(ISpeechSynthesizer *iface, IVoiceInformation *value)
+static HRESULT WINAPI speech_synthesizer_put_Voice(ISpeechSynthesizer *iface, IVoiceInformation *value)
{
FIXME("iface %p, value %p stub.\n", iface, value);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE speech_synthesizer_get_Voice(ISpeechSynthesizer *iface, IVoiceInformation **value)
+static HRESULT WINAPI speech_synthesizer_get_Voice(ISpeechSynthesizer *iface, IVoiceInformation **value)
{
FIXME("iface %p, value %p stub.\n", iface, value);
@@ -297,10 +297,9 @@ static const struct ISpeechSynthesizerVtbl speech_synthesizer_vtbl =
speech_synthesizer_get_Voice,
};
-
DEFINE_IINSPECTABLE(speech_synthesizer2, ISpeechSynthesizer2, struct speech_synthesizer, ISpeechSynthesizer_iface)
-static HRESULT STDMETHODCALLTYPE speech_synthesizer2_get_Options(ISpeechSynthesizer2 *iface, ISpeechSynthesizerOptions **value)
+static HRESULT WINAPI speech_synthesizer2_get_Options(ISpeechSynthesizer2 *iface, ISpeechSynthesizerOptions **value)
{
FIXME("iface %p, value %p stub.\n", iface, value);
@@ -321,7 +320,7 @@ static const struct ISpeechSynthesizer2Vtbl speech_synthesizer2_vtbl =
speech_synthesizer2_get_Options,
};
-static HRESULT STDMETHODCALLTYPE closable_QueryInterface(
+static HRESULT WINAPI closable_QueryInterface(
IClosable *iface, REFIID iid, void **out)
{
struct speech_synthesizer *impl = impl_from_IClosable(iface);
@@ -329,7 +328,7 @@ static HRESULT STDMETHODCALLTYPE closable_QueryInterface(
return ISpeechSynthesizer_QueryInterface(&impl->ISpeechSynthesizer_iface, iid, out);
}
-static ULONG STDMETHODCALLTYPE closable_AddRef(
+static ULONG WINAPI closable_AddRef(
IClosable *iface)
{
struct speech_synthesizer *impl = impl_from_IClosable(iface);
@@ -340,7 +339,7 @@ static ULONG STDMETHODCALLTYPE closable_AddRef(
return ref;
}
-static ULONG STDMETHODCALLTYPE closable_Release(
+static ULONG WINAPI closable_Release(
IClosable *iface)
{
struct speech_synthesizer *impl = impl_from_IClosable(iface);
@@ -354,7 +353,7 @@ static ULONG STDMETHODCALLTYPE closable_Release(
return ref;
}
-static HRESULT STDMETHODCALLTYPE closable_GetIids(
+static HRESULT WINAPI closable_GetIids(
IClosable *iface, ULONG *iid_count, IID **iids)
{
FIXME("iface %p, iid_count %p, iids %p stub.\n", iface, iid_count, iids);
@@ -362,7 +361,7 @@ static HRESULT STDMETHODCALLTYPE closable_GetIids(
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE closable_GetRuntimeClassName(
+static HRESULT WINAPI closable_GetRuntimeClassName(
IClosable *iface, HSTRING *class_name)
{
FIXME("iface %p, class_name %p stub.\n", iface, class_name);
@@ -370,7 +369,7 @@ static HRESULT STDMETHODCALLTYPE closable_GetRuntimeClassName(
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE closable_GetTrustLevel(
+static HRESULT WINAPI closable_GetTrustLevel(
IClosable *iface, TrustLevel *trust_level)
{
FIXME("iface %p, trust_level %p stub.\n", iface, trust_level);
@@ -378,7 +377,7 @@ static HRESULT STDMETHODCALLTYPE closable_GetTrustLevel(
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE closable_Close(
+static HRESULT WINAPI closable_Close(
IClosable *iface)
{
FIXME("iface %p stub.\n", iface);
@@ -417,7 +416,7 @@ static inline struct synthesizer_statics *impl_from_IInstalledVoicesStatic(IInst
return CONTAINING_RECORD(iface, struct synthesizer_statics, IInstalledVoicesStatic_iface);
}
-static HRESULT STDMETHODCALLTYPE factory_QueryInterface(
+static HRESULT WINAPI factory_QueryInterface(
IActivationFactory *iface, REFIID iid, void **out)
{
struct synthesizer_statics *impl = impl_from_IActivationFactory(iface);
@@ -446,7 +445,7 @@ static HRESULT STDMETHODCALLTYPE factory_QueryInterface(
return E_NOINTERFACE;
}
-static ULONG STDMETHODCALLTYPE factory_AddRef(
+static ULONG WINAPI factory_AddRef(
IActivationFactory *iface)
{
struct synthesizer_statics *impl = impl_from_IActivationFactory(iface);
@@ -455,7 +454,7 @@ static ULONG STDMETHODCALLTYPE factory_AddRef(
return ref;
}
-static ULONG STDMETHODCALLTYPE factory_Release(
+static ULONG WINAPI factory_Release(
IActivationFactory *iface)
{
struct synthesizer_statics *impl = impl_from_IActivationFactory(iface);
@@ -464,28 +463,28 @@ static ULONG STDMETHODCALLTYPE factory_Release(
return ref;
}
-static HRESULT STDMETHODCALLTYPE factory_GetIids(
+static HRESULT WINAPI factory_GetIids(
IActivationFactory *iface, ULONG *iid_count, IID **iids)
{
FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE factory_GetRuntimeClassName(
+static HRESULT WINAPI factory_GetRuntimeClassName(
IActivationFactory *iface, HSTRING *class_name)
{
FIXME("iface %p, class_name %p stub!\n", iface, class_name);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE factory_GetTrustLevel(
+static HRESULT WINAPI factory_GetTrustLevel(
IActivationFactory *iface, TrustLevel *trust_level)
{
FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE factory_ActivateInstance(
+static HRESULT WINAPI factory_ActivateInstance(
IActivationFactory *iface, IInspectable **instance)
{
struct speech_synthesizer *obj;
@@ -519,49 +518,49 @@ static const struct IActivationFactoryVtbl factory_vtbl =
factory_ActivateInstance,
};
-static HRESULT STDMETHODCALLTYPE installed_voices_static_QueryInterface(
+static HRESULT WINAPI installed_voices_static_QueryInterface(
IInstalledVoicesStatic *iface, REFIID iid, void **out)
{
struct synthesizer_statics *impl = impl_from_IInstalledVoicesStatic(iface);
return IActivationFactory_QueryInterface(&impl->IActivationFactory_iface, iid, out);
}
-static ULONG STDMETHODCALLTYPE installed_voices_static_AddRef(
+static ULONG WINAPI installed_voices_static_AddRef(
IInstalledVoicesStatic *iface)
{
struct synthesizer_statics *impl = impl_from_IInstalledVoicesStatic(iface);
return IActivationFactory_AddRef(&impl->IActivationFactory_iface);
}
-static ULONG STDMETHODCALLTYPE installed_voices_static_Release(
+static ULONG WINAPI installed_voices_static_Release(
IInstalledVoicesStatic *iface)
{
struct synthesizer_statics *impl = impl_from_IInstalledVoicesStatic(iface);
return IActivationFactory_Release(&impl->IActivationFactory_iface);
}
-static HRESULT STDMETHODCALLTYPE installed_voices_static_GetIids(
+static HRESULT WINAPI installed_voices_static_GetIids(
IInstalledVoicesStatic *iface, ULONG *iid_count, IID **iids)
{
FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE installed_voices_static_GetRuntimeClassName(
+static HRESULT WINAPI installed_voices_static_GetRuntimeClassName(
IInstalledVoicesStatic *iface, HSTRING *class_name)
{
FIXME("iface %p, class_name %p stub!\n", iface, class_name);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE installed_voices_static_GetTrustLevel(
+static HRESULT WINAPI installed_voices_static_GetTrustLevel(
IInstalledVoicesStatic *iface, TrustLevel *trust_level)
{
FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
return E_NOTIMPL;
}
-static HRESULT STDMETHODCALLTYPE installed_voices_static_get_AllVoices(
+static HRESULT WINAPI installed_voices_static_get_AllVoices(
IInstalledVoicesStatic *iface, IVectorView_VoiceInformation **value)
{
TRACE("iface %p, value %p.\n", iface, value);
@@ -570,7 +569,7 @@ static HRESULT STDMETHODCALLTYPE installed_voices_static_get_AllVoices(
return S_OK;
}
-static HRESULT STDMETHODCALLTYPE installed_voices_static_get_DefaultVoice(
+static HRESULT WINAPI installed_voices_static_get_DefaultVoice(
IInstalledVoicesStatic *iface, IVoiceInformation **value)
{
FIXME("iface %p, value %p stub!\n", iface, value);
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022
[PATCH 0/9] MR176: windows.media.speech: Bring synthesizer.c more in line with the rest of the Dll.
by Bernhard Kölbl
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/176
June 2, 2022