'From Squeak3.1alpha of 28 February 2001 [latest update: #4282] on 23 August 2001 at 4:10:31 pm'! "Change Set: InterruptFix2-ar Date: 23 August 2001 Author: Andreas Raab A post-fix for the last fix which could result in 'debugging' the idle process (not good...). So only use the preempted process if its priority is >= the project's process in which case the preempted process may be running wild."! !Project class methodsFor: 'utilities' stamp: 'ar 8/23/2001 16:09'! interruptName: labelString "Create a Notifier on the active scheduling process with the given label." | preemptedProcess projectProcess suspendingList | Smalltalk isMorphic ifFalse: [^ ScheduledControllers interruptName: labelString]. ActiveHand ifNotNil:[ActiveHand interrupted]. ActiveWorld _ World. "reinstall active globals" ActiveHand _ World primaryHand. ActiveHand interrupted. "make sure this one's interrupted too" ActiveEvent _ nil. projectProcess _ self uiProcess. "we still need the accessor for a while" preemptedProcess _ Processor preemptedProcess. "Only debug preempted process if its priority is >= projectProcess' priority" preemptedProcess priority < projectProcess priority ifTrue:[ (suspendingList _ projectProcess suspendingList) == nil ifTrue: [projectProcess == Processor activeProcess ifTrue: [projectProcess suspend]] ifFalse: [suspendingList remove: projectProcess. projectProcess offList]. preemptedProcess _ projectProcess. ] ifFalse:[ preemptedProcess suspend offList. ]. Debugger openInterrupt: labelString onProcess: preemptedProcess ! !