[FIX] Update 5764 UI termination fix (problem)

Doug Way dway at mailcan.com
Sat Mar 6 18:53:32 UTC 2004


On Saturday, March 6, 2004, at 12:56 PM, Ned Konz wrote:

> On Friday 05 March 2004 3:36 pm, Doug Way wrote:
>> Actually, it looks like the update stream problem is a bit more
>> serious... if you start with a 5707 or earlier alpha image, and load
>> updates, it will stop at 5764 even if there are more updates in the
>> stream after that.  Kind of makes sense that that would happen, since
>> the UI process is being terminated.
>
> Attached is a CS that fixes this problem.
>
> It also removes the unnecessary instance variable in the Hand.

Thanks Ned, just tried it in the test/internal update stream.

It does fix the termination-related problems, but unfortunately an 
error occurs afterward: "MessageNotUnderstood: 
HandMorph>>isGenieRecognizing" ...I've attached the debug log.

After closing the debugger, things go back to normal. (makes sense, 
since closing the debugger ends the UI process which had the problems)

To reproduce this:

- start with a fresh 5707 or earlier alpha image
- load my seeInternalUpdates changeset which I posted yesterday
- load updates from the "SqC Internal Updates*" stream

- Doug


-----------------------------------------
MessageNotUnderstood: HandMorph>>isGenieRecognizing
6 March 2004 1:41:06 pm

VM: Mac OS - a SmalltalkImage
Image: Squeak3.7alpha [latest update: #5765]

HandMorph(Object)>>doesNotUnderstand: #isGenieRecognizing
	Receiver: a HandMorph(3216)
	Arguments and temporary variables:
		aMessage: 	isGenieRecognizing
	Receiver's instance variables:
		bounds: 	235 at 289 corner: 251 at 305
		owner: 	a PasteUpMorph(1622) [world]
		submorphs: 	#()
		fullBounds: 	235 at 289 corner: 251 at 305
		color: 	Color blue
		extension: 	a MorphExtension (539) [eventHandler = an EventHandler]
		mouseFocus: 	nil
		keyboardFocus: 	a TextMorphForEditView(3763)
		eventListeners: 	nil
		mouseListeners: 	nil
		keyboardListeners: 	nil
		mouseClickState: 	nil
		mouseOverHandler: 	a MouseOverHandler
		lastMouseEvent: 	[238 at 308 235 at 289 mouseMove 581508]
		targetOffset: 	98 at 7
		damageRecorder: 	a DamageRecorder
		cacheCanvas: 	nil
		cachedCanvasHasHoles: 	true
		temporaryCursor: 	nil
		temporaryCursorOffset: 	nil
		hasChanged: 	true
		savedPatch: 	nil
		userInitials: 	''
		lastEventBuffer: 	#(1 581508 238 308 0 0 0 0)

[] in WorldState>>DoItwith: {[:h |  ActiveHand := h.  h processEvents.  
h isGenieRecognizing   ifTrue: [r...]}
	Arguments and temporary variables:
		aWorld: 	a PasteUpMorph(1622) [world]
		recognizing: 	false
		h: 	a HandMorph(3216)

Array(SequenceableCollection)>>do:
	Receiver: #(a HandMorph(3216))
	Arguments and temporary variables:
		aBlock: 	[] in WorldState>>DoItwith: {[:h |  ActiveHand := h.  h 
processEvents.  h isGenieRecognizing   ifTrue: [r...]}...etc...
		index: 	1
		indexLimiT: 	1
	Receiver's instance variables:
#(a HandMorph(3216))
WorldState>>handsDo:
	Receiver: a WorldState
	Arguments and temporary variables:
		aBlock: 	[] in WorldState>>DoItwith: {[:h |  ActiveHand := h.  h 
processEvents.  h isGenieRecognizing   ifTrue: [r...]}...etc...
	Receiver's instance variables:
		hands: 	#(a HandMorph(3216))
		activeHand: 	a HandMorph(3216)
		viewBox: 	0 at 0 corner: 800 at 600
		canvas: 	a FormCanvas on: DisplayScreen(800x600x16)
		damageRecorder: 	a DamageRecorder
		stepList: 	a Heap(StepMessage(#stepAt: -> a PreDebugWindow(1379))(a 
PreDebugWind...etc...
		lastStepTime: 	581571
		lastStepMessage: 	nil
		lastCycleTime: 	581421
		commandHistory: 	a CommandHistory
		alarms: 	a Heap()
		lastAlarmTime: 	581571
		remoteServer: 	nil
		multiCanvas: 	nil


--- The full stack ---
HandMorph(Object)>>doesNotUnderstand: #isGenieRecognizing
[] in WorldState>>DoItwith: {[:h |  ActiveHand := h.  h processEvents.  
h isGenieRecognizing   ifTrue: [r...]}
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WorldState>>DoItwith:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess {[[World doOneCycle.  Processor 
yield.  false] whileFalse.  nil]}
[] in BlockContext>>newProcess {[self value.  Processor 
terminateActive]}




More information about the Squeak-dev mailing list