Andreas Raab uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-cmm.319.mcz==================== Summary ====================
Name: Morphic-cmm.319
Author: cmm
Time: 4 February 2010, 10:16:15.072 pm
UUID: e553d1a8-7726-4b46-977f-f2f8762a45b1
Ancestors: Morphic-kb.318
Fix for potential World lockup due to the
UI process waiting for the #next of an empty deferredUIMessages. For discussion:
http://lists.squeakfoundation.org/pipermail/squeak-dev/2009-March/135119.html=============== Diff against Morphic-kb.318 ===============
Item was changed:
----- Method: WorldState>>runStepMethodsIn: (in category 'stepping') -----
runStepMethodsIn: aWorld
"Perform periodic activity inbetween event cycles"
+ | queue msg |
- | queue numItems i limit stamp |
-
queue := self class deferredUIMessages.
+ [(msg := queue nextOrNil) == nil] whileFalse: [
+ msg value.
+ ].
- numItems := queue size.
- i := 0.
- limit := self class deferredExecutionTimeLimit.
- stamp := Time millisecondClockValue.
-
- "Dispatch deferred messages while maintaing rudimentary UI responsiveness."
- [i < numItems and: [(Time millisecondsSince: stamp) < limit]]
- whileTrue: [queue next value. i := i + 1].
-
self runLocalStepMethodsIn: aWorld.
-
- "we are using a normal #step for these now"
- "aWorld allLowerWorldsDo: [ :each | each runLocalStepMethods ]."
!