--- a/MemMonitor.st Thu Jan 23 21:19:03 1997 +0100
+++ b/MemMonitor.st Thu Jan 23 22:39:55 1997 +0100
@@ -13,7 +13,7 @@
StandardSystemView subclass:#MemoryMonitor
instanceVariableNames:'updateInterval updateBlock myProcess oldData newData freeData
updateIndex org maxTotal minTotal dX newColor freeColor oldColor
- prevTotal prevFree prevFree2 prevOld scale'
+ prevTotal prevFree prevFree2 prevOld scale drawLock'
classVariableNames:''
poolDictionaries:''
category:'Interface-Tools'
@@ -203,81 +203,86 @@
gWidth shift scaleChange margin mustWait|
shown ifTrue:[
- oldSpaceUsed := ObjectMemory oldSpaceUsed + ObjectMemory symSpaceUsed.
- newSpaceUsed := ObjectMemory newSpaceUsed.
- freeMem := ObjectMemory freeListSpace + (ObjectMemory oldSpaceSize - ObjectMemory oldSpaceUsed).
- oldSpaceSize := ObjectMemory oldSpaceSize + ObjectMemory symSpaceSize.
- total := oldSpaceSize + ObjectMemory newSpaceSize.
+ drawLock wouldBlock ifFalse:[
+ drawLock critical:[
+ oldSpaceUsed := ObjectMemory oldSpaceUsed + ObjectMemory symSpaceUsed.
+ newSpaceUsed := ObjectMemory newSpaceUsed.
+ freeMem := ObjectMemory freeListSpace + (ObjectMemory oldSpaceSize - ObjectMemory oldSpaceUsed).
+ oldSpaceSize := ObjectMemory oldSpaceSize + ObjectMemory symSpaceSize.
+ total := oldSpaceSize + ObjectMemory newSpaceSize.
- scaleChange := false.
+ scaleChange := false.
- ((total - freeMem) < minTotal) ifTrue:[
- minTotal := total - freeMem.
- scaleChange := true
- ].
- (total > maxTotal) ifTrue:[
- maxTotal := total.
- scaleChange := true
- ].
+ ((total - freeMem) < minTotal) ifTrue:[
+ minTotal := total - freeMem.
+ scaleChange := true
+ ].
+ (total > maxTotal) ifTrue:[
+ maxTotal := total.
+ scaleChange := true
+ ].
- oldData at:updateIndex put:oldSpaceSize. "/ oldSpaceUsed.
- newData at:updateIndex put:newSpaceUsed.
- freeData at:updateIndex put:freeMem.
- updateIndex := updateIndex + 1.
+ oldData at:updateIndex put:oldSpaceSize. "/ oldSpaceUsed.
+ newData at:updateIndex put:newSpaceUsed.
+ freeData at:updateIndex put:freeMem.
+ updateIndex := updateIndex + 1.
- scaleChange ifTrue:[
- scale := height asFloat / (maxTotal + 100000).
- self redraw
- ].
+ scaleChange ifTrue:[
+ scale := height asFloat / (maxTotal + 100000).
+ self redraw
+ ].
- gWidth := width - org.
- margin := 1.
+ gWidth := width - org.
+ margin := 1.
+
+ mustWait := false.
+ ((updateIndex-1) >= (gWidth - margin)) ifTrue:[
+ "on slow displays, use:"
+ "/ shift := gWidth // 4.
- mustWait := false.
- ((updateIndex-1) >= (gWidth - margin)) ifTrue:[
-"on slow displays, use:"
-"/ shift := gWidth // 4.
+ "for smooth display, use:"
+ shift := 1.
-"for smooth display, use:"
- shift := 1.
+ oldData replaceFrom:1 with:oldData startingAt:shift+1.
+ newData replaceFrom:1 with:newData startingAt:shift+1.
+ freeData replaceFrom:1 with:freeData startingAt:shift+1.
- oldData replaceFrom:1 with:oldData startingAt:shift+1.
- newData replaceFrom:1 with:newData startingAt:shift+1.
- freeData replaceFrom:1 with:freeData startingAt:shift+1.
-
- updateIndex := updateIndex - shift.
- dX := dX + shift.
+ updateIndex := updateIndex - shift.
+ dX := dX + shift.
- self catchExpose.
- self copyFrom:self
- x:(org + shift) y:0
- toX:org y:0
- width:(gWidth - shift - margin)
- height:height.
- self clearRectangleX:(width - margin - shift) y:0
- width:shift height:height.
- mustWait := true.
- ].
+ self catchExpose.
+ self copyFrom:self
+ x:(org + shift) y:0
+ toX:org y:0
+ width:(gWidth - shift - margin)
+ height:height.
+ self clearRectangleX:(width - margin - shift) y:0
+ width:shift height:height.
+ mustWait := true.
+ ].
- self updateLineX:(updateIndex - 1 + org - 1)
- total:total
- old:oldSpaceSize "/ oldSpaceUsed
- new:newSpaceUsed
- free:freeMem.
+ self updateLineX:(updateIndex - 1 + org - 1)
+ total:total
+ old:oldSpaceSize "/ oldSpaceUsed
+ new:newSpaceUsed
+ free:freeMem.
- self updateNumbers.
- self flush.
- mustWait ifTrue:[
- self waitForExpose.
- ]
+ self updateNumbers.
+ self flush.
+ mustWait ifTrue:[
+ self waitForExpose.
+ ]
+
+ ].
+ ].
].
updateBlock notNil ifTrue:[
Processor addTimedBlock:updateBlock afterSeconds:updateInterval
].
- "Modified: 18.12.1995 / 15:21:10 / cg"
+ "Modified: 23.1.1997 / 22:38:08 / cg"
!
updateLineX:x total:total old:oldSpaceSize new:newSpaceUsed free:freeMem
@@ -515,9 +520,11 @@
initialize
super initialize.
+ drawLock := Semaphore forMutualExclusion.
+
updateInterval := 0.5.
ProcessorScheduler isPureEventDriven ifTrue:[
- updateBlock := [self updateDisplay].
+ updateBlock := [self updateDisplay].
].
oldData := Array new:1000.
newData := Array new:1000.
@@ -528,19 +535,19 @@
level := 0.
maxTotal := minTotal := ObjectMemory oldSpaceSize
- + ObjectMemory symSpaceSize
- + ObjectMemory newSpaceSize.
+ + ObjectMemory symSpaceSize
+ + ObjectMemory newSpaceSize.
viewBackground := Black.
device hasColors ifTrue:[
- newColor := Color orange. "/ yellow.
- freeColor := Color green.
- oldColor := Color white.
+ newColor := Color orange. "/ yellow.
+ freeColor := Color green.
+ oldColor := Color white.
] ifFalse:[
- newColor := Color grey:67.
- freeColor := Color grey:33.
- oldColor := Color white.
+ newColor := Color grey:67.
+ freeColor := Color grey:33.
+ oldColor := Color white.
].
self font:(Font family:'courier' face:'medium' style:'roman' size:10).
@@ -551,6 +558,8 @@
"
MemoryMonitor open
"
+
+ "Modified: 23.1.1997 / 22:37:06 / cg"
!
memoryMenu
@@ -848,5 +857,5 @@
!MemoryMonitor class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/Attic/MemMonitor.st,v 1.40 1997-01-20 23:21:09 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Attic/MemMonitor.st,v 1.41 1997-01-23 21:39:55 cg Exp $'
! !
--- a/MemoryMonitor.st Thu Jan 23 21:19:03 1997 +0100
+++ b/MemoryMonitor.st Thu Jan 23 22:39:55 1997 +0100
@@ -13,7 +13,7 @@
StandardSystemView subclass:#MemoryMonitor
instanceVariableNames:'updateInterval updateBlock myProcess oldData newData freeData
updateIndex org maxTotal minTotal dX newColor freeColor oldColor
- prevTotal prevFree prevFree2 prevOld scale'
+ prevTotal prevFree prevFree2 prevOld scale drawLock'
classVariableNames:''
poolDictionaries:''
category:'Interface-Tools'
@@ -203,81 +203,86 @@
gWidth shift scaleChange margin mustWait|
shown ifTrue:[
- oldSpaceUsed := ObjectMemory oldSpaceUsed + ObjectMemory symSpaceUsed.
- newSpaceUsed := ObjectMemory newSpaceUsed.
- freeMem := ObjectMemory freeListSpace + (ObjectMemory oldSpaceSize - ObjectMemory oldSpaceUsed).
- oldSpaceSize := ObjectMemory oldSpaceSize + ObjectMemory symSpaceSize.
- total := oldSpaceSize + ObjectMemory newSpaceSize.
+ drawLock wouldBlock ifFalse:[
+ drawLock critical:[
+ oldSpaceUsed := ObjectMemory oldSpaceUsed + ObjectMemory symSpaceUsed.
+ newSpaceUsed := ObjectMemory newSpaceUsed.
+ freeMem := ObjectMemory freeListSpace + (ObjectMemory oldSpaceSize - ObjectMemory oldSpaceUsed).
+ oldSpaceSize := ObjectMemory oldSpaceSize + ObjectMemory symSpaceSize.
+ total := oldSpaceSize + ObjectMemory newSpaceSize.
- scaleChange := false.
+ scaleChange := false.
- ((total - freeMem) < minTotal) ifTrue:[
- minTotal := total - freeMem.
- scaleChange := true
- ].
- (total > maxTotal) ifTrue:[
- maxTotal := total.
- scaleChange := true
- ].
+ ((total - freeMem) < minTotal) ifTrue:[
+ minTotal := total - freeMem.
+ scaleChange := true
+ ].
+ (total > maxTotal) ifTrue:[
+ maxTotal := total.
+ scaleChange := true
+ ].
- oldData at:updateIndex put:oldSpaceSize. "/ oldSpaceUsed.
- newData at:updateIndex put:newSpaceUsed.
- freeData at:updateIndex put:freeMem.
- updateIndex := updateIndex + 1.
+ oldData at:updateIndex put:oldSpaceSize. "/ oldSpaceUsed.
+ newData at:updateIndex put:newSpaceUsed.
+ freeData at:updateIndex put:freeMem.
+ updateIndex := updateIndex + 1.
- scaleChange ifTrue:[
- scale := height asFloat / (maxTotal + 100000).
- self redraw
- ].
+ scaleChange ifTrue:[
+ scale := height asFloat / (maxTotal + 100000).
+ self redraw
+ ].
- gWidth := width - org.
- margin := 1.
+ gWidth := width - org.
+ margin := 1.
+
+ mustWait := false.
+ ((updateIndex-1) >= (gWidth - margin)) ifTrue:[
+ "on slow displays, use:"
+ "/ shift := gWidth // 4.
- mustWait := false.
- ((updateIndex-1) >= (gWidth - margin)) ifTrue:[
-"on slow displays, use:"
-"/ shift := gWidth // 4.
+ "for smooth display, use:"
+ shift := 1.
-"for smooth display, use:"
- shift := 1.
+ oldData replaceFrom:1 with:oldData startingAt:shift+1.
+ newData replaceFrom:1 with:newData startingAt:shift+1.
+ freeData replaceFrom:1 with:freeData startingAt:shift+1.
- oldData replaceFrom:1 with:oldData startingAt:shift+1.
- newData replaceFrom:1 with:newData startingAt:shift+1.
- freeData replaceFrom:1 with:freeData startingAt:shift+1.
-
- updateIndex := updateIndex - shift.
- dX := dX + shift.
+ updateIndex := updateIndex - shift.
+ dX := dX + shift.
- self catchExpose.
- self copyFrom:self
- x:(org + shift) y:0
- toX:org y:0
- width:(gWidth - shift - margin)
- height:height.
- self clearRectangleX:(width - margin - shift) y:0
- width:shift height:height.
- mustWait := true.
- ].
+ self catchExpose.
+ self copyFrom:self
+ x:(org + shift) y:0
+ toX:org y:0
+ width:(gWidth - shift - margin)
+ height:height.
+ self clearRectangleX:(width - margin - shift) y:0
+ width:shift height:height.
+ mustWait := true.
+ ].
- self updateLineX:(updateIndex - 1 + org - 1)
- total:total
- old:oldSpaceSize "/ oldSpaceUsed
- new:newSpaceUsed
- free:freeMem.
+ self updateLineX:(updateIndex - 1 + org - 1)
+ total:total
+ old:oldSpaceSize "/ oldSpaceUsed
+ new:newSpaceUsed
+ free:freeMem.
- self updateNumbers.
- self flush.
- mustWait ifTrue:[
- self waitForExpose.
- ]
+ self updateNumbers.
+ self flush.
+ mustWait ifTrue:[
+ self waitForExpose.
+ ]
+
+ ].
+ ].
].
updateBlock notNil ifTrue:[
Processor addTimedBlock:updateBlock afterSeconds:updateInterval
].
- "Modified: 18.12.1995 / 15:21:10 / cg"
+ "Modified: 23.1.1997 / 22:38:08 / cg"
!
updateLineX:x total:total old:oldSpaceSize new:newSpaceUsed free:freeMem
@@ -515,9 +520,11 @@
initialize
super initialize.
+ drawLock := Semaphore forMutualExclusion.
+
updateInterval := 0.5.
ProcessorScheduler isPureEventDriven ifTrue:[
- updateBlock := [self updateDisplay].
+ updateBlock := [self updateDisplay].
].
oldData := Array new:1000.
newData := Array new:1000.
@@ -528,19 +535,19 @@
level := 0.
maxTotal := minTotal := ObjectMemory oldSpaceSize
- + ObjectMemory symSpaceSize
- + ObjectMemory newSpaceSize.
+ + ObjectMemory symSpaceSize
+ + ObjectMemory newSpaceSize.
viewBackground := Black.
device hasColors ifTrue:[
- newColor := Color orange. "/ yellow.
- freeColor := Color green.
- oldColor := Color white.
+ newColor := Color orange. "/ yellow.
+ freeColor := Color green.
+ oldColor := Color white.
] ifFalse:[
- newColor := Color grey:67.
- freeColor := Color grey:33.
- oldColor := Color white.
+ newColor := Color grey:67.
+ freeColor := Color grey:33.
+ oldColor := Color white.
].
self font:(Font family:'courier' face:'medium' style:'roman' size:10).
@@ -551,6 +558,8 @@
"
MemoryMonitor open
"
+
+ "Modified: 23.1.1997 / 22:37:06 / cg"
!
memoryMenu
@@ -848,5 +857,5 @@
!MemoryMonitor class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/MemoryMonitor.st,v 1.40 1997-01-20 23:21:09 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/MemoryMonitor.st,v 1.41 1997-01-23 21:39:55 cg Exp $'
! !