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 v4 7/9] windows.media.speech: Return IAsyncOperation from synthesizer_SynthesizeTextToStreamAsync.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Based on a patch by: Connor McAdams <cmcadams(a)codeweavers.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
dlls/windows.media.speech/synthesizer.c | 8 +++++++-
dlls/windows.media.speech/tests/speech.c | 11 +++++------
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/dlls/windows.media.speech/synthesizer.c b/dlls/windows.media.speech/synthesizer.c
index e8c9f0a280d..3a77fc62234 100644
--- a/dlls/windows.media.speech/synthesizer.c
+++ b/dlls/windows.media.speech/synthesizer.c
@@ -241,11 +241,17 @@ static HRESULT WINAPI synthesizer_GetTrustLevel( ISpeechSynthesizer *iface, Trus
return E_NOTIMPL;
}
+static HRESULT CALLBACK text_to_stream_operation( IInspectable *invoker, IInspectable **result )
+{
+ return S_OK;
+}
+
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;
+ return async_operation_inspectable_create(&IID_IAsyncOperation_SpeechSynthesisStream, NULL,
+ text_to_stream_operation, (IAsyncOperation_IInspectable **)operation);
}
static HRESULT WINAPI synthesizer_SynthesizeSsmlToStreamAsync( ISpeechSynthesizer *iface, HSTRING ssml,
diff --git a/dlls/windows.media.speech/tests/speech.c b/dlls/windows.media.speech/tests/speech.c
index c8bf1646080..392a38c27e2 100644
--- a/dlls/windows.media.speech/tests/speech.c
+++ b/dlls/windows.media.speech/tests/speech.c
@@ -933,13 +933,11 @@ static void test_SpeechSynthesizer(void)
ok(hr == S_OK, "WindowsCreateString failed, hr %#lx\n", hr);
hr = ISpeechSynthesizer_SynthesizeTextToStreamAsync(synthesizer, NULL, &operation_ss_stream);
- todo_wine ok(hr == S_OK, "ISpeechSynthesizer_SynthesizeTextToStreamAsync failed, hr %#lx\n", hr);
- if(FAILED(hr)) goto skip_ss_stream;
-
+ ok(hr == S_OK, "ISpeechSynthesizer_SynthesizeTextToStreamAsync failed, hr %#lx\n", hr);
IAsyncOperation_SpeechSynthesisStream_Release(operation_ss_stream);
hr = ISpeechSynthesizer_SynthesizeTextToStreamAsync(synthesizer, str, &operation_ss_stream);
- todo_wine ok(hr == S_OK, "ISpeechSynthesizer_SynthesizeTextToStreamAsync failed, hr %#lx\n", hr);
+ ok(hr == S_OK, "ISpeechSynthesizer_SynthesizeTextToStreamAsync failed, hr %#lx\n", hr);
await_async_inspectable((IAsyncOperation_IInspectable *)operation_ss_stream,
&async_inspectable_handler,
@@ -974,6 +972,8 @@ static void test_SpeechSynthesizer(void)
hr = ISpeechSynthesizer_SynthesizeSsmlToStreamAsync(synthesizer, str2, &operation_ss_stream);
todo_wine ok(hr == S_OK, "ISpeechSynthesizer_SynthesizeSsmlToStreamAsync failed, hr %#lx\n", hr);
+ if(FAILED(hr)) goto skip_ss_stream;
+
await_async_inspectable((IAsyncOperation_IInspectable *)operation_ss_stream,
&async_inspectable_handler,
&IID_IAsyncOperationCompletedHandler_SpeechSynthesisStream);
@@ -1009,9 +1009,8 @@ static void test_SpeechSynthesizer(void)
todo_wine ok(!!operation_ss_stream || broken(operation_ss_stream == NULL), "operation_ss_stream had value %p.\n", operation_ss_stream);
if (hr == S_OK) IAsyncOperation_SpeechSynthesisStream_Release(operation_ss_stream);
- WindowsDeleteString(str2);
-
skip_ss_stream:
+ WindowsDeleteString(str2);
WindowsDeleteString(str);
hr = IInspectable_QueryInterface(inspectable, &IID_IClosable, (void **)&closable);
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/217
June 13, 2022
[PATCH v4 6/9] windows.media.speech/tests: Add basic tests for ssml/text to stream 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/tests/speech.c | 119 +++++++++++++++++++++--
1 file changed, 113 insertions(+), 6 deletions(-)
diff --git a/dlls/windows.media.speech/tests/speech.c b/dlls/windows.media.speech/tests/speech.c
index d6c0c5e1988..c8bf1646080 100644
--- a/dlls/windows.media.speech/tests/speech.c
+++ b/dlls/windows.media.speech/tests/speech.c
@@ -41,6 +41,7 @@
#define AsyncStatus_Closed 4
#define SPERR_WINRT_INTERNAL_ERROR 0x800455a0
+#define SPERR_WINRT_INCORRECT_FORMAT 0x80131537
#define IHandler_RecognitionResult ITypedEventHandler_SpeechContinuousRecognitionSession_SpeechContinuousRecognitionResultGeneratedEventArgs
#define IHandler_RecognitionResultVtbl ITypedEventHandler_SpeechContinuousRecognitionSession_SpeechContinuousRecognitionResultGeneratedEventArgsVtbl
@@ -779,18 +780,27 @@ static void test_ActivationFactory(void)
static void test_SpeechSynthesizer(void)
{
+ static const WCHAR *simple_ssml =
+ L"<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='en-US'>"
+ "Hello, how are you doing today?"
+ "</speak>";
+ static const WCHAR *simple_synth_text = L"Hello, how are you doing today?";
static const WCHAR *speech_synthesizer_name = L"Windows.Media.SpeechSynthesis.SpeechSynthesizer";
static const WCHAR *speech_synthesizer_name2 = L"windows.media.speechsynthesis.speechsynthesizer";
static const WCHAR *unknown_class_name = L"Unknown.Class";
IActivationFactory *factory = NULL, *factory2 = NULL;
+ IAsyncOperation_SpeechSynthesisStream *operation_ss_stream = NULL;
+ IVectorView_IMediaMarker *media_markers = NULL;
IVectorView_VoiceInformation *voices = NULL;
IInstalledVoicesStatic *voices_static = NULL;
+ ISpeechSynthesisStream *ss_stream = NULL;
IVoiceInformation *voice;
IInspectable *inspectable = NULL, *tmp_inspectable = NULL;
IAgileObject *agile_object = NULL, *tmp_agile_object = NULL;
ISpeechSynthesizer *synthesizer;
ISpeechSynthesizer2 *synthesizer2;
IClosable *closable;
+ struct async_inspectable_handler async_inspectable_handler;
HMODULE hdll;
HSTRING str, str2;
HRESULT hr;
@@ -843,6 +853,7 @@ static void test_SpeechSynthesizer(void)
FreeLibrary(hdll);
}
+ /* Test static Synth ifaces: IActivationFactory, IInstalledVoicesStatic, etc. */
hr = IActivationFactory_QueryInterface(factory, &IID_IInspectable, (void **)&inspectable);
ok(hr == S_OK, "IActivationFactory_QueryInterface IID_IInspectable failed, hr %#lx\n", hr);
@@ -889,27 +900,125 @@ static void test_SpeechSynthesizer(void)
IVectorView_VoiceInformation_Release(voices);
- IInstalledVoicesStatic_Release(voices_static);
+ hr = IInstalledVoicesStatic_get_DefaultVoice(voices_static, &voice);
+ todo_wine ok(hr == S_OK, "IInstalledVoicesStatic_get_DefaultVoice failed, hr %#lx\n", hr);
+
+ if (hr == S_OK)
+ {
+ IVoiceInformation_get_Description(voice, &str2);
+ trace("SpeechSynthesizer default voice %s.\n", debugstr_hstring(str2));
+
+ WindowsDeleteString(str2);
+ ref = IVoiceInformation_Release(voice);
+ ok(ref == 0, "Got unexpected ref %lu.\n", ref);
+ }
+ IInstalledVoicesStatic_Release(voices_static);
IAgileObject_Release(agile_object);
IInspectable_Release(inspectable);
+ /* Test Synthesizer */
hr = IActivationFactory_QueryInterface(factory, &IID_ISpeechSynthesizer, (void **)&synthesizer);
ok(hr == E_NOINTERFACE, "Got unexpected hr %#lx.\n", hr);
hr = RoActivateInstance(str, &inspectable);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ WindowsDeleteString(str);
hr = IInspectable_QueryInterface(inspectable, &IID_ISpeechSynthesizer, (void **)&synthesizer);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ /* Test SynthesizeTextToStreamAsync */
+ hr = WindowsCreateString(simple_synth_text, wcslen(simple_synth_text), &str);
+ ok(hr == S_OK, "WindowsCreateString failed, hr %#lx\n", hr);
+
+ hr = ISpeechSynthesizer_SynthesizeTextToStreamAsync(synthesizer, NULL, &operation_ss_stream);
+ todo_wine ok(hr == S_OK, "ISpeechSynthesizer_SynthesizeTextToStreamAsync failed, hr %#lx\n", hr);
+ if(FAILED(hr)) goto skip_ss_stream;
+
+ IAsyncOperation_SpeechSynthesisStream_Release(operation_ss_stream);
+
+ hr = ISpeechSynthesizer_SynthesizeTextToStreamAsync(synthesizer, str, &operation_ss_stream);
+ todo_wine ok(hr == S_OK, "ISpeechSynthesizer_SynthesizeTextToStreamAsync failed, hr %#lx\n", hr);
+
+ await_async_inspectable((IAsyncOperation_IInspectable *)operation_ss_stream,
+ &async_inspectable_handler,
+ &IID_IAsyncOperationCompletedHandler_SpeechSynthesisStream);
+ check_async_info((IInspectable *)operation_ss_stream, 2, Completed, S_OK);
+ check_interface(operation_ss_stream, &IID_IAsyncOperation_SpeechSynthesisStream, TRUE);
+ check_interface(operation_ss_stream, &IID_IAgileObject, TRUE);
+
+ hr = IAsyncOperation_SpeechSynthesisStream_GetResults(operation_ss_stream, &ss_stream);
+ todo_wine ok(hr == S_OK, "IAsyncOperation_SpeechSynthesisStream_GetResults failed, hr %#lx\n", hr);
+
+ if (hr == S_OK && ss_stream)
+ {
+ hr = ISpeechSynthesisStream_get_Markers(ss_stream, &media_markers);
+ todo_wine ok(hr == S_OK, "ISpeechSynthesisStream_get_Markers failed, hr %#lx\n", hr);
+ check_interface(media_markers, &IID_IVectorView_IMediaMarker, TRUE);
+ check_interface(media_markers, &IID_IIterable_IMediaMarker, TRUE);
+ check_interface(media_markers, &IID_IAgileObject, TRUE);
+
+ ref = IVectorView_IMediaMarker_Release(media_markers);
+ todo_wine ok(ref == 0, "Got unexpected ref %lu.\n", ref);
+
+ ref = ISpeechSynthesisStream_Release(ss_stream);
+ todo_wine ok(ref == 0, "Got unexpected ref %lu.\n", ref);
+ }
+
+ IAsyncOperation_SpeechSynthesisStream_Release(operation_ss_stream);
+
+ /* Test SynthesizeSsmlToStreamAsync */
+ hr = WindowsCreateString(simple_ssml, wcslen(simple_ssml), &str2);
+ ok(hr == S_OK, "WindowsCreateString failed, hr %#lx\n", hr);
+
+ hr = ISpeechSynthesizer_SynthesizeSsmlToStreamAsync(synthesizer, str2, &operation_ss_stream);
+ todo_wine ok(hr == S_OK, "ISpeechSynthesizer_SynthesizeSsmlToStreamAsync failed, hr %#lx\n", hr);
+ await_async_inspectable((IAsyncOperation_IInspectable *)operation_ss_stream,
+ &async_inspectable_handler,
+ &IID_IAsyncOperationCompletedHandler_SpeechSynthesisStream);
+ check_async_info((IInspectable *)operation_ss_stream, 3, Completed, S_OK);
+ check_interface(operation_ss_stream, &IID_IAsyncOperation_SpeechSynthesisStream, TRUE);
+ check_interface(operation_ss_stream, &IID_IAgileObject, TRUE);
+
+ hr = IAsyncOperation_SpeechSynthesisStream_GetResults(operation_ss_stream, &ss_stream);
+ todo_wine ok(hr == S_OK, "IAsyncOperation_SpeechSynthesisStream_GetResults failed, hr %#lx\n", hr);
+
+ if (hr == S_OK && ss_stream)
+ {
+ check_interface(ss_stream, &IID_ISpeechSynthesisStream, TRUE);
+ check_interface(ss_stream, &IID_IAgileObject, TRUE);
+
+ ref = ISpeechSynthesisStream_Release(ss_stream);
+ ok(ref == 0, "Got unexpected ref %lu.\n", ref);
+ }
+
+ IAsyncOperation_SpeechSynthesisStream_Release(operation_ss_stream);
+
+ operation_ss_stream = (void *)0xdeadbeef;
+ hr = ISpeechSynthesizer_SynthesizeSsmlToStreamAsync(synthesizer, NULL, &operation_ss_stream);
+ /* Broken on Win 8 + 8.1 */
+ todo_wine ok(hr == S_OK || broken(hr == E_INVALIDARG), "ISpeechSynthesizer_SynthesizeSsmlToStreamAsync failed, hr %#lx\n", hr);
+ todo_wine ok(!!operation_ss_stream || broken(operation_ss_stream == NULL), "operation_ss_stream had value %p.\n", operation_ss_stream);
+ if (hr == S_OK) IAsyncOperation_SpeechSynthesisStream_Release(operation_ss_stream);
+
+ operation_ss_stream = (void *)0xdeadbeef;
+ hr = ISpeechSynthesizer_SynthesizeSsmlToStreamAsync(synthesizer, str, &operation_ss_stream);
+ /* Broken on Win 8 + 8.1 */
+ todo_wine ok(hr == S_OK || broken(hr == SPERR_WINRT_INCORRECT_FORMAT), "ISpeechSynthesizer_SynthesizeSsmlToStreamAsync failed, hr %#lx\n", hr);
+ todo_wine ok(!!operation_ss_stream || broken(operation_ss_stream == NULL), "operation_ss_stream had value %p.\n", operation_ss_stream);
+ if (hr == S_OK) IAsyncOperation_SpeechSynthesisStream_Release(operation_ss_stream);
+
+ WindowsDeleteString(str2);
+
+skip_ss_stream:
+ WindowsDeleteString(str);
+
hr = IInspectable_QueryInterface(inspectable, &IID_IClosable, (void **)&closable);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
hr = IInspectable_QueryInterface(inspectable, &IID_ISpeechSynthesizer2, (void **)&synthesizer2);
- ok(hr == S_OK ||
- broken(hr == E_NOINTERFACE), /* requires newer Windows */
- "Got unexpected hr %#lx.\n", hr);
+ ok(hr == S_OK || broken(hr == E_NOINTERFACE), "Got unexpected hr %#lx.\n", hr); /* Requires Win10 >= 1703 */
if (hr == S_OK)
{
@@ -927,8 +1036,6 @@ static void test_SpeechSynthesizer(void)
ok(!ref, "Got unexpected ref %lu.\n", ref);
IActivationFactory_Release(factory);
- WindowsDeleteString(str);
-
RoUninitialize();
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/217
June 13, 2022
[PATCH v4 5/9] windows.media.speech/tests: Handle a possible race condition.
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/tests/speech.c | 33 ++++++++++++++----------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/dlls/windows.media.speech/tests/speech.c b/dlls/windows.media.speech/tests/speech.c
index 421819fd10a..d6c0c5e1988 100644
--- a/dlls/windows.media.speech/tests/speech.c
+++ b/dlls/windows.media.speech/tests/speech.c
@@ -1122,26 +1122,33 @@ static void test_SpeechRecognizer(void)
compilation_result = (void*)0xdeadbeef;
hr = IAsyncOperation_SpeechRecognitionCompilationResult_GetResults(operation, &compilation_result);
- ok(hr == E_ILLEGAL_METHOD_CALL, "Got unexpected hr %#lx.\n", hr);
- ok(compilation_result == (void*)0xdeadbeef, "Compilation result had value %p.\n", compilation_result);
+ ok(hr == E_ILLEGAL_METHOD_CALL || hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ if (hr == E_ILLEGAL_METHOD_CALL) /* Sometimes the operation could have already finished here, */
+ /* if so skip waiting and getting the results a second time. */
+ {
+ ok(compilation_result == (void*)0xdeadbeef, "Compilation result had value %p.\n", compilation_result);
- await_async_inspectable((IAsyncOperation_IInspectable *)operation,
- &compilation_handler,
- &IID_IAsyncOperationCompletedHandler_SpeechRecognitionCompilationResult);
- check_async_info((IInspectable *)operation, 1, Completed, S_OK);
+ await_async_inspectable((IAsyncOperation_IInspectable *)operation,
+ &compilation_handler,
+ &IID_IAsyncOperationCompletedHandler_SpeechRecognitionCompilationResult);
- hr = IAsyncOperation_SpeechRecognitionCompilationResult_put_Completed(operation, NULL);
- ok(hr == E_ILLEGAL_DELEGATE_ASSIGNMENT, "Got unexpected hr %#lx.\n", hr);
+ hr = IAsyncOperation_SpeechRecognitionCompilationResult_put_Completed(operation, NULL);
+ ok(hr == E_ILLEGAL_DELEGATE_ASSIGNMENT, "Got unexpected hr %#lx.\n", hr);
- hr = IAsyncOperation_SpeechRecognitionCompilationResult_get_Completed(operation, &handler);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ hr = IAsyncOperation_SpeechRecognitionCompilationResult_get_Completed(operation, &handler);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- compilation_result = (void*)0xdeadbeef;
- hr = IAsyncOperation_SpeechRecognitionCompilationResult_GetResults(operation, &compilation_result);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ compilation_result = (void*)0xdeadbeef;
+ hr = IAsyncOperation_SpeechRecognitionCompilationResult_GetResults(operation, &compilation_result);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ }
+ ok(compilation_result != (void*)0xdeadbeef, "Compilation result had value %p.\n", compilation_result);
check_interface(compilation_result, &IID_IAgileObject, TRUE);
+ check_async_info((IInspectable *)operation, 1, Completed, S_OK);
+
hr = ISpeechRecognitionCompilationResult_get_Status(compilation_result, &result_status);
ok(hr == S_OK, "ISpeechRecognitionCompilationResult_get_Status failed, hr %#lx.\n", hr);
ok(result_status == SpeechRecognitionResultStatus_Success, "Got unexpected status %#x.\n", result_status);
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/217
June 13, 2022
[PATCH v4 4/9] windows.media.speech/tests: Remove a useless thread id trace.
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/tests/speech.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/dlls/windows.media.speech/tests/speech.c b/dlls/windows.media.speech/tests/speech.c
index 5e74b90bf9a..421819fd10a 100644
--- a/dlls/windows.media.speech/tests/speech.c
+++ b/dlls/windows.media.speech/tests/speech.c
@@ -331,7 +331,6 @@ struct async_inspectable_handler
HANDLE event_block;
HANDLE event_finished;
- DWORD thread_id;
};
static inline struct async_inspectable_handler *impl_from_IAsyncOperationCompletedHandler_IInspectable( IAsyncOperationCompletedHandler_IInspectable *iface )
@@ -378,9 +377,8 @@ HRESULT WINAPI async_inspectable_handler_Invoke( IAsyncOperationCompletedHandler
AsyncStatus status )
{
struct async_inspectable_handler *impl = impl_from_IAsyncOperationCompletedHandler_IInspectable(iface);
- DWORD id = GetCurrentThreadId();
+
trace("Iface %p, sender %p, status %d.\n", iface, sender, status);
- trace("Caller thread id %lu callback thread id %lu.\n", impl->thread_id, id);
/* Signal finishing of the handler. */
if (impl->event_finished) SetEvent(impl->event_finished);
@@ -1217,7 +1215,6 @@ static void test_SpeechRecognizer(void)
async_inspectable_handler_create_static(&compilation_handler, &IID_IAsyncOperationCompletedHandler_SpeechRecognitionCompilationResult);
compilation_handler.event_block = CreateEventW(NULL, FALSE, FALSE, NULL);
compilation_handler.event_finished = CreateEventW(NULL, FALSE, FALSE, NULL);
- compilation_handler.thread_id = GetCurrentThreadId();
ok(!!compilation_handler.event_block, "event_block wasn't created.\n");
ok(!!compilation_handler.event_finished, "event_finished wasn't created.\n");
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/217
June 13, 2022
[PATCH v4 3/9] include/windows.media.speechsynthesis.idl: Update file to newer formatting.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
I.e. no use of nested namespaces and separation of attributes with commas.
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
include/windows.media.speechsynthesis.idl | 332 +++++++++++-----------
1 file changed, 163 insertions(+), 169 deletions(-)
diff --git a/include/windows.media.speechsynthesis.idl b/include/windows.media.speechsynthesis.idl
index 46e61ee31b4..00d3d280d9a 100644
--- a/include/windows.media.speechsynthesis.idl
+++ b/include/windows.media.speechsynthesis.idl
@@ -24,180 +24,174 @@ import "inspectable.idl";
import "windows.foundation.idl";
import "windows.media.idl";
-namespace Windows {
- namespace Foundation {
- interface IClosable;
+namespace Windows.Foundation
+{
+ interface IClosable;
+}
+
+namespace Windows.Storage.Streams
+{
+ interface IRandomAccessStreamWithContentType;
+ interface IRandomAccessStream;
+ interface IInputStream;
+ interface IOutputStream;
+ interface IContentTypeProvider;
+}
+
+namespace Windows.Media.SpeechSynthesis
+{
+ typedef enum VoiceGender VoiceGender;
+ interface IInstalledVoicesStatic;
+ interface IInstalledVoicesStatic2;
+ interface ISpeechSynthesizer;
+ interface ISpeechSynthesizer2;
+ interface IVoiceInformation;
+ interface ISpeechSynthesisStream;
+ runtimeclass SpeechSynthesizer;
+ runtimeclass VoiceInformation;
+ runtimeclass SpeechSynthesizerOptions;
+ runtimeclass SpeechSynthesisStream;
+
+ declare
+ {
+ interface Windows.Foundation.Collections.IIterable<Windows.Media.SpeechSynthesis.VoiceInformation*>;
+ interface Windows.Foundation.Collections.IIterator<Windows.Media.SpeechSynthesis.VoiceInformation*>;
+ interface Windows.Foundation.Collections.IVectorView<Windows.Media.SpeechSynthesis.VoiceInformation*>;
+ interface Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*>;
+ interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*>;
}
- namespace Media {
- namespace SpeechSynthesis {
- typedef enum VoiceGender VoiceGender;
- interface IInstalledVoicesStatic;
- interface IInstalledVoicesStatic2;
- interface ISpeechSynthesizer;
- interface ISpeechSynthesizer2;
- interface IVoiceInformation;
- interface ISpeechSynthesisStream;
- runtimeclass SpeechSynthesizer;
- runtimeclass VoiceInformation;
- runtimeclass SpeechSynthesizerOptions;
- runtimeclass SpeechSynthesisStream;
- }
+
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0)
+ ]
+ enum VoiceGender
+ {
+ Male = 0,
+ Female = 1
+ };
+
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesisStream),
+ uuid(83e46e93-244c-4622-ba0b-6229c4d0d65d)
+ ]
+ interface ISpeechSynthesisStream : IInspectable
+ requires
+ Windows.Storage.Streams.IRandomAccessStreamWithContentType,
+ Windows.Storage.Streams.IRandomAccessStream,
+ Windows.Foundation.IClosable,
+ Windows.Storage.Streams.IInputStream,
+ Windows.Storage.Streams.IOutputStream,
+ Windows.Storage.Streams.IContentTypeProvider
+ {
+ [propget] HRESULT Markers([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Media.IMediaMarker*>** value);
}
- namespace Storage {
- namespace Streams {
- interface IRandomAccessStreamWithContentType;
- interface IRandomAccessStream;
- interface IInputStream;
- interface IOutputStream;
- interface IContentTypeProvider;
- }
+
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer),
+ uuid(ce9f7c76-97f4-4ced-ad68-d51c458e45c6)
+ ]
+ interface ISpeechSynthesizer : IInspectable
+ {
+ HRESULT SynthesizeTextToStreamAsync([in] HSTRING text, [out, retval] Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*> **operation);
+ HRESULT SynthesizeSsmlToStreamAsync([in] HSTRING Ssml, [out, retval] Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*> **operation);
+ [propput] HRESULT Voice([in] VoiceInformation *value);
+ [propget] HRESULT Voice([out, retval] VoiceInformation **value);
}
-}
-namespace Windows {
- namespace Media {
- namespace SpeechSynthesis {
- declare {
- interface Windows.Foundation.Collections.IIterable<Windows.Media.SpeechSynthesis.VoiceInformation*>;
- interface Windows.Foundation.Collections.IIterator<Windows.Media.SpeechSynthesis.VoiceInformation*>;
- interface Windows.Foundation.Collections.IVectorView<Windows.Media.SpeechSynthesis.VoiceInformation*>;
- interface Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*>;
- interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*>;
- }
- }
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer),
+ uuid(a7c5ecb2-4339-4d6a-bbf8-c7a4f1544c2e)
+ ]
+ interface ISpeechSynthesizer2 : IInspectable
+ {
+ [propget] HRESULT Options([out, retval] SpeechSynthesizerOptions **value);
+ }
+
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ exclusiveto(Windows.Media.SpeechSynthesis.VoiceInformation),
+ uuid(b127d6a4-1291-4604-aa9c-83134083352c)
+ ]
+ interface IVoiceInformation : IInspectable
+ {
+ [propget] HRESULT DisplayName([out, retval] HSTRING* value);
+ [propget] HRESULT Id([out, retval] HSTRING* value);
+ [propget] HRESULT Language([out, retval] HSTRING* value);
+ [propget] HRESULT Description([out, retval] HSTRING* value);
+ [propget] HRESULT Gender([out, retval] VoiceGender* value);
+ }
+
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizerOptions),
+ uuid(a0e23871-cc3d-43c9-91b1-ee185324d83d)
+ ]
+ interface ISpeechSynthesizerOptions : IInspectable
+ {
+ [propget] HRESULT IncludeWordBoundaryMetadata([out, retval] boolean *value);
+ [propput] HRESULT IncludeWordBoundaryMetadata([in] boolean value);
+ [propget] HRESULT IncludeSentenceBoundaryMetadata([out, retval] boolean *value);
+ [propput] HRESULT IncludeSentenceBoundaryMetadata([in] boolean value);
+ }
+
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer),
+ uuid(7d526ecc-7533-4c3f-85be-888c2baeebdc)
+ ]
+ interface IInstalledVoicesStatic : IInspectable
+ {
+ [propget] HRESULT AllVoices([out, retval] Windows.Foundation.Collections.IVectorView<VoiceInformation*>** value);
+ [propget] HRESULT DefaultVoice([out, retval] VoiceInformation** value);
+ }
+
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ marshaling_behavior(agile)
+ ]
+ runtimeclass VoiceInformation
+ {
+ [default] interface Windows.Media.SpeechSynthesis.IVoiceInformation;
+ }
+
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ marshaling_behavior(agile)
+ ]
+ runtimeclass SpeechSynthesizerOptions
+ {
+ [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizerOptions;
+ }
+
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ marshaling_behavior(agile)
+ ]
+ runtimeclass SpeechSynthesisStream
+ {
+ [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesisStream;
+ interface Windows.Storage.Streams.IRandomAccessStreamWithContentType;
+ interface Windows.Storage.Streams.IContentTypeProvider;
+ interface Windows.Storage.Streams.IRandomAccessStream;
+ interface Windows.Storage.Streams.IOutputStream;
+ interface Windows.Foundation.IClosable;
+ interface Windows.Storage.Streams.IInputStream;
}
-}
-namespace Windows {
- namespace Media {
- namespace SpeechSynthesis {
- [contract(Windows.Foundation.UniversalApiContract, 1.0)]
- enum VoiceGender
- {
- Male = 0,
- Female = 1
- };
-
- [contract(Windows.Foundation.UniversalApiContract, 1.0)]
- [exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesisStream)]
- [uuid(83e46e93-244c-4622-ba0b-6229c4d0d65d)]
- interface ISpeechSynthesisStream : IInspectable
- requires
- Windows.Storage.Streams.IRandomAccessStreamWithContentType,
- Windows.Storage.Streams.IRandomAccessStream,
- Windows.Foundation.IClosable,
- Windows.Storage.Streams.IInputStream,
- Windows.Storage.Streams.IOutputStream,
- Windows.Storage.Streams.IContentTypeProvider
- {
- [propget] HRESULT Markers([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Media.IMediaMarker*>** value);
- }
-
- [
- contract(Windows.Foundation.UniversalApiContract, 1.0),
- exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer),
- uuid(ce9f7c76-97f4-4ced-ad68-d51c458e45c6)
- ]
- interface ISpeechSynthesizer : IInspectable
- {
- HRESULT SynthesizeTextToStreamAsync([in] HSTRING text, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*> **operation);
- HRESULT SynthesizeSsmlToStreamAsync([in] HSTRING Ssml, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*> **operation);
- [propput] HRESULT Voice([in] VoiceInformation *value);
- [propget] HRESULT Voice([out] [retval] VoiceInformation **value);
- }
-
- [
- contract(Windows.Foundation.UniversalApiContract, 1.0),
- exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer),
- uuid(a7c5ecb2-4339-4d6a-bbf8-c7a4f1544c2e)
- ]
- interface ISpeechSynthesizer2 : IInspectable
- {
- [propget] HRESULT Options([out, retval] SpeechSynthesizerOptions **value);
- }
-
- [
- contract(Windows.Foundation.UniversalApiContract, 1.0),
- exclusiveto(Windows.Media.SpeechSynthesis.VoiceInformation),
- uuid(b127d6a4-1291-4604-aa9c-83134083352c)
- ]
- interface IVoiceInformation : IInspectable
- {
- [propget] HRESULT DisplayName([out] [retval] HSTRING* value);
- [propget] HRESULT Id([out] [retval] HSTRING* value);
- [propget] HRESULT Language([out] [retval] HSTRING* value);
- [propget] HRESULT Description([out] [retval] HSTRING* value);
- [propget] HRESULT Gender([out] [retval] VoiceGender* value);
- }
-
- [
- contract(Windows.Foundation.UniversalApiContract, 1.0),
- exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizerOptions),
- uuid(a0e23871-cc3d-43c9-91b1-ee185324d83d)
- ]
- interface ISpeechSynthesizerOptions : IInspectable
- {
- [propget] HRESULT IncludeWordBoundaryMetadata([out, retval] boolean *value);
- [propput] HRESULT IncludeWordBoundaryMetadata([in] boolean value);
- [propget] HRESULT IncludeSentenceBoundaryMetadata([out, retval] boolean *value);
- [propput] HRESULT IncludeSentenceBoundaryMetadata([in] boolean value);
- }
-
- [
- contract(Windows.Foundation.UniversalApiContract, 1.0),
- exclusiveto(Windows.Media.SpeechSynthesis.SpeechSynthesizer),
- uuid(7d526ecc-7533-4c3f-85be-888c2baeebdc)
- ]
- interface IInstalledVoicesStatic : IInspectable
- {
- [propget] HRESULT AllVoices([out, retval] Windows.Foundation.Collections.IVectorView<VoiceInformation*>** value);
- [propget] HRESULT DefaultVoice([out, retval] VoiceInformation** value);
- }
-
- [
- contract(Windows.Foundation.UniversalApiContract, 1.0),
- marshaling_behavior(agile)
- ]
- runtimeclass VoiceInformation
- {
- [default] interface Windows.Media.SpeechSynthesis.IVoiceInformation;
- }
-
- [
- contract(Windows.Foundation.UniversalApiContract, 1.0),
- marshaling_behavior(agile)
- ]
- runtimeclass SpeechSynthesizerOptions
- {
- [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizerOptions;
- }
-
- [contract(Windows.Foundation.UniversalApiContract, 1.0)]
- [marshaling_behavior(agile)]
- runtimeclass SpeechSynthesisStream
- {
- [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesisStream;
- interface Windows.Storage.Streams.IRandomAccessStreamWithContentType;
- interface Windows.Storage.Streams.IContentTypeProvider;
- interface Windows.Storage.Streams.IRandomAccessStream;
- interface Windows.Storage.Streams.IOutputStream;
- interface Windows.Foundation.IClosable;
- interface Windows.Storage.Streams.IInputStream;
- }
-
- [
- activatable(Windows.Foundation.UniversalApiContract, 1.0),
- contract(Windows.Foundation.UniversalApiContract, 1.0),
- marshaling_behavior(agile),
- static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic, Windows.Foundation.UniversalApiContract, 1.0),
- static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic2, Windows.Foundation.UniversalApiContract, 5.0)
- ]
- runtimeclass SpeechSynthesizer
- {
- [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizer;
- interface Windows.Foundation.IClosable;
- [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizer2;
- }
- }
+ [
+ activatable(Windows.Foundation.UniversalApiContract, 1.0),
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ marshaling_behavior(agile),
+ static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic, Windows.Foundation.UniversalApiContract, 1.0),
+ static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic2, Windows.Foundation.UniversalApiContract, 5.0)
+ ]
+ runtimeclass SpeechSynthesizer
+ {
+ [default] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizer;
+ interface Windows.Foundation.IClosable;
+ [contract(Windows.Foundation.UniversalApiContract, 4.0)] interface Windows.Media.SpeechSynthesis.ISpeechSynthesizer2;
}
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/217
June 13, 2022
[PATCH v4 2/9] include/windows.media.idl: Move IMediaMarker collections from speechsynthesis.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
include/windows.media.idl | 9 +++++++++
include/windows.media.speechsynthesis.idl | 9 +--------
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/include/windows.media.idl b/include/windows.media.idl
index 9847b4caabd..2b1cd3cceaf 100644
--- a/include/windows.media.idl
+++ b/include/windows.media.idl
@@ -26,6 +26,15 @@ import "windows.foundation.idl";
namespace Windows.Media
{
interface IMediaControl;
+ interface IMediaMarker;
+
+ declare
+ {
+ interface Windows.Foundation.Collections.IIterable<Windows.Media.IMediaMarker*>;
+ interface Windows.Foundation.Collections.IIterator<Windows.Media.IMediaMarker*>;
+ interface Windows.Foundation.Collections.IVectorView<Windows.Media.IMediaMarker*>;
+ interface Windows.Foundation.Collections.IVector<Windows.Media.IMediaMarker*>;
+ }
[
contract(Windows.Foundation.UniversalApiContract, 1.0),
diff --git a/include/windows.media.speechsynthesis.idl b/include/windows.media.speechsynthesis.idl
index b2c86f37137..46e61ee31b4 100644
--- a/include/windows.media.speechsynthesis.idl
+++ b/include/windows.media.speechsynthesis.idl
@@ -54,20 +54,13 @@ namespace Windows {
}
}
-namespace Windows {
- namespace Media {
- interface IMediaMarker;
- }
-}
-
namespace Windows {
namespace Media {
namespace SpeechSynthesis {
declare {
- interface Windows.Foundation.Collections.IIterator<Windows.Media.SpeechSynthesis.VoiceInformation*>;
interface Windows.Foundation.Collections.IIterable<Windows.Media.SpeechSynthesis.VoiceInformation*>;
+ interface Windows.Foundation.Collections.IIterator<Windows.Media.SpeechSynthesis.VoiceInformation*>;
interface Windows.Foundation.Collections.IVectorView<Windows.Media.SpeechSynthesis.VoiceInformation*>;
- interface Windows.Foundation.Collections.IVectorView<Windows.Media.IMediaMarker*>;
interface Windows.Foundation.IAsyncOperation<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*>;
interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Media.SpeechSynthesis.SpeechSynthesisStream*>;
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/217
June 13, 2022
[PATCH v4 1/9] include/windows.media.idl: Get rid of nested namespaces.
by Bernhard Kölbl
From: Bernhard Kölbl <besentv(a)gmail.com>
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
---
include/windows.media.idl | 28 +++++++++++++---------------
1 file changed, 13 insertions(+), 15 deletions(-)
diff --git a/include/windows.media.idl b/include/windows.media.idl
index fe81c768361..9847b4caabd 100644
--- a/include/windows.media.idl
+++ b/include/windows.media.idl
@@ -23,21 +23,19 @@
import "inspectable.idl";
import "windows.foundation.idl";
-namespace Windows {
- namespace Media {
- interface IMediaControl;
- }
-}
+namespace Windows.Media
+{
+ interface IMediaControl;
-namespace Windows {
- namespace Media {
- [contract(Windows.Foundation.UniversalApiContract, 1.0)]
- [uuid(1803def8-dca5-4b6f-9c20-e3d3c0643625)]
- interface IMediaMarker : IInspectable
- {
- [propget] HRESULT Time([out] [retval] Windows.Foundation.TimeSpan* value);
- [propget] HRESULT MediaMarkerType([out] [retval] HSTRING* value);
- [propget] HRESULT Text([out] [retval] HSTRING* value);
- }
+ [
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
+ uuid(1803def8-dca5-4b6f-9c20-e3d3c0643625)
+ ]
+ interface IMediaMarker : IInspectable
+ {
+ [propget] HRESULT Time([out, retval] Windows.Foundation.TimeSpan* value);
+ [propget] HRESULT MediaMarkerType([out, retval] HSTRING* value);
+ [propget] HRESULT Text([out, retval] HSTRING* value);
}
+
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/217
June 13, 2022
[PATCH v4 0/9] MR217: windows.media.speech: ISpeechSynthesisStream stub implementation.
by Bernhard Kölbl
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
--
v4: windows.media.speech: Add stub ISpeechSynthesisStream iface.
windows.media.speech: Return IAsyncOperation from synthesizer_SynthesizeSsmlToStreamAsync.
windows.media.speech: Return IAsyncOperation from synthesizer_SynthesizeTextToStreamAsync.
windows.media.speech/tests: Add basic tests for ssml/text to stream functions.
windows.media.speech/tests: Handle a possible race condition.
windows.media.speech/tests: Remove a useless thread id trace.
include/windows.media.speechsynthesis.idl: Update file to newer formatting.
include/windows.media.idl: Move IMediaMarker collections from speechsynthesis.
include/windows.media.idl: Get rid of nested namespaces.
https://gitlab.winehq.org/wine/wine/-/merge_requests/217
June 13, 2022
Re: [PATCH 5/5] winegstreamer: Implement ColorConvertDMO transform.
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=116874
Your paranoid android.
=== debian11 (32 bit report) ===
Report validation errors:
mf:mf prints too much data (39790 bytes)
=== debian11 (32 bit WoW report) ===
Report validation errors:
mf:mf prints too much data (39850 bytes)
June 13, 2022
Re: [PATCH 4/5] winegstreamer: Register stub ColorConvertDMO transform.
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=116873
Your paranoid android.
=== debian11 (32 bit report) ===
Report validation errors:
mf:mf prints too much data (39703 bytes)
=== debian11 (32 bit WoW report) ===
Report validation errors:
mf:mf prints too much data (39818 bytes)
June 13, 2022