mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
fix: moved DispatchSource.MemoryPressureEvent to custom RAMPressure enum. Fixed the crashes on some macs (#2212)
This commit is contained in:
@@ -19,7 +19,7 @@ public class BarChart: WidgetWrapper {
|
||||
private var colors: [SColor] = SColor.allCases
|
||||
|
||||
private var _value: [[ColorValue]] = [[]]
|
||||
private var _pressureLevel: DispatchSource.MemoryPressureEvent = .normal
|
||||
private var _pressureLevel: RAMPressure = .normal
|
||||
private var _colorZones: colorZones = (0.6, 0.8)
|
||||
|
||||
private var boxSettingsView: NSSwitch? = nil
|
||||
@@ -93,7 +93,7 @@ public class BarChart: WidgetWrapper {
|
||||
super.draw(dirtyRect)
|
||||
|
||||
var value: [[ColorValue]] = []
|
||||
var pressureLevel: DispatchSource.MemoryPressureEvent = .normal
|
||||
var pressureLevel: RAMPressure = .normal
|
||||
var colorZones: colorZones = (0.6, 0.8)
|
||||
self.queue.sync {
|
||||
value = self._value
|
||||
@@ -224,7 +224,7 @@ public class BarChart: WidgetWrapper {
|
||||
})
|
||||
}
|
||||
|
||||
public func setPressure(_ newPressureLevel: DispatchSource.MemoryPressureEvent) {
|
||||
public func setPressure(_ newPressureLevel: RAMPressure) {
|
||||
guard self._pressureLevel != newPressureLevel else { return }
|
||||
self._pressureLevel = newPressureLevel
|
||||
DispatchQueue.main.async(execute: {
|
||||
|
||||
@@ -29,7 +29,7 @@ public class LineChart: WidgetWrapper {
|
||||
), num: 60)
|
||||
private var colors: [SColor] = SColor.allCases.filter({ $0 != SColor.cluster })
|
||||
private var _value: Double = 0
|
||||
private var _pressureLevel: DispatchSource.MemoryPressureEvent = .normal
|
||||
private var _pressureLevel: RAMPressure = .normal
|
||||
|
||||
private var historyNumbers: [KeyValue_p] = [
|
||||
KeyValue_t(key: "30", value: "30"),
|
||||
@@ -129,7 +129,7 @@ public class LineChart: WidgetWrapper {
|
||||
guard let context = NSGraphicsContext.current?.cgContext else { return }
|
||||
|
||||
var value: Double = 0
|
||||
var pressureLevel: DispatchSource.MemoryPressureEvent = .normal
|
||||
var pressureLevel: RAMPressure = .normal
|
||||
self.queue.sync {
|
||||
value = self._value
|
||||
pressureLevel = self._pressureLevel
|
||||
@@ -249,7 +249,7 @@ public class LineChart: WidgetWrapper {
|
||||
})
|
||||
}
|
||||
|
||||
public func setPressure(_ newPressureLevel: DispatchSource.MemoryPressureEvent) {
|
||||
public func setPressure(_ newPressureLevel: RAMPressure) {
|
||||
guard self._pressureLevel != newPressureLevel else { return }
|
||||
self._pressureLevel = newPressureLevel
|
||||
DispatchQueue.main.async(execute: {
|
||||
|
||||
@@ -15,7 +15,7 @@ public class MemoryWidget: WidgetWrapper {
|
||||
private var orderReversedState: Bool = false
|
||||
private var value: (String, String) = ("0", "0")
|
||||
private var percentage: Double = 0
|
||||
private var pressureLevel: DispatchSource.MemoryPressureEvent = .normal
|
||||
private var pressureLevel: RAMPressure = .normal
|
||||
private var symbolsState: Bool = true
|
||||
private var colorState: SColor = .monochrome
|
||||
|
||||
@@ -137,7 +137,7 @@ public class MemoryWidget: WidgetWrapper {
|
||||
})
|
||||
}
|
||||
|
||||
public func setPressure(_ newPressureLevel: DispatchSource.MemoryPressureEvent) {
|
||||
public func setPressure(_ newPressureLevel: RAMPressure) {
|
||||
guard self.pressureLevel != newPressureLevel else { return }
|
||||
self.pressureLevel = newPressureLevel
|
||||
DispatchQueue.main.async(execute: {
|
||||
|
||||
@@ -19,7 +19,7 @@ public class Mini: WidgetWrapper {
|
||||
private var colors: [SColor] = SColor.allCases
|
||||
|
||||
private var _value: Double = 0
|
||||
private var _pressureLevel: DispatchSource.MemoryPressureEvent = .normal
|
||||
private var _pressureLevel: RAMPressure = .normal
|
||||
private var _colorZones: colorZones = (0.6, 0.8)
|
||||
private var _suffix: String = "%"
|
||||
|
||||
@@ -93,7 +93,7 @@ public class Mini: WidgetWrapper {
|
||||
super.draw(dirtyRect)
|
||||
|
||||
var value: Double = 0
|
||||
var pressureLevel: DispatchSource.MemoryPressureEvent = .normal
|
||||
var pressureLevel: RAMPressure = .normal
|
||||
var colorZones: colorZones = (0.6, 0.8)
|
||||
var label: String = ""
|
||||
var suffix: String = ""
|
||||
@@ -155,7 +155,7 @@ public class Mini: WidgetWrapper {
|
||||
})
|
||||
}
|
||||
|
||||
public func setPressure(_ newPressureLevel: DispatchSource.MemoryPressureEvent) {
|
||||
public func setPressure(_ newPressureLevel: RAMPressure) {
|
||||
guard self._pressureLevel != newPressureLevel else { return }
|
||||
self._pressureLevel = newPressureLevel
|
||||
DispatchQueue.main.async(execute: {
|
||||
|
||||
@@ -74,7 +74,7 @@ public class TextWidget: WidgetWrapper {
|
||||
self.display()
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
static public func parseText(_ raw: String) -> [KeyValue_t] {
|
||||
var pairs: [KeyValue_t] = []
|
||||
do {
|
||||
@@ -97,5 +97,4 @@ public class TextWidget: WidgetWrapper {
|
||||
}
|
||||
return pairs
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -394,3 +394,20 @@ extension SizeUnit: CaseIterable {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum RAMPressure: String, Codable {
|
||||
case normal
|
||||
case warning
|
||||
case critical
|
||||
|
||||
func pressureColor() -> NSColor {
|
||||
switch self {
|
||||
case .normal:
|
||||
return NSColor.systemGreen
|
||||
case .warning:
|
||||
return NSColor.systemYellow
|
||||
case .critical:
|
||||
return NSColor.systemRed
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user