GetResults on IInspectable async operation is supposed to clear the async reference too but we don't do that yet. Releasing the async first makes the refcount non-deterministic as the task may hold onto the results for a bit longer, this reverts this part from the commit below and flags the refcount test as todo_wine.
Fixes: 82771d3343bffca73873de4029149de0197d88c9
From: Rémi Bernon rbernon@codeweavers.com
GetResults on IInspectable async operation is supposed to clear the async reference too but we don't do that yet. Releasing the async first makes the refcount non-deterministic as the task may hold onto the results for a bit longer, this reverts this part from the commit below and flags the refcount test as todo_wine.
Fixes: 82771d3343bffca73873de4029149de0197d88c9 --- dlls/windows.media.speech/tests/speech.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/dlls/windows.media.speech/tests/speech.c b/dlls/windows.media.speech/tests/speech.c index 7da2457bf38..422df544d59 100644 --- a/dlls/windows.media.speech/tests/speech.c +++ b/dlls/windows.media.speech/tests/speech.c @@ -949,8 +949,6 @@ static void test_SpeechSynthesizer(void) todo_wine ok(tmp == NULL, "Got %p.\n", tmp); if (tmp && tmp != (void *)0xdeadbeef) ISpeechSynthesisStream_Release(tmp);
- IAsyncOperation_SpeechSynthesisStream_Release(operation_ss_stream); - hr = ISpeechSynthesisStream_get_Markers(ss_stream, &media_markers); ok(hr == S_OK, "ISpeechSynthesisStream_get_Markers failed, hr %#lx\n", hr); check_interface(media_markers, &IID_IVectorView_IMediaMarker, TRUE); @@ -961,7 +959,9 @@ static void test_SpeechSynthesizer(void) ok(ref == 0, "Got unexpected ref %lu.\n", ref);
ref = ISpeechSynthesisStream_Release(ss_stream); - ok(ref == 0, "Got unexpected ref %lu.\n", ref); + 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); @@ -981,10 +981,11 @@ static void test_SpeechSynthesizer(void) ok(hr == S_OK, "IAsyncOperation_SpeechSynthesisStream_GetResults failed, hr %#lx\n", hr); check_interface(ss_stream, &IID_ISpeechSynthesisStream, TRUE); check_interface(ss_stream, &IID_IAgileObject, TRUE); - IAsyncOperation_SpeechSynthesisStream_Release(operation_ss_stream);
ref = ISpeechSynthesisStream_Release(ss_stream); - ok(ref == 0, "Got unexpected ref %lu.\n", ref); + todo_wine 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);