Bernhard Kölbl (@besentv) commented about dlls/windows.media.speech/synthesizer.c:
- FIXME("iface %p, value %p stub.\n", iface, value);
- return E_NOTIMPL;
- struct synthesizer *impl = impl_from_ISpeechSynthesizer2(iface);
- WARN("iface %p, value %p semi-stub.\n", iface, value);
- if (!impl->options)
- {
struct synthesizer_options *options;
HRESULT hr = synthesizer_options_allocate(&options);
if (FAILED(hr)) return hr;
if (InterlockedCompareExchangePointer((void **)&impl->options, options, NULL) != NULL)
/* another thread beat us */
ISpeechSynthesizerOptions_AddRef(&options->ISpeechSynthesizerOptions_iface);
- }
- ISpeechSynthesizerOptions_AddRef(*value = &impl->options->ISpeechSynthesizerOptions_iface);
I honestly think this function is just too complicated, can we just put the Options creation im the Synthesizer creation?