home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!ames!data.nas.nasa.gov!taligent!apple!cambridge.apple.com!bill@cambridge.apple.com
- From: bill@cambridge.apple.com (Bill St. Clair)
- Newsgroups: comp.lang.lisp.mcl
- Subject: Re: TIME, MCL and LOOPS (fwd)
- Message-ID: <9208272110.AA16814@cambridge.apple.com>
- Date: 27 Aug 92 22:16:53 GMT
- Sender: info-mcl-request@cambridge.apple.com
- Lines: 47
- Approved: comp.lang.lisp.mcl@Cambridge.Apple.C0M
- Full-Name: Bill St. Clair
- Original-To: bdrobert@MEDIA-LAB.MEDIA.MIT.EDU
- Original-Cc: info-mcl
-
- >Forwarded message:
- >
- >>From bdrobert@MEDIA-LAB.MEDIA.MIT.EDU Thu Aug 27 11:25:09 1992
- >Message-Id: <9208271526.AA03549@media-lab.mit.edu>
- >To: info-mcl-request@cambridge.apple.com
- >Subject: TIME, MCL and LOOPS
- >Date: Thu, 27 Aug 92 11:26:14 -0400
- >From: bdrobert@MEDIA-LAB.MEDIA.MIT.EDU
- >X-Mts: smtp
-
- First I must slap your hand. Please send questions to info-mcl, not
- info-mcl-request. info-mcl-request is for requests to be added or
- removed from the info-mcl mailing list.
-
- >
- >Any suggestions on an easy way to have a function in your LISP program
- >called, every X number of ticks or seconds, without doing a loop.
- >I would like the program to be operating in other functions, and every
- >so often, it would jump into a function, do stuff, and return to whatever
- >task it was doing before.
-
- The documented way of doing this is with *eventhook*. The undocumented
- way is with ccl::%install-periodic-task. The former is documented in the
- MCL 2.0 reference. The latter is used by the example file "thermometer.lisp":
-
- ccl::%install-periodic-task name function interval &optional flags private-data
- Install or overwrite a periodic task with the given NAME (compared
- with EQ). Will cause FUNCTION to be funcalled with no arguments once
- every INTERVAL ticks (1/60 second). Flags defaults to 0 meaning call
- your function no matter what the context. If your function does drawing
- or should not be called while event processing is being done, you
- should use one or both (logior'd together) of the following values
- for FLAGS (both are defined in "ccl:library;lispequ.lisp" so you'll
- need to (require "LISPEQU") to use them):
-
- $ptask_draw-flag Your periodic task does drawing
- $ptask_event-dispatch-flag Your periodic task should not be called
- during EVENT-DISPATCH.
-
- private-data is stored in the mac heap part of theperiodic task record,
- but this will not be useful unless you are writing an interrupt routine
- (in LAP or with the foreign function interface) that needs to interact
- with a periodic task (I'll give details to anyone who thinks they
- need to do this).
-
- ccl::%remove-periodic-task name
- Remove the periodic task with the given name.
-