[PATCH 1/3] kernelbase/tests: Fix the Sleep() test for non-default timer resolutions.
Francois Gouget
fgouget at codeweavers.com
Thu Jul 29 08:05:42 CDT 2021
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51533
Signed-off-by: Francois Gouget <fgouget at 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)
--
2.20.1
More information about the wine-devel
mailing list