From: "Erich E. Hoover" Subject: [PATCH 6/6] quartz: Fix race condition between EndOfStream and Pause. Message-Id: Date: Wed, 30 Jul 2014 19:48:48 -0600 This patch fixes a different deadlock, in this case the filter enters a state where the media position is not updated and, therefore, never leaves the loop. This happens whenever the EndOfStream call is being processed and a Pause call occurs in another thread while the loop is not within the lock. From 935e6a3b0fa94cceca29edd93d9fd59fbe733d54 Mon Sep 17 00:00:00 2001 From: "Erich E. Hoover" Date: Fri, 18 Jul 2014 10:57:13 -0600 Subject: quartz: Fix race condition between EndOfStream and Pause. --- dlls/quartz/dsoundrender.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c index 8c67374..2914b15 100644 --- a/dlls/quartz/dsoundrender.c +++ b/dlls/quartz/dsoundrender.c @@ -243,7 +243,7 @@ end: static HRESULT DSoundRender_HandleEndOfStream(DSoundRenderImpl *This) { - while (1) + while (This->renderer.filter.state == State_Running) { DWORD pos1, pos2; DSoundRender_UpdatePositions(This, &pos1, &pos2); -- 1.7.9.5