mirror of
https://github.com/MonitorControl/MonitorControl.git
synced 2026-05-15 14:15:55 -06:00
Virtual displays now use serial number as preferences ID appendix. (#793)
This commit is contained in:
parent
a2203ab2b1
commit
226f068458
6 changed files with 22 additions and 19 deletions
|
|
@ -19,7 +19,7 @@
|
|||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>6957</string>
|
||||
<string>6965</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@ import os.log
|
|||
class AppleDisplay: Display {
|
||||
private var displayQueue: DispatchQueue
|
||||
|
||||
override init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, isVirtual: Bool = false, isDummy: Bool = false) {
|
||||
override init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, serialNumber: UInt32?, isVirtual: Bool = false, isDummy: Bool = false) {
|
||||
self.displayQueue = DispatchQueue(label: String("displayQueue-\(identifier)"))
|
||||
super.init(identifier, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, isVirtual: isVirtual, isDummy: isDummy)
|
||||
super.init(identifier, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, serialNumber: serialNumber, isVirtual: isVirtual, isDummy: isDummy)
|
||||
}
|
||||
|
||||
public func getAppleBrightness() -> Float {
|
||||
|
|
|
|||
|
|
@ -5,14 +5,15 @@ import Foundation
|
|||
import os.log
|
||||
|
||||
class Display: Equatable {
|
||||
internal let identifier: CGDirectDisplayID
|
||||
internal let prefsId: String
|
||||
internal var name: String
|
||||
internal var vendorNumber: UInt32?
|
||||
internal var modelNumber: UInt32?
|
||||
internal var smoothBrightnessTransient: Float = 1
|
||||
internal var smoothBrightnessRunning: Bool = false
|
||||
internal var smoothBrightnessSlow: Bool = false
|
||||
let identifier: CGDirectDisplayID
|
||||
let prefsId: String
|
||||
var name: String
|
||||
var vendorNumber: UInt32?
|
||||
var modelNumber: UInt32?
|
||||
var serialNumber: UInt32?
|
||||
var smoothBrightnessTransient: Float = 1
|
||||
var smoothBrightnessRunning: Bool = false
|
||||
var smoothBrightnessSlow: Bool = false
|
||||
let swBrightnessSemaphore = DispatchSemaphore(value: 1)
|
||||
|
||||
static func == (lhs: Display, rhs: Display) -> Bool {
|
||||
|
|
@ -62,15 +63,16 @@ class Display: Equatable {
|
|||
(key ?? PrefKey.value).rawValue + (command != nil ? String((command ?? Command.none).rawValue) : "") + self.prefsId
|
||||
}
|
||||
|
||||
internal init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, isVirtual: Bool = false, isDummy: Bool = false) {
|
||||
init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, serialNumber: UInt32?, isVirtual: Bool = false, isDummy: Bool = false) {
|
||||
self.identifier = identifier
|
||||
self.name = name
|
||||
self.vendorNumber = vendorNumber
|
||||
self.modelNumber = modelNumber
|
||||
self.prefsId = "(" + String(name.filter { !$0.isWhitespace }) + String(vendorNumber ?? 0) + String(modelNumber ?? 0) + "@" + String(identifier) + ")"
|
||||
os_log("Display init with prefsIdentifier %{public}@", type: .info, self.prefsId)
|
||||
self.serialNumber = serialNumber
|
||||
self.isVirtual = DEBUG_VIRTUAL ? true : isVirtual
|
||||
self.isDummy = isDummy
|
||||
self.prefsId = "(\(name.filter { !$0.isWhitespace })\(vendorNumber ?? 0)\(modelNumber ?? 0)@\(self.isVirtual ? (self.serialNumber ?? 9999) : identifier))"
|
||||
os_log("Display init with prefsIdentifier %{public}@", type: .info, self.prefsId)
|
||||
self.swUpdateDefaultGammaTable()
|
||||
self.smoothBrightnessTransient = self.getBrightness()
|
||||
if self.isVirtual || self.readPrefAsBool(key: PrefKey.avoidGamma), !self.isDummy {
|
||||
|
|
|
|||
|
|
@ -26,8 +26,8 @@ class OtherDisplay: Display {
|
|||
set { prefs.set(newValue, forKey: PrefKey.pollingCount.rawValue + self.prefsId) }
|
||||
}
|
||||
|
||||
override init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, isVirtual: Bool = false, isDummy: Bool = false) {
|
||||
super.init(identifier, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, isVirtual: isVirtual, isDummy: isDummy)
|
||||
override init(_ identifier: CGDirectDisplayID, name: String, vendorNumber: UInt32?, modelNumber: UInt32?, serialNumber: UInt32?, isVirtual: Bool = false, isDummy: Bool = false) {
|
||||
super.init(identifier, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, serialNumber: serialNumber, isVirtual: isVirtual, isDummy: isDummy)
|
||||
if !isVirtual, !Arm64DDC.isArm64 {
|
||||
self.ddc = IntelDDC(for: identifier)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -172,14 +172,15 @@ class DisplayManager {
|
|||
let id = onlineDisplayID
|
||||
let vendorNumber = CGDisplayVendorNumber(onlineDisplayID)
|
||||
let modelNumber = CGDisplayModelNumber(onlineDisplayID)
|
||||
let serialNumber = CGDisplaySerialNumber(onlineDisplayID)
|
||||
let isDummy: Bool = DisplayManager.isDummy(displayID: onlineDisplayID)
|
||||
let isVirtual: Bool = DisplayManager.isVirtual(displayID: onlineDisplayID)
|
||||
if !DEBUG_SW, DisplayManager.isAppleDisplay(displayID: onlineDisplayID) { // MARK: (point of interest for testing)
|
||||
let appleDisplay = AppleDisplay(id, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, isVirtual: isVirtual, isDummy: isDummy)
|
||||
let appleDisplay = AppleDisplay(id, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, serialNumber: serialNumber, isVirtual: isVirtual, isDummy: isDummy)
|
||||
os_log("Apple display found - %{public}@", type: .info, "ID: \(appleDisplay.identifier), Name: \(appleDisplay.name) (Vendor: \(appleDisplay.vendorNumber ?? 0), Model: \(appleDisplay.modelNumber ?? 0))")
|
||||
self.addDisplay(display: appleDisplay)
|
||||
} else {
|
||||
let otherDisplay = OtherDisplay(id, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, isVirtual: isVirtual, isDummy: isDummy)
|
||||
let otherDisplay = OtherDisplay(id, name: name, vendorNumber: vendorNumber, modelNumber: modelNumber, serialNumber: serialNumber, isVirtual: isVirtual, isDummy: isDummy)
|
||||
os_log("Other display found - %{public}@", type: .info, "ID: \(otherDisplay.identifier), Name: \(otherDisplay.name) (Vendor: \(otherDisplay.vendorNumber ?? 0), Model: \(otherDisplay.modelNumber ?? 0))")
|
||||
self.addDisplay(display: otherDisplay)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
<key>CFBundleShortVersionString</key>
|
||||
<string>$(MARKETING_VERSION)</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>6957</string>
|
||||
<string>6965</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>LSBackgroundOnly</key>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue