freenode/#clim - IRC Chatlog
Search
11:34:12
loke
jackdaniel: To answer your question about the function. I would expect that function to wait for the delivery of an event to the given sheet, with timeout being NIL: wait forever, or a number: The number of seconds to wait until returning NIL.
11:35:24
loke
The question I would ask though, is what would happen if an event arrives when the function in question is not being invoked. I'd expect it to be queued somehow.
11:39:42
loke
I'd expect that to be a function that is called before blocking. I.e. if there are events on the queue, return one immediately. If not, then call wait function and then block until an event arrived.
11:44:39
jackdaniel
here's what I plan to make it do: when wait-function = NIL, then it is the same as event-queue-listen with timeout (that is returns T when event is available, or nil when timeout is reached)
11:45:09
loke
I don't see much in the way of hints, other than the fact that every implement ignores it. :-)
11:45:12
jackdaniel
when wait-function is a predicate event-listen-or-wait returns T if wait-function returns true or when timeout is reached
11:47:07
jackdaniel
but may be more frequent (i.e some port input which is not coerced to clim events)
11:48:49
jackdaniel
not really. it could be that port configures something upon certain port-specific events (which are not clim events)
11:49:37
jackdaniel
so, for instance, request-selection calls (event-listen-or-wait sheet :wait-function (lambda () (request-returned!)) :timeout 0.5)
11:49:53
jackdaniel
that ensures that there is event processing progress even on single-processing variant
11:51:28
jackdaniel
that is forbiden. when we have multiprocessing clim, port has a thread which calls process-next-event in a loop
11:52:11
jackdaniel
when clim is single-processing only event-* functions are allowed to call this method (I plan to make it that way, right now also some stream functions may call it when single processing)
11:54:27
jackdaniel
because in principle process-next-event is either only called in a loop in port thread, or it is called always from event-processing-loop when mcclim is single-threaded
12:26:35
jdz
Older multithreading implementations could have a list of "run reasons" on the thread. Maybe the wait function was supposed to be one that could be used there?
12:28:03
jackdaniel
from studying clim-tos source code of process-next-event (including acl-port implementation) wait-function is used as I've described