Bert Freudenberg uploaded a new version of ST80 to project Etoys: http://source.squeak.org/etoys/ST80-bf.4.mcz
==================== Summary ====================
Name: ST80-bf.4 Author: bf Time: 8 May 2010, 12:00:37 pm UUID: f338e428-3bbf-4118-9739-6cd4d6917b42 Ancestors: ST80-bf.3
- Fix for SQ-489 (Alt-. does not always work): LowSpaceAndInterruptHandler-4Etoys-M1041-dtl
=============== Diff against ST80-bf.3 ===============
Item was changed: ----- Method: ControlManager>>interruptName:preemptedProcess: (in category 'scheduling') ----- interruptName: labelString preemptedProcess: theInterruptedProcess "Create a Notifier on the active scheduling process with the given label. Make the Notifier the active controller." + | newActiveController preemptedProcess | - | suspendingList newActiveController preemptedProcess |
+ preemptedProcess := theInterruptedProcess ifNil: [Processor preemptedProcess]. + preemptedProcess suspend. - preemptedProcess _ theInterruptedProcess ifNil: [Processor preemptedProcess]. - preemptedProcess == activeControllerProcess - ifFalse: [(suspendingList _ preemptedProcess suspendingList) == nil - ifTrue: [preemptedProcess suspend] - ifFalse: [suspendingList remove: preemptedProcess. - preemptedProcess offList]].
+ "There is something wrong here. We suspend *two* processes, the interrupted + process and the activeControllerProcess (unless they are the same). How can + that possibly be right? However, it is what the code did before I added the comment + (it was merely hidden underneith another pile of code). Someone with more + understanding about MVC fix this please." - (suspendingList _ activeControllerProcess suspendingList) == nil - ifTrue: [activeControllerProcess == Processor activeProcess - ifTrue: [activeControllerProcess suspend]] - ifFalse: [suspendingList remove: activeControllerProcess ifAbsent:[]. - activeControllerProcess offList].
+ preemptedProcess == activeControllerProcess + ifFalse:[activeControllerProcess suspend]. + activeController ~~ nil ifTrue: [ "Carefully de-emphasis the current window." activeController view topView deEmphasizeForDebugger].
+ newActiveController := - newActiveController _ (Debugger openInterrupt: labelString onProcess: preemptedProcess) controller. newActiveController centerCursorInView. self activeController: newActiveController. !
etoys-dev@lists.squeakfoundation.org