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  
ftp site.

http://www.smalltalkconsulting.com/squeak.html

(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

			sqMacOpenGL.c
			sqMacWindowUniversal.c	In ioShowDisplayOnWindow only force open  
the window if we are not explicit about the open based on the  
info.plist flag
									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  
feature
									Use amIOSX102X call to consider if 10.2 and execute old code  
instead
			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 
() routines
			

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  
gSqueakTrustedDirectoryName

			sqMacSecurity.c	Rework how trusted directory is made, always make  
from info.plist entry, versus old unix hack.
							warning msg cleanup.
3.8.16b2
			sqMacUIEventsUniversal.c  Bug fix, optimized out stale screen  
flushing.
			experimental, pulled, had bug where asking for vmParm < 0 or >2 <  
1000 or 1201 or 1202
			would give uuid back, oops

3.8.15b8<<<>>>>browser plugin
			
			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  
effects.

			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  
support
		
			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  
declare

			sqMacUIEventsUniversal.c	When running full screen in browser mode,  
we need to consider application activation,
									deactivation, mouse cursor enter/leave,  
gSqueakBrowserMouseMappings versus
									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  
the pipe.
			
			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 mailing list