[squeak-dev] Re: Process conflict when redisplaying World

Andreas Raab 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:
>     startChaosAnimation
>         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.

Cheers,
   - Andreas



More information about the Squeak-dev mailing list