From: Shaun Ren sren@codeweavers.com
--- dlls/sapi/tests/tts.c | 9 ++++++++- dlls/sapi/tts.c | 17 +++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/dlls/sapi/tests/tts.c b/dlls/sapi/tests/tts.c index 4d565b35294..a5c950aa80b 100644 --- a/dlls/sapi/tests/tts.c +++ b/dlls/sapi/tests/tts.c @@ -434,7 +434,7 @@ static void test_spvoice(void) DWORD start, duration; ISpeechVoice *speech_voice; ISpeechObjectTokens *speech_tokens; - LONG count; + LONG count, volume_long; BSTR req = NULL, opt = NULL; UINT info_count; ITypeInfo *typeinfo; @@ -717,6 +717,13 @@ static void test_spvoice(void) ok(count == 1, "got %ld.\n", count); ISpeechObjectTokens_Release(speech_tokens);
+ volume_long = 0xdeadbeef; + hr = ISpeechVoice_put_Volume(speech_voice, 80); + ok(hr == S_OK, "got %#lx.\n", hr); + hr = ISpeechVoice_get_Volume(speech_voice, &volume_long); + ok(hr == S_OK, "got %#lx.\n", hr); + ok(volume_long == 80, "got %ld.\n", volume_long); + hr = ISpeechVoice_Speak(speech_voice, NULL, SVSFPurgeBeforeSpeak, NULL); ok(hr == S_OK, "got %#lx.\n", hr);
diff --git a/dlls/sapi/tts.c b/dlls/sapi/tts.c index d22ffd7a0da..325edaf04fb 100644 --- a/dlls/sapi/tts.c +++ b/dlls/sapi/tts.c @@ -291,16 +291,25 @@ static HRESULT WINAPI speech_voice_put_Rate(ISpeechVoice *iface, LONG rate)
static HRESULT WINAPI speech_voice_get_Volume(ISpeechVoice *iface, LONG *volume) { - FIXME("(%p, %p): stub.\n", iface, volume); + struct speech_voice *This = impl_from_ISpeechVoice(iface); + USHORT res = 0; + HRESULT hr;
- return E_NOTIMPL; + TRACE("(%p, %p).\n", iface, volume); + + if (!volume) return E_POINTER; + hr = ISpVoice_GetVolume(&This->ISpVoice_iface, &res); + *volume = res; + return hr; }
static HRESULT WINAPI speech_voice_put_Volume(ISpeechVoice *iface, LONG volume) { - FIXME("(%p, %ld): stub.\n", iface, volume); + struct speech_voice *This = impl_from_ISpeechVoice(iface);
- return E_NOTIMPL; + TRACE("(%p, %ld).\n", iface, volume); + + return ISpVoice_SetVolume(&This->ISpVoice_iface, (USHORT)volume); }
static HRESULT WINAPI speech_voice_put_AllowAudioOutputFormatChangesOnNextSet(ISpeechVoice *iface,