[Openmcl-devel] Clozure CL 1.2-rc1 available

Gary Byers gb at clozure.com
Mon Apr 21 13:03:41 PDT 2008

I think that most of the assertions are trying to detect cases where
an editor buffer or the related Cocoa data structures are getting
modified outside of the event thread; that shouldn't happen anymore
(at least not casually ...).

The case that I could reproduce involved the "tiny" window becoming
active (in some thread other than the event thread) and a listener
window becoming inactive on that thread.  Part of the deactivation
involved turning off insertion-point drawing in the listener, and
we override the #/drawInsertionPointInRect:color:turnedOn: method.

I think that it's correct for that method to be aware of the
possibility that it's not running on the event thread, but I don't
think that it's correct for it to treat that case as being an
error: it should probably just not do anything but call the
next method.

One particularly bad consequence of dying in that method is that
the system seems to lose the ability to draw the insertion point
after we've done so.

Anyway, I don't think that we're really (intentionally) trying to keep
GUI things from happening on secondary threads so much as we're not
recognizing that they sometimes can legitimately happen on secondary

On Mon, 21 Apr 2008, Raffael Cavallaro wrote:

> On Apr 20, 2008, at 10:55 AM, Gary Byers wrote:
>> As threatened/promised for ... well, for a long time now, Clozure CL 
>> 1.2-rc1
>> tarballs are now available
> BTW, this update breaks some examples (as well as other existing code) 
> because it now requires that one use 
> performSelectorOnMainThread:withObject:waitUntilDone: as one is really 
> supposed to. For example, ccl/examples/cocoa/tiny.lisp fails thus:
> ? (ccl::tiny-setup)
>> Error: Failed assertion: (EQ *CURRENT-PROCESS* CCL::*INITIAL-PROCESS*)
>> While executing: #<Anonymous Function #x3000410C257F>, in process 
>> Listener(5).
>> Type :POP to abort, :R for a list of available restarts.
>> Type :? for other options.
> 1 >
> as does any other code that frobs a gui element in some thread other than the 
> main thread.
> regards,
> Ralph
> Raffael Cavallaro, Ph.D.
> raffaelcavallaro at mac.com

More information about the Openmcl-devel mailing list