From 275d93c9ab0f533fa70d698726afc8adaaefb664 Mon Sep 17 00:00:00 2001
From: Adeniyi Mayokun <adeniyimayokun17@gmail.com>
Date: Wed, 14 Mar 2018 05:35:20 +0100
Subject: [PATCH] wined3d use SwitchToThread waits in wined3d_pause

---
������dlls/wined3d/cs.c | 11 +++++++----
������1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 480717c06a..ca8b40c0af 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -494,7 +494,7 @@ void wined3d_cs_emit_present(struct wined3d_cs *cs, struct wined3d_swapchain *sw
������������������������������ * IDXGIDevice1 allows tuning this. */
������������������������ while (pending > 1)
������������������������ {
-������������������������������������������ wined3d_pause();
+������������������������������������������ wined3d_pause(i++);
������������������������������������������������ pending = InterlockedCompareExchange(&cs->pending_presents, 0, 0);
������������������������ }
������}
@@ -2589,10 +2589,13 @@ static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, enu
������������������������ return wined3d_cs_queue_require_space(&cs->queue[queue_id], size, cs);
������}
������
-static void wined3d_cs_mt_finish(struct wined3d_cs *cs, enum wined3d_cs_queue_id queue_id)
+static void wined3d_cs_mt_finish(struct wined3d_cs)
������{
-������������������ if (cs->thread_id == GetCurrentThreadId())
-������������������������������������������ return wined3d_cs_st_finish(cs, queue_id);
+
+������������������ int i = 0;
+
+������������ ������������������ ������if (cs->thread_id == GetCurrentThreadId())
+������������������������������������ ������������������ ������������������ ������return wined3d_cs_st_finish(cs);
������
������������������������ while (cs->queue[queue_id].head != *(volatile LONG *)&cs->queue[queue_id].tail)
������������������������������������������������ wined3d_pause();
--
2.14.1