branch: externals/phpinspect
commit 0e00d7e5a6952656d3109484b9deee00d9753ae6
Author: Hugo Thunnissen <de...@hugot.nl>
Commit: Hugo Thunnissen <de...@hugot.nl>

    Wakeup worker when stop is requested and worker thread is paused
    
    This makes the worker thread stop execution immediately after the stop is
    requested in stead of after the next wakeup.
---
 phpinspect-worker.el | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/phpinspect-worker.el b/phpinspect-worker.el
index e57776e3a6..dae9edcb8e 100644
--- a/phpinspect-worker.el
+++ b/phpinspect-worker.el
@@ -197,11 +197,14 @@ on the worker independent of dynamic variables during 
testing.")
 (cl-defgeneric phpinspect-worker-make-wakeup-function (worker)
   "Create a function that can be used to wake up WORKER's thread.")
 
+(cl-defmethod phpinspect-worker-wakeup ((worker phpinspect-worker))
+  (when (eq main-thread (thread--blocker (phpinspect-worker-thread worker)))
+    (thread-signal (phpinspect-worker-thread worker)
+                   'phpinspect-wakeup-thread nil)))
+
 (cl-defmethod phpinspect-worker-make-wakeup-function ((worker 
phpinspect-worker))
   (lambda ()
-    (when (eq main-thread (thread--blocker (phpinspect-worker-thread worker)))
-      (thread-signal (phpinspect-worker-thread worker)
-                     'phpinspect-wakeup-thread nil))))
+    (phpinspect-worker-wakeup worker)))
 
 (cl-defmethod phpinspect-worker-make-wakeup-function ((worker 
phpinspect-dynamic-worker))
   (phpinspect-worker-make-wakeup-function (phpinspect-resolve-dynamic-worker 
worker)))
@@ -303,7 +306,8 @@ CONTINUE must be a condition-variable"
   "Stop the worker")
 
 (cl-defmethod phpinspect-worker-stop ((worker phpinspect-worker))
-  (setf (phpinspect-worker-continue-running worker) nil))
+  (setf (phpinspect-worker-continue-running worker) nil)
+  (phpinspect-worker-wakeup worker))
 
 (cl-defmethod phpinspect-worker-stop ((worker phpinspect-dynamic-worker))
   (phpinspect-worker-stop (phpinspect-resolve-dynamic-worker worker)))

Reply via email to