[squeak-dev] The Trunk: Tools-dtl.129.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Sep 24 01:33:31 UTC 2009


David T. Lewis uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-dtl.129.mcz

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

Name: Tools-dtl.129
Author: dtl
Time: 23 September 2009, 9:31:10 am
UUID: 2ca49a59-5ced-472d-b3cb-cffd5f985b78
Ancestors: Tools-dtl.128

Reinitialize each instance of ProcessBrowser on image restart if its autoUpdateProcess is running. Fix implemented for both MVC and Morphic. Reference Mantis 1578.


=============== Diff against Tools-dtl.128 ===============

Item was changed:
  ----- Method: ProcessBrowser>>openAsMVC (in category 'views') -----
  openAsMVC
  	"Create a pluggable version of me, answer a window"
  	| window processListView stackListView methodTextView |
+ 	window := StandardSystemView new model: self controller: StandardSystemController new.
- 	window := StandardSystemView new model: self controller: (deferredMessageRecipient := DeferredActionStandardSystemController new).
  	window borderWidth: 1.
  	processListView := PluggableListView
  				on: self
  				list: #processNameList
  				selected: #processListIndex
  				changeSelected: #processListIndex:
  				menu: #processListMenu:
  				keystroke: #processListKey:from:.
  	processListView
  		window: (0 @ 0 extent: 300 @ 200).
  	window addSubView: processListView.
  	stackListView := PluggableListView
  				on: self
  				list: #stackNameList
  				selected: #stackListIndex
  				changeSelected: #stackListIndex:
  				menu: #stackListMenu:
  				keystroke: #stackListKey:from:.
  	stackListView
  		window: (300 @ 0 extent: 300 @ 200).
  	window addSubView: stackListView toRightOf: processListView.
  	methodTextView := PluggableTextView
  				on: self
  				text: #selectedMethod
  				accept: nil
  				readSelection: nil
  				menu: nil.
  	methodTextView askBeforeDiscardingEdits: false.
  	methodTextView
  		window: (0 @ 200 corner: 600 @ 400).
  	window addSubView: methodTextView below: processListView.
  	window setUpdatablePanesFrom: #(#processNameList #stackNameList ).
  	window label: 'Process Browser'.
  	window minimumSize: 300 @ 200.
  	window subViews
  		do: [:each | each controller].
  	window controller open.
  	startedCPUWatcher ifTrue: [ self setUpdateCallbackAfter: 7 ].
  	^ window!

Item was changed:
  ----- Method: ProcessBrowser>>openAsMorph (in category 'views') -----
  openAsMorph
  	"Create a pluggable version of me, answer a window"
  	| window aTextMorph |
  	window := (SystemWindow labelled: 'later')
  				model: self.
  
- 	deferredMessageRecipient := WorldState.
  	window
  		addMorph: ((PluggableListMorph
  				on: self
  				list: #processNameList
  				selected: #processListIndex
  				changeSelected: #processListIndex:
  				menu: #processListMenu:
  				keystroke: #processListKey:from:)
  				enableDragNDrop: false)
  		frame: (0 @ 0 extent: 0.5 @ 0.5).
  	window
  		addMorph: ((PluggableListMorph
  				on: self
  				list: #stackNameList
  				selected: #stackListIndex
  				changeSelected: #stackListIndex:
  				menu: #stackListMenu:
  				keystroke: #stackListKey:from:)
  				enableDragNDrop: false)
  		frame: (0.5 @ 0.0 extent: 0.5 @ 0.5).
  	aTextMorph := PluggableTextMorph
  				on: self
  				text: #selectedMethod
  				accept: nil
  				readSelection: nil
  				menu: nil.
  	aTextMorph askBeforeDiscardingEdits: false.
  	window
  		addMorph: aTextMorph
  		frame: (0 @ 0.5 corner: 1 @ 1).
  	window setUpdatablePanesFrom: #(#processNameList #stackNameList ).
  	(window setLabel: 'Process Browser') openInWorld.
  	startedCPUWatcher ifTrue: [ self setUpdateCallbackAfter: 7 ].
  	^ window!

Item was changed:
+ ----- Method: ProcessBrowser class>>shutDown (in category 'system startup') -----
- ----- Method: ProcessBrowser class>>shutDown (in category 'as yet unclassified') -----
  shutDown
  	Browsers do: [ :ea | ea isAutoUpdating ifTrue: [ ea pauseAutoUpdate ]]!

Item was changed:
+ ----- Method: ProcessBrowser class>>startUp (in category 'system startup') -----
- ----- Method: ProcessBrowser class>>startUp (in category 'as yet unclassified') -----
  startUp
+ 	Browsers
+ 		do: [:ea | | paused | ea isAutoUpdatingPaused
+ 				ifTrue: [ea initialize; startAutoUpdate]]!
- 	Browsers do: [ :ea | ea isAutoUpdatingPaused ifTrue: [ ea startAutoUpdate ]]!

Item was changed:
  ----- Method: ProcessBrowser>>setUpdateCallbackAfter: (in category 'updating') -----
+ setUpdateCallbackAfter: seconds 
- setUpdateCallbackAfter: seconds
  
+ 	| d |
+ 	d := Delay forSeconds: seconds.
+ 	[d wait.
+ 	d := nil.
+ 	Project current addDeferredUIMessage: [self updateProcessList]] fork!
- 		deferredMessageRecipient ifNotNil: [ | d |
- 			d := Delay forSeconds: seconds.
- 			[  d wait.
- 				d := nil.
- 				deferredMessageRecipient addDeferredUIMessage: [self updateProcessList]
- 			] fork
- 		]!

Item was changed:
  ----- Method: ProcessBrowser>>initialize (in category 'initialize-release') -----
  initialize
  	methodText := ''.
  	stackListIndex := 0.
  	searchString := ''.
  	lastUpdate := 0.
  	startedCPUWatcher := Preferences cpuWatcherEnabled and: [ self startCPUWatcher ].
+ 	self updateProcessList; processListIndex: 1.
+ 	Browsers add: self!
- 	self updateProcessList; processListIndex: 1!

Item was changed:
  ----- Method: ProcessBrowser class>>tallyCPUUsageFor:every: (in category 'CPU utilization') -----
  tallyCPUUsageFor: seconds every: msec
  	"Compute CPU usage using a msec millisecond sample for the given number of seconds,
  	then dump the usage statistics on the Transcript. The UI is free to continue, meanwhile"
  	"ProcessBrowser tallyCPUUsageFor: 10 every: 100"
  
  	| promise |
  	promise := Processor tallyCPUUsageFor: seconds every: msec.
  
  	[ | tally |
  		tally := promise value.
  		Smalltalk isMorphic
+ 			ifTrue: [ Project current addDeferredUIMessage: [ self dumpTallyOnTranscript: tally ] ]
- 			ifTrue: [ WorldState addDeferredUIMessage: [ self dumpTallyOnTranscript: tally ] ]
  			ifFalse: [ [ Transcript open ] forkAt: Processor userSchedulingPriority.
  					[ (Delay forSeconds: 1) wait.
  					self dumpTallyOnTranscript: tally ] forkAt: Processor userSchedulingPriority.]
  	] fork.!

Item was changed:
  ----- Method: ProcessBrowser>>startAutoUpdate (in category 'updating') -----
  startAutoUpdate
+ 	self isAutoUpdatingPaused
+ 		ifTrue: [^ autoUpdateProcess resume].
- 	self isAutoUpdatingPaused ifTrue: [ ^autoUpdateProcess resume ].
  	self isAutoUpdating
+ 		ifFalse: [autoUpdateProcess := [[self hasView]
+ 						whileTrue: [(Delay forSeconds: 2) wait.
+ 							Project current addDeferredUIMessage: [self updateProcessList]].
- 		ifFalse: [| delay | 
- 			delay := Delay forSeconds: 2.
- 			autoUpdateProcess := [[self hasView]
- 						whileTrue: [delay wait.
- 							deferredMessageRecipient ifNotNil: [
- 								deferredMessageRecipient addDeferredUIMessage: [self updateProcessList]]
- 							ifNil: [ self updateProcessList ]].
  					autoUpdateProcess := nil] fork].
+ 	self updateProcessList
+ !
- 	self updateProcessList!

Item was changed:
  Model subclass: #ProcessBrowser
+ 	instanceVariableNames: 'selectedProcess selectedContext methodText processList processListIndex stackList stackListIndex sourceMap selectedClass selectedSelector searchString autoUpdateProcess lastUpdate startedCPUWatcher'
- 	instanceVariableNames: 'selectedProcess selectedContext methodText processList processListIndex stackList stackListIndex sourceMap selectedClass selectedSelector searchString autoUpdateProcess deferredMessageRecipient lastUpdate startedCPUWatcher'
  	classVariableNames: 'Browsers SuspendedProcesses WellKnownProcesses'
  	poolDictionaries: ''
  	category: 'Tools-Process Browser'!
  
  !ProcessBrowser commentStamp: '<historical>' prior: 0!
  Change Set:		ProcessBrowser
  Date:			14 March 2000
  Author:			Ned Konz
  
  email: ned at bike-nomad.com
  
  This is distributed under the Squeak License.
  
  Added 14 March:
  	CPUWatcher integration
  	automatically start and stop CPUWatcher
  	added CPUWatcher to process list menu
  
  Added 29 October:
  	MVC version
  	2.8, 2.7 compatibility
  	rearranged menus
  	added pointer inspection and chasing
  	added suspend/resume
  	recognized more well-known processes
  	misc. bug fixes
  
  Added 26 October: highlight pc in source code
  Added 27 October: added 'signal semaphore'
  added 'inspect receiver', 'explore receiver', 'message tally' to stack list menu
  added 'find context', 'next context' to process list menu
  added 'change priority' and 'debug' choices to process list menu
  
  27 October mods by Bob Arning:
  
  alters process display in Ned's ProcessBrowser to 
  - show process priority
  - drop 'a Process in' that appears on each line
  - show in priority order
  - prettier names for known processes
  - fix to Utilities to forget update downloading process when it ends (1 less dead
  process)
  - correct stack dump for the active process
  !




More information about the Squeak-dev mailing list