Matteo Bruni (@Mystral) commented about dlls/d3dx10_43/d3dx10_43_main.c:
{
- FIXME("iface %p stub!\n", iface);
- return E_NOTIMPL;
- struct thread_pump *thread_pump = impl_from_ID3DX10ThreadPump(iface);
- HRESULT hr;
- LONG v;
- TRACE("iface %p.\n", iface);
- while(1)
- {
if (FAILED((hr = ID3DX10ThreadPump_ProcessDeviceWorkItems(iface, UINT_MAX))))
return hr;
if (!(v = thread_pump->processing_count))
break;
I think there is a theoretical race here with a work item that's being added at the same time. Assuming that's a legitimate use case.