pending mac carbon vm 3.8.8b14
John M McIntosh
johnmci at smalltalkconsulting.com
Tue Aug 30 02:48:55 UTC 2005
I've added logic to allow you to alter quartz flush logic and post
flush logic ms times. In the info.plist within the application you
will find 4 keys which alter this behavior.
SqueakUIFlushPrimaryDeferNMilliseconds = 20
Attempt to accumulate draw events in a 20 ms window. If a draw occurs
and the time is greater than 20 ms from the last draw we draw and
flush. If the draw is in the 20ms window we draw, and do a CGSync
(once) and do not do the flush. The sync should schedule an flush by
the carbon event handler within 20ms or so. Setting this value
towards 0 will flush on every draw. I will note setting to 16ms
causes the hilbert test to draw each pixel, versus clumps of pixels.
Altering this value will affect the frame rate of your squeak animation.
SqueakUIFlushSecondaryCheckForPossibleNeedEveryNMilliseconds = 20
Check no faster than 20 ms for possible pending flush events. This
reduces CPU overhead. The value of this key has a relationship to the
other two keys, but making it smaller might not improve thing.
Because of how the checking is done there is no guarantee it will
achieve a rate under say 16ms, but it will always occur within N
seconds. This value can effect how menus item highlighting is done.
SqueakUIFlushSecondaryCleanupDelayMilliseconds = 25
When N ms occur based on
SqueakUIFlushSecondaryCheckForPossibleNeedEveryNMilliseconds and we
have a flush pending and the flush has not occurred within this key
value of 25ms we force a flush. This value should be more than
SqueakUIFlushPrimaryDeferNMilliseconds to avoid conflicts with the
draw loop. If for example we have a draw and a draw then no further
drawing, the first draw should be flushed, then next cached for
upwards of 20-40ms based on
SqueakUIFlushSecondaryCheckForPossibleNeedEveryNMilliseconds then we
would see it exceeds this key value and cause the flush.
SqueakUIFlushUseHighPercisionClock = true
Use a more expensive ms accurate clock when set to true. If false we
use the 16ms based cheap clock. This is set to true to give higher
accuracy and does not seem to affect CPU usage based on statistical
sampling of production VMs.
Squeakers are welcome to alter these values to obtain best behaviour
which might change based on versions of OS-X.
Note:
Altering SqueakUIFlushPrimaryDeferNMilliseconds will affect frame rate.
Altering SqueakUIFlushSecondaryCheckForPossibleNeedEveryNMilliseconds
& SqueakUIFlushSecondaryCleanupDelayMilliseconds will affect menu
drawing.
Feedback about these choices is welcome.
This VM can be found at
ftp.smalltalkconsulting.com
Squeak 3.8.8beta14.app.zip
I've also moved a copy of the sit files to my idisk
http://homepage.mac.com/johnmci/FileSharing.html
--
========================================================================
===
John M. McIntosh <johnmci at smalltalkconsulting.com> 1-800-477-2659
Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com
========================================================================
===
More information about the Squeak-dev
mailing list
|