X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Fserve-event.lisp;h=8fd5321f8e5ea3f9a658b8a0d820c1633bd8d9d1;hb=7f1e94ae961a198e00daf281eb1dc858e5b2dcc7;hp=ca055edf437fb56635fe98eb300452ef9dea1b4d;hpb=68f7dfa0a165c12200cba27368eb1b12db44be10;p=sbcl.git diff --git a/src/code/serve-event.lisp b/src/code/serve-event.lisp index ca055ed..8fd5321 100644 --- a/src/code/serve-event.lisp +++ b/src/code/serve-event.lisp @@ -206,10 +206,14 @@ waiting." (+ (* 1000 to-sec) (truncate to-usec 1000)) -1) when (or #!+win32 (eq direction :output) + #!+win32 (sb!win32:handle-listen + (sb!win32:get-osfhandle fd)) + #!-win32 (sb!unix:unix-simple-poll fd direction to-msec)) do (return-from wait-until-fd-usable t) else - do (when to-sec (maybe-update-timeout)))))))) + do (when to-sec (maybe-update-timeout)) + #!+win32 (sb!thread:thread-yield))))))) ;;; Wait for up to timeout seconds for an event to happen. Make sure all ;;; pending events are processed before returning.