pending mac carbon VM 3.8.17b1
John M McIntosh
johnmci at smalltalkconsulting.com
Wed Apr 25 20:07:03 UTC 2007
I've pushed out a 3.8.17b1 universal mac carbon VM to my idisk and
(a) A fair amount of work was done to make the VM and browser plugin
work and not kill each other on these multiple CPU macIntel machines.
(b) I added a feature where the VM can open with no window, or you
can close the main window, this lets future smalltalk code control
when the window does open.
(c) After many hours of waiting to install 10.2.8 on my old PB G3
laptop I rechecked the current VM and make changes so that 3.8.17b1
does run on 10.2.8, I note that
we broke that in the macIntel port with the 3.8.10 build.
(d) The freetype plugin gets a revision to 2.2.2c52 to include an
accessor primitive to fetch the OS2 table so we can look at the
fstype for font embedding information.
(e) The new browser plugin was revised to work with Safari 1.0.3 on
10.2.8. I note we should have an installation package for this on the
squeakland site real soon now...
Finally I switched to a nice new shinny MacBook Pro so I upgraded
XCode to 2.4.1, which of course has gcc version change implications,
I did notice the VM is faster on macIntel,
people might want to check that.
3.8.17b1 Logic to enable startup without window, and let Ffenstri
later add a window, or let Ffenstri close the main window.
Also put back the os-x 10.2.8 support by coding around missing
routines in 10.2
sqMacWindowUniversal.c In ioShowDisplayOnWindow only force open
the window if we are not explicit about the open based on the
For os-x 10.2.8 fallback to old logic in ioSetDisplayMode
sqMacUIEventsUniversal.c Check for window in record mouse logic,
also clean up some warning msgs
For os-x 10.2.8 beware of kEventParamWindowPartCode, 10.3
Use amIOSX102X call to consider if 10.2 and execute old code
sqMacHostWIndow.c Set window tracking only if window exists
sqMacDragDrop.c Beware of setting drop handler, but no main window
sqMacOpenGL.c Watch out for no main window
sqMacMain.c Add new parm SqueakExplicitWindowOpenNeeded, true
if we need to explicit open main window
sqMacUnixExternalPrims.c For os-x 10.2.8 fallback to old logic dl
3.8.16b5 Squeak3d logic did not swap bytes corrrectly for macintel.
Add parm to config.h and compiler.
3.8.16b4 sqMacSecurity.c Oops get external char  wrong and why it
crashes on strcpy...
3.8.16b3 Changed SqueakBrowserUntrustedDirectory info.plist to
SqueakUntrustedDirectory and added SqueakTrustedDirectory.
sqMacMain.c warning msg cleanup, add logic to get
sqMacSecurity.c Rework how trusted directory is made, always make
from info.plist entry, versus old unix hack.
warning msg cleanup.
sqMacUIEventsUniversal.c Bug fix, optimized out stale screen
experimental, pulled, had bug where asking for vmParm < 0 or >2 <
1000 or 1201 or 1202
would give uuid back, oops
Fixed issue where when we go to setup the shared memory region the
file name is not random enough, thus
if timing is right you end up sharing the same shared memory
region if you run Safari and FireFox at the
same time. That gave one of our testers interesting visual side
Fixed window draw issue in Safari, would blank Safari window to
white, then not redraw properly, have to follow os-9
rules for updatewindow logic on a update window request.
Update cursor logic so that moving out of the plugin window
restores the cursor, moving back in
sets the special squeak cursor.
Don't pass activate or update events to the VM, activate is
pointless, update is handled internally, we can draw
the screen according to the clip area.
Finally make pipe to VM non-blocking, if we get a EAGAIN, we try
20 times then give up. This solves the issue when
a person uses the Quit Button in the plugin and stops the VM from
running. Of course the screen is not updated now
but we still retain control of the cursor,keyboard so you can
reload the etoy application via the browser. Before Safari
would lockup trying to send data to the non-existant VM.
3.8.16b1 Revision to 3.8.16 because of adding browser full screen
sqMacMain.c on exit reset menu bar if was headless, browser,
and went full screen
sqMacNSPluginUILogic2.c add helper methods for when in browser
mode and gone full screen, also
then ignore cmds from browser when in full screen mode.
sqMacNSPluginUILogic2.h header changes
sqMacUIEvents.h Add missing RunApplicationEventLoopWithSqueak
sqMacUIEventsUniversal.c When running full screen in browser mode,
we need to consider application activation,
deactivation, mouse cursor enter/leave,
gSqueakMouseMappings, screen flushing
sqMacWindowUniversal.c On going full screen we need to fix the
menu bar, show the window, ensure window
context is set correctly, send bits to the window, versus
browser, flip squeak to
the foreground, and ensure cursor sets go to the foreground
versus the browser.
On leaving full screen, we must flip to the browser, and
hide the window.
3.8.15b8 sqMacNSPluginUILogic2.c Alter shared memory include 20
more bytes to
indicate a drawing request and the co-ordinates versus using
sqMacNSPluginUILogic2.h structure added.
sqMacUIEventsUniversal.c Do not flush hidden squeak window,
pointless when running in browser mode.
sqMacWindowUniversal.c Do not flush hidden squeak window,
pointless when running in browser mode.
Alter browser screen update logic, use shared memory to
indicate a draw is
needed and where. Later when we come back to draw the next
frame, if the
pending draw is not done yet, we wait 1 second in a phtread
pause loop in 10 ms
increments. This ensures we do not overrun the ability of
the browser to draw frames
3.8.15b7 Was test version, not widely distributed.
John M. McIntosh <johnmci at smalltalkconsulting.com>
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
More information about the Squeak-dev