Jinoh Kang (@iamahuman) commented about dlls/mfmediaengine/tests/mfmediaengine.c:
+ ID3D11DeviceContext_ClearState(d3d11_dev_ctx); + ID3D11DeviceContext_RSSetState(d3d11_dev_ctx, d3d11_rs); + ID3D11DeviceContext_OMSetRenderTargets(d3d11_dev_ctx, 1, &d3d11_rtv, NULL); + ID3D11DeviceContext_VSSetShader(d3d11_dev_ctx, d3d11_vs, NULL, 0); + ID3D11DeviceContext_PSSetShader(d3d11_dev_ctx, d3d11_ps, NULL, 0); + ID3D11DeviceContext_PSSetShaderResources(d3d11_dev_ctx, 0, 1, &d3d11_srv); + ID3D11DeviceContext_IASetPrimitiveTopology(d3d11_dev_ctx, D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); + ID3D11DeviceContext_RSSetViewports(d3d11_dev_ctx, 1, &viewport); + ID3D11DeviceContext_Draw(d3d11_dev_ctx, 3, 0); + + ID3D11DeviceContext_Release(d3d11_dev_ctx); + + hr = IDXGISwapChain_Present(swapchain, 1, 0); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + Sleep(16); /* Simulate a framerate of ~60FPS */
wait_for_events(16); /* Simulate a framerate of ~60FPS */
where ```c static void wait_for_events(DWORD timeout) { DWORD start = GetTickCount(), elapsed; BOOL has_msg; MSG msg; while (1) { if ((has_msg = PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE))) { TranslateMessage(&msg); DispatchMessageW(&msg); } elapsed = GetTickCount() - start; if (elapsed >= timeout) break; if (!has_msg && MsgWaitForMultipleObjects(0, NULL, FALSE, timeout - elapsed, QS_ALLINPUT) != WAIT_OBJECT_0) break; } } ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/1046#note_10875