R��mi Bernon (@rbernon) commented about dlls/windows.media.speech/recognizer.c:
- FIXME("iface %p, action %p stub!\n", iface, action); - return async_action_create(NULL, start_callback, action); + struct session *impl = impl_from_ISpeechContinuousRecognitionSession(iface); + HRESULT hr = S_OK; + + TRACE("iface %p, action %p stub!\n", iface, action); + + *action = NULL; + + EnterCriticalSection(&impl->cs); + if (!impl->session_thread && !impl->session_running && !impl->session_paused) + { + hr = async_action_create((IInspectable *)iface, start_callback, action); + } + else hr = E_INVALIDOPERATION; + LeaveCriticalSection(&impl->cs); That would be instead:
EnterCriticalSection(&impl->cs);
if (!(running = impl->session_running))
impl->session_running = TRUE;
LeaveCriticalSection(&impl->cs);
if (running)
hr = E_INVALIDOPERATION;
else
hr = async_action_create((IInspectable *)iface, start_callback, action);
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/729#note_7752