Andreas Raab uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-ar.52.mcz==================== Summary ====================
Name: ST80-ar.52
Author: ar
Time: 6 September 2009, 11:13:12 am
UUID: f5692589-ffaf-bd4a-a248-9f849ea05687
Ancestors: ST80-ar.51
More offList/suspend cleanup.
=============== Diff against ST80-ar.51 ===============
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.
+ "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."
+
+ preemptedProcess == activeControllerProcess
+ ifFalse:[activeControllerProcess suspend].
- (suspendingList := activeControllerProcess suspendingList) == nil
- ifTrue: [activeControllerProcess == Processor activeProcess
- ifTrue: [activeControllerProcess suspend]]
- ifFalse: [suspendingList remove: activeControllerProcess ifAbsent:[].
- activeControllerProcess offList].
activeController ~~ nil ifTrue: [
"Carefully de-emphasis the current window."
activeController view topView deEmphasizeForDebugger].
newActiveController :=
(Debugger
openInterrupt: labelString
onProcess: preemptedProcess) controller.
newActiveController centerCursorInView.
self activeController: newActiveController.
!