Since commit 182feddd4b02e83f3c69863bc2e6e63945eb2df1 DwmGetCompositionTimingInfo() returns success. Currently wine-gecko fails to display anything if prefix version is Win10. That is due to zero qpcVBlank field in DwmGetCompositionTimingInfo() output which is currently missing. Before the referenced commit it was handling the failure (see gfx/thebes/gfxWindowsPlatform.cpp:VBlankLoop() (line 2840 in the current wine-gecko snapshot from https://sourceforge.net/p/wine/wine-gecko/ci/master/tree/).
From: Paul Gofman pgofman@codeweavers.com
--- dlls/dwmapi/dwmapi_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/dlls/dwmapi/dwmapi_main.c b/dlls/dwmapi/dwmapi_main.c index 56730f79cac..9ec03185f36 100644 --- a/dlls/dwmapi/dwmapi_main.c +++ b/dlls/dwmapi/dwmapi_main.c @@ -235,7 +235,7 @@ static int get_display_frequency(void) */ HRESULT WINAPI DwmGetCompositionTimingInfo(HWND hwnd, DWM_TIMING_INFO *info) { - LARGE_INTEGER performance_frequency; + LARGE_INTEGER performance_frequency, qpc; static int i, display_frequency;
if (!info) @@ -258,6 +258,9 @@ HRESULT WINAPI DwmGetCompositionTimingInfo(HWND hwnd, DWM_TIMING_INFO *info) QueryPerformanceFrequency(&performance_frequency); info->qpcRefreshPeriod = performance_frequency.QuadPart / display_frequency;
+ QueryPerformanceCounter(&qpc); + info->qpcVBlank = (qpc.QuadPart / info->qpcRefreshPeriod) * info->qpcRefreshPeriod; + return S_OK; }