aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-02-06 16:26:59 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-02-06 17:29:29 -0600
commitd5c041befbb60e7bfce14af2eaf1e8c686524209 (patch)
tree2f3ae57f64c807604de7605391c94cbbaac88ffe
parentc5b9c47a26ca4e9d4eea63b7219b4d34938a5f1a (diff)
downloadwix-d5c041befbb60e7bfce14af2eaf1e8c686524209.tar.gz
wix-d5c041befbb60e7bfce14af2eaf1e8c686524209.tar.bz2
wix-d5c041befbb60e7bfce14af2eaf1e8c686524209.zip
Add ::Sleep(0) in engine loop to unblock PostThreadMessage
-rw-r--r--src/engine/engine.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp
index bc27cb14..98c98661 100644
--- a/src/engine/engine.cpp
+++ b/src/engine/engine.cpp
@@ -776,6 +776,12 @@ static HRESULT RunApplication(
776 } 776 }
777 else 777 else
778 { 778 {
779 // When the BA makes a request from its own thread, it's common for the PostThreadMessage in externalengine.cpp
780 // to block until this thread waits on something. It's also common for Detect and Plan to never wait on something.
781 // In the extreme case, the engine could be elevating in Apply before the Detect call returned to the BA.
782 // This helps to avoid that situation, which could be blocking a UI thread.
783 ::Sleep(0);
784
779 ProcessMessage(pEngineState, &msg); 785 ProcessMessage(pEngineState, &msg);
780 } 786 }
781 } 787 }