[squeak-dev] Re: Process conflict when redisplaying World
andreas.raab at gmx.de
Wed May 6 16:09:00 UTC 2009
Trygve Reenskaug wrote:
> I have a visualization demo. It runs in a separate process to permit
> mouse and keyboard input while it runs:
> currentState = #CHAOS ifTrue: [^self].
> currentState := #CHAOS.
> processSemaphore wait.
> BB2ChaosCtx startChaosAnimationOn: data.
> processSemaphore signal.
> ] fork.
> BB2ChaosCtx startChaosAnimationOn: data starts a loop that creates and
> removes Morphs interspersed with suitable Delays to get the speed right.
> The process can run for several hours before crashing in various ways.
> It sometimes crashes with a primitiveError while redisplaying World. A
> simpler stop was an MNU in
> MorphicEventDispatcher>>dispatchDefault: anEvent with: aMorph
> where aMorph = a PasteUpMorph [world], with fullBounds = nil
> My process is clearly in some unfortunate state when the main process
> repaints or handles the mouse. Any ideas how I should make my process safe?
Use Morph stepping instead of an unsynchronized process.
More information about the Squeak-dev