This VM contains a major functional change to how UI events are
processed.
3.8.12b1
When the VM was converted to carbon events I decided to place the
interpreter() thread on a pthread. However over the years it became
apparent this was an issue because many UI calls needed to run on the
main UI thread, versus a sub pthread. To solve this I added the
getUIToLock() call which locked the UI, actually it would setup a
custom UI event and block until the UI thread did the callback. This
worked well until the Sophie team started to experiment with
Quicktime via FFI and we discovered that quicktime FFI calls needed
to be on the main UI thread to avoid a crash. Thus in early 2006 we
altered the FFI plugin so that it would call getUIToLock when it
makes the FFI function call (the 3.8.11 series). This worked well
until the Croquet folks complained that this caused Croquet to crash
in glEnable. Further investigation showed that mixing Open/GL calls
between pthreads caused a serious issue. Therefore I altered the VM
to run under the main UI thread and poll for events. Polling is done
before each callback looking for UI events and in the flush screen
logic which is invoked about every 1/60 of a second to ensure pending
screen updates are sent to the screen.
Needless to say people should confirm their applications work as
expected, the UI performance isn't greatly affected and overall
performance is roughly the same.
I'll note one nasty issue is that if you pull down a native mac menu
the VM stops running, we'll see what we can do about that, but it may
take a while.
However usage of the mac menu bar is limited.
Look for the VM to the usual place.
http://www.smalltalkconsulting.com/squeak.htmlPS I'll note the 3.8.11x series of VMs will not work with Croquet on
powerpc, mind it does on MacIntel.
--
========================================================================
===
John M. McIntosh <
[hidden email]> 1-800-477-2659
Corporate Smalltalk Consulting Ltd.
http://www.smalltalkconsulting.com========================================================================
===