Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51533 Signed-off-by: Francois Gouget fgouget@codeweavers.com --- This should fix the failures on cw-rx460 when the Radeon driver sets the timer resolution to 2 ms. --- dlls/kernelbase/tests/sync.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/dlls/kernelbase/tests/sync.c b/dlls/kernelbase/tests/sync.c index 50ce62602b0..54c2dfe99f5 100644 --- a/dlls/kernelbase/tests/sync.c +++ b/dlls/kernelbase/tests/sync.c @@ -19,10 +19,14 @@ */
#include <stdarg.h> +#include <stdlib.h> + +#include <ntstatus.h> +#define WIN32_NO_STATUS #include <windef.h> #include <winbase.h> -#include <stdlib.h> #include <winerror.h> +#include <winternl.h>
#include "wine/test.h"
@@ -176,7 +180,9 @@ static void test_Sleep(void) { LARGE_INTEGER frequency; LARGE_INTEGER t1, t2; - double elapsed_time; + double elapsed_time, expected_time; + ULONG dummy, cur; + NTSTATUS status; BOOL ret; int i;
@@ -193,8 +199,15 @@ static void test_Sleep(void) ret = QueryPerformanceCounter(&t2); ok(ret, "QueryPerformanceCounter failed\n");
+ cur = 156250; + status = NtQueryTimerResolution(&dummy, &dummy, &cur); + todo_wine ok(status == STATUS_SUCCESS, "NtQueryTimerResolution() failed (%x)\n", status); + expected_time = 100.0 * cur / 10000000.0; + elapsed_time = (t2.QuadPart - t1.QuadPart) / (double)frequency.QuadPart; - todo_wine ok(elapsed_time >= 1.5 && elapsed_time <= 4.0, "got %f\n", elapsed_time); + todo_wine ok(0.9 * expected_time <= elapsed_time && + elapsed_time <= 1.5 * expected_time, + "got %f, expected about %f\n", elapsed_time, expected_time); }
START_TEST(sync)