[squeak-dev] The Trunk: ST80-mt.248.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Feb 25 14:12:28 UTC 2020


Marcel Taeumel uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-mt.248.mcz

==================== Summary ====================

Name: ST80-mt.248
Author: mt
Time: 25 February 2020, 3:12:26.773399 pm
UUID: 17a7a172-a0e4-fa46-89c9-da27f537f779
Ancestors: ST80-mt.247

Fixes an issue with debugging a process at hand, which is used when entering MVC as recovery for Morphic. Example: "[ 3 + 4 ] newProcess debug".

After this fix, the strange re-draw glitches are gone. BUT, the debugger opens only after, for example, opening the world menu once. That's related to #addDeferredUIMessage: and not having the right controller at hand in #enterForEmergencyRecovery. Not that important for 5.3.

=============== Diff against ST80-mt.247 ===============

Item was changed:
  ----- Method: MVCDebugger class>>openOn:context:label:contents:fullView: (in category 'opening') -----
  openOn: processToDebug context: context label: title contents: contentsStringOrNil fullView: full
  	"Open a notifier in response to an error, halt, or notify. A notifier view just shows a short view of the sender stack and provides a menu that lets the user open a full debugger."
  
  	| debugger cm ac acp wasActive |
  	cm := Project current world. "controller manager"
  	ac := cm activeController.
  	acp := cm activeControllerProcess. "the ui process"
  	wasActive := cm inActiveControllerProcess.
  	
  	debugger := self new
  		process: processToDebug
  		"Keep track of the controller if it matches."
  		controller: (acp == processToDebug ifTrue: [ac])
  		context: context.
  
  	full
  		ifTrue: [debugger openFullNoSuspendLabel: title]
  		ifFalse: [debugger openNotifierNoSuspendContents: contentsStringOrNil label: title].
  
  	"Try drawing the debugger tool at least once to avoid freeze."
  	Project current restoreDisplay.
  
+ 	"If we are in a helper process, #openNoTerminate WILL NOT activate the debugger's controller. Example: user-interrupt request (cmd+dot)."
- 	"If we are in a helper process, #openNoTerminate WILL NOT activate the debugger's controller."
  	(acp == processToDebug and: [wasActive not])
  		ifTrue: [ [cm searchForActiveController] fork ].
  	
+ 	"Be sure to suspend the process we want to debug now."
  	processToDebug suspend.
+ 
+ 	"If we are NOT in a helper process, #openNoTerminate WILL NOT terminate the active controller's process."
+ 	(acp ~~ processToDebug and: [wasActive])
+ 		ifTrue: [ Processor terminateActive ].
  	
  	"Get here only if active process is not the process-to-debug. Use helper process if you want to access this return value."
  	^ debugger!



More information about the Squeak-dev mailing list