From 644b15ffcda789a52e3d7e7769a07bd6f13a4c22 Mon Sep 17 00:00:00 2001 From: Toxblh Date: Tue, 9 Oct 2018 12:28:48 +0100 Subject: [PATCH] Fix for brightness slider. Correct API for set new level. Used CoreDisplay.framework --- MTMR.xcodeproj/project.pbxproj | 4 +++ MTMR/CBridge/CBBlueLightClient.h | 4 +-- MTMR/CBridge/TouchBarPrivateApi-Bridging.h | 3 +++ MTMR/Info.plist | 4 +-- MTMR/Widgets/BrightnessViewController.swift | 29 ++++++++++++++------- 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/MTMR.xcodeproj/project.pbxproj b/MTMR.xcodeproj/project.pbxproj index 6091490..a319333 100644 --- a/MTMR.xcodeproj/project.pbxproj +++ b/MTMR.xcodeproj/project.pbxproj @@ -29,6 +29,7 @@ 60C44AFD20A373A100C0EC91 /* MusicBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60C44AFC20A373A100C0EC91 /* MusicBarItem.swift */; }; 60F7D454208CC31400ABF5D2 /* InputSourceBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F7D453208CC31400ABF5D2 /* InputSourceBarItem.swift */; }; B0008E552080286C003AD4DD /* SupportHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0008E542080286C003AD4DD /* SupportHelpers.swift */; }; + B002E642216C0E38002774BA /* CoreDisplay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B002E641216C0E38002774BA /* CoreDisplay.framework */; }; B00D181D2152F4A5000806F4 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B00D181C2152F4A5000806F4 /* Sparkle.framework */; }; B00D181F2152F521000806F4 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B00D181C2152F4A5000806F4 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B04B7BB72087398C00C835D0 /* BatteryBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B04B7BB62087398C00C835D0 /* BatteryBarItem.swift */; }; @@ -99,6 +100,7 @@ 60C44AFC20A373A100C0EC91 /* MusicBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicBarItem.swift; sourceTree = ""; }; 60F7D453208CC31400ABF5D2 /* InputSourceBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputSourceBarItem.swift; sourceTree = ""; }; B0008E542080286C003AD4DD /* SupportHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportHelpers.swift; sourceTree = ""; }; + B002E641216C0E38002774BA /* CoreDisplay.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreDisplay.framework; path = ../../../../../System/Library/Frameworks/CoreDisplay.framework; sourceTree = ""; }; B00D181C2152F4A5000806F4 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; }; B04B7BB62087398C00C835D0 /* BatteryBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatteryBarItem.swift; sourceTree = ""; }; B05600D22083E9BB00EB218D /* CustomSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSlider.swift; sourceTree = ""; }; @@ -143,6 +145,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B002E642216C0E38002774BA /* CoreDisplay.framework in Frameworks */, B081732A2135F354005D4908 /* CoreBrightness.framework in Frameworks */, B059D62D205F11E8006E6B86 /* DFRFoundation.framework in Frameworks */, B09EB1E6207C0F8E00D5C1E0 /* MultitouchSupport.framework in Frameworks */, @@ -163,6 +166,7 @@ B059D62B205F11E8006E6B86 /* Frameworks */ = { isa = PBXGroup; children = ( + B002E641216C0E38002774BA /* CoreDisplay.framework */, B00D181C2152F4A5000806F4 /* Sparkle.framework */, B08173292135F354005D4908 /* CoreBrightness.framework */, B09EB1E5207C0F8E00D5C1E0 /* MultitouchSupport.framework */, diff --git a/MTMR/CBridge/CBBlueLightClient.h b/MTMR/CBridge/CBBlueLightClient.h index 454b55c..9a94d1b 100644 --- a/MTMR/CBridge/CBBlueLightClient.h +++ b/MTMR/CBridge/CBBlueLightClient.h @@ -28,7 +28,7 @@ typedef struct { } Status; @interface CBBlueLightClient: NSObject -- (BOOL) setEnabled:(BOOL)enabled; -- (BOOL) setMode:(int)mode; +- (BOOL) setEnabled: (BOOL)enabled; +- (BOOL) setMode: (int)mode; - (void) getBlueLightStatus: (Status *)status; @end diff --git a/MTMR/CBridge/TouchBarPrivateApi-Bridging.h b/MTMR/CBridge/TouchBarPrivateApi-Bridging.h index 158b8a4..ad4c8ff 100644 --- a/MTMR/CBridge/TouchBarPrivateApi-Bridging.h +++ b/MTMR/CBridge/TouchBarPrivateApi-Bridging.h @@ -20,4 +20,7 @@ CF_EXPORT IOReturn MTActuatorClose(CFTypeRef actuatorRef); CF_EXPORT IOReturn MTActuatorActuate(CFTypeRef actuatorRef, SInt32 actuationID, UInt32 arg1, Float32 arg2, Float32 arg3); CF_EXPORT bool MTActuatorIsOpen(CFTypeRef actuatorRef); +CF_EXPORT void CoreDisplay_Display_SetUserBrightness(int CGDirectDisplayID, double level); +CF_EXPORT double CoreDisplay_Display_GetUserBrightness(int CGDirectDisplayID); + NS_ASSUME_NONNULL_END diff --git a/MTMR/Info.plist b/MTMR/Info.plist index b252b90..308af88 100644 --- a/MTMR/Info.plist +++ b/MTMR/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.18.3 + 0.18.4 CFBundleVersion - 26 + 35 LSApplicationCategoryType public.app-category.utilities LSMinimumSystemVersion diff --git a/MTMR/Widgets/BrightnessViewController.swift b/MTMR/Widgets/BrightnessViewController.swift index 6d67c05..bd036f5 100644 --- a/MTMR/Widgets/BrightnessViewController.swift +++ b/MTMR/Widgets/BrightnessViewController.swift @@ -18,7 +18,7 @@ class BrightnessViewController: NSCustomTouchBarItem { sliderItem.action = #selector(BrightnessViewController.sliderValueChanged(_:)) sliderItem.minValue = 0.0 sliderItem.maxValue = 100.0 - sliderItem.floatValue = getBrightness()*100 + sliderItem.floatValue = getBrightness() * 100 self.view = sliderItem @@ -47,17 +47,26 @@ class BrightnessViewController: NSCustomTouchBarItem { } private func getBrightness() -> Float32 { - var level: Float32 = 0.5 - let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect")) - - IODisplayGetFloatParameter(service, 0, kIODisplayBrightnessKey as CFString, &level) - return level + if #available(OSX 10.13, *) { + return Float32(CoreDisplay_Display_GetUserBrightness(0)); + } else { + var level: Float32 = 0.5 + let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect")) + + IODisplayGetFloatParameter(service, 0, kIODisplayBrightnessKey as CFString, &level) + return level + } } private func setBrightness(level: Float) { - let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect")) - - IODisplaySetFloatParameter(service, 0, kIODisplayBrightnessKey as CFString, level) - IOObjectRelease(service) + if #available(OSX 10.13, *) { + CoreDisplay_Display_SetUserBrightness(0, Double(level)); + } else { + let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IODisplayConnect")) + + IODisplaySetFloatParameter(service, 1, kIODisplayBrightnessKey as CFString, level) + IOObjectRelease(service) + } + } }