Skip to content

Commit 30ac465

Browse files
authored
3.0.0 bug fixes and enhancements
- Fixed not working after sleep mode for some on Apple Silicon Not working after sleep mode MonitorControl#530 - Fixed some LG and Samsung displays having problems with Mute (improved 'Enable Mute DDC command') - LG Monitor: have to unmute manually after muting MonitorControl#170 - Fixed app not working with multiple identical monitors on Intel - App does not work with multiple identical monitors MonitorControl#49 - Added 'Safe Mode' option - pressing the Shift key during startup resets preferences and disables DDC read. - Upon first start if DDC is unreadable, default brightness/volume/contrast values are now set to a sensible 75% instead of 0% - DDC write commands are issued twice on Intel (as it already was on Arm64) to improve stability on some setups. - Make sure DDC communications don't happen in parallel when both slider menu and keyboard is used (this might have caused problems with some docks with multiple display outputs). - Fixed volume control feedback audio (clicking sound) during key repeat (it should play on keyup only as this is the macOS standard). - Fixed duplication of volume control feedback audio if there are multiple external displays and 'Change... for all screens' is enabled. - Internal DDC library for Intel (based on the work of reitermarkus)
1 parent 035897a commit 30ac465

31 files changed

+808
-375
lines changed

MonitorControl.xcodeproj/project.pbxproj

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,26 @@
88

99
/* Begin PBXBuildFile section */
1010
2894D9B82280B30500DF58DA /* CGDirectDisplayID+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2894D9B72280B30500DF58DA /* CGDirectDisplayID+Extension.swift */; };
11-
28D1DDF0227FBD99004CB494 /* EDID+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D1DDEC227FB8F2004CB494 /* EDID+Extension.swift */; };
1211
28D1DDF2227FBE71004CB494 /* NSScreen+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28D1DDF1227FBE71004CB494 /* NSScreen+Extension.swift */; };
1312
28D1DDF3227FC8C6004CB494 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 56754EB01D9A4016007BCDC5 /* Assets.xcassets */; };
1413
56754EAF1D9A4016007BCDC5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56754EAE1D9A4016007BCDC5 /* AppDelegate.swift */; };
1514
56754EB11D9A4016007BCDC5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 56754EB01D9A4016007BCDC5 /* Assets.xcassets */; };
1615
6C20466C23153E4F00859767 /* Display+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C20466B23153E4F00859767 /* Display+Extension.swift */; };
17-
6C2EA1CD228F644B00060E3F /* OnlyIntegerValueFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C2EA1CC228F644B00060E3F /* OnlyIntegerValueFormatter.swift */; };
18-
6C2EA1CF228F7DFB00060E3F /* PollingMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C2EA1CE228F7DFB00060E3F /* PollingMode.swift */; };
1916
6C85EFDA22C941B000227EA1 /* DisplayManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C85EFD922C941B000227EA1 /* DisplayManager.swift */; };
2017
6C85EFE122CC00AD00227EA1 /* NSNotification+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C85EFE022CC00AD00227EA1 /* NSNotification+Extension.swift */; };
2118
6CBFE27A23DB266000D1BC41 /* Display.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBFE27923DB266000D1BC41 /* Display.swift */; };
2219
6CBFE27C23DB27A200D1BC41 /* InternalDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBFE27B23DB27A200D1BC41 /* InternalDisplay.swift */; };
2320
6CC260F6256AD8F900613714 /* Preferences+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CC260F5256AD8F900613714 /* Preferences+Extension.swift */; };
2421
6CD35F53264FFFC6001F1344 /* SimplyCoreAudio in Frameworks */ = {isa = PBXBuildFile; productRef = 6CD35F52264FFFC6001F1344 /* SimplyCoreAudio */; };
2522
6CD35F5626500008001F1344 /* MediaKeyTap in Frameworks */ = {isa = PBXBuildFile; productRef = 6CD35F5526500008001F1344 /* MediaKeyTap */; };
26-
6CD35F592650002E001F1344 /* DDC in Frameworks */ = {isa = PBXBuildFile; productRef = 6CD35F582650002E001F1344 /* DDC */; };
2723
6CD35F5C2650003F001F1344 /* Preferences in Frameworks */ = {isa = PBXBuildFile; productRef = 6CD35F5B2650003F001F1344 /* Preferences */; };
2824
6CDA0FCF26485A8300F52125 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6CDA0FCD26485A8300F52125 /* Main.storyboard */; };
2925
AA062E8A26C9A039007E628C /* DisplaysPrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA062E8926C9A039007E628C /* DisplaysPrefsViewController.swift */; };
3026
AA062E8E26CA7BE5007E628C /* DisplaysPrefsCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA062E8D26CA7BE5007E628C /* DisplaysPrefsCellView.swift */; };
31-
AA16139B26BE772E00DCF027 /* Arm64DDCUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA16139A26BE772E00DCF027 /* Arm64DDCUtils.swift */; };
27+
AA16139B26BE772E00DCF027 /* Arm64DDC.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA16139A26BE772E00DCF027 /* Arm64DDC.swift */; };
3228
AA3B4A2826AE103C00B74CD2 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = AA3B4A2726AE103C00B74CD2 /* README.md */; };
29+
AA4398A926DD55DA00943F16 /* IntelDDC.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA4398A826DD55DA00943F16 /* IntelDDC.swift */; };
30+
AA473EB126DFF8DE0063A181 /* Command.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA473EB026DFF8DE0063A181 /* Command.swift */; };
3331
AA665A5D26C5892800FEF2C1 /* AboutPrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA665A5C26C5892800FEF2C1 /* AboutPrefsViewController.swift */; };
3432
AA9AE86F26B5BF3D00B6CA65 /* OSD.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA9AE86E26B5BF3D00B6CA65 /* OSD.framework */; };
3533
AA9AE87126B5BFB700B6CA65 /* CoreDisplay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA9AE87026B5BFB700B6CA65 /* CoreDisplay.framework */; };
@@ -63,7 +61,6 @@
6361
1E7ECF3F22A4552400E4E701 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = "<group>"; };
6462
1E7ECF4122A4553000E4E701 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/MainMenu.strings; sourceTree = "<group>"; };
6563
2894D9B72280B30500DF58DA /* CGDirectDisplayID+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CGDirectDisplayID+Extension.swift"; sourceTree = "<group>"; };
66-
28D1DDEC227FB8F2004CB494 /* EDID+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EDID+Extension.swift"; sourceTree = "<group>"; };
6764
28D1DDF1227FBE71004CB494 /* NSScreen+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSScreen+Extension.swift"; sourceTree = "<group>"; };
6865
2EAA5B7E24BF9E9A00937821 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/MainMenu.strings; sourceTree = "<group>"; };
6966
2EAA5B7F24BF9E9A00937821 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = "<group>"; };
@@ -78,8 +75,6 @@
7875
56754EAE1D9A4016007BCDC5 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = AppDelegate.swift; sourceTree = "<group>"; };
7976
56754EB01D9A4016007BCDC5 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
8077
6C20466B23153E4F00859767 /* Display+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Display+Extension.swift"; sourceTree = "<group>"; };
81-
6C2EA1CC228F644B00060E3F /* OnlyIntegerValueFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnlyIntegerValueFormatter.swift; sourceTree = "<group>"; };
82-
6C2EA1CE228F7DFB00060E3F /* PollingMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollingMode.swift; sourceTree = "<group>"; };
8378
6C85EFD922C941B000227EA1 /* DisplayManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisplayManager.swift; sourceTree = "<group>"; };
8479
6C85EFE022CC00AD00227EA1 /* NSNotification+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSNotification+Extension.swift"; sourceTree = "<group>"; };
8580
6CAD134F23624CC1009BD53F /* it */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it; path = it.lproj/MainMenu.strings; sourceTree = "<group>"; };
@@ -102,8 +97,10 @@
10297
6CDA0FD826485AAE00F52125 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Main.strings; sourceTree = "<group>"; };
10398
AA062E8926C9A039007E628C /* DisplaysPrefsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplaysPrefsViewController.swift; sourceTree = "<group>"; };
10499
AA062E8D26CA7BE5007E628C /* DisplaysPrefsCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplaysPrefsCellView.swift; sourceTree = "<group>"; };
105-
AA16139A26BE772E00DCF027 /* Arm64DDCUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Arm64DDCUtils.swift; sourceTree = "<group>"; };
100+
AA16139A26BE772E00DCF027 /* Arm64DDC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Arm64DDC.swift; sourceTree = "<group>"; };
106101
AA3B4A2726AE103C00B74CD2 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
102+
AA4398A826DD55DA00943F16 /* IntelDDC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntelDDC.swift; sourceTree = "<group>"; };
103+
AA473EB026DFF8DE0063A181 /* Command.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Command.swift; sourceTree = "<group>"; };
107104
AA665A5C26C5892800FEF2C1 /* AboutPrefsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutPrefsViewController.swift; sourceTree = "<group>"; };
108105
AA6686F026B8172E00AF74A2 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Main.strings; sourceTree = "<group>"; };
109106
AA6686F126B8172E00AF74A2 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/MainMenu.strings; sourceTree = "<group>"; };
@@ -147,7 +144,6 @@
147144
AA9AE87126B5BFB700B6CA65 /* CoreDisplay.framework in Frameworks */,
148145
6CD35F53264FFFC6001F1344 /* SimplyCoreAudio in Frameworks */,
149146
6CD35F5626500008001F1344 /* MediaKeyTap in Frameworks */,
150-
6CD35F592650002E001F1344 /* DDC in Frameworks */,
151147
AA9AE86F26B5BF3D00B6CA65 /* OSD.framework in Frameworks */,
152148
6CD35F5C2650003F001F1344 /* Preferences in Frameworks */,
153149
AADB625A26BC196900DFFAA5 /* DisplayServices.framework in Frameworks */,
@@ -178,7 +174,6 @@
178174
isa = PBXGroup;
179175
children = (
180176
2894D9B72280B30500DF58DA /* CGDirectDisplayID+Extension.swift */,
181-
28D1DDEC227FB8F2004CB494 /* EDID+Extension.swift */,
182177
28D1DDF1227FBE71004CB494 /* NSScreen+Extension.swift */,
183178
6C85EFE022CC00AD00227EA1 /* NSNotification+Extension.swift */,
184179
6C20466B23153E4F00859767 /* Display+Extension.swift */,
@@ -248,10 +243,10 @@
248243
F01B0685228221B6008E64DB /* Bridging-Header.h */,
249244
F01B0680228221B6008E64DB /* Localizable.strings */,
250245
F01B0683228221B6008E64DB /* Utils.swift */,
251-
6C2EA1CC228F644B00060E3F /* OnlyIntegerValueFormatter.swift */,
252-
6C2EA1CE228F7DFB00060E3F /* PollingMode.swift */,
253246
FE4E0895249D584C003A50BB /* OSDUtils.swift */,
254-
AA16139A26BE772E00DCF027 /* Arm64DDCUtils.swift */,
247+
AA16139A26BE772E00DCF027 /* Arm64DDC.swift */,
248+
AA4398A826DD55DA00943F16 /* IntelDDC.swift */,
249+
AA473EB026DFF8DE0063A181 /* Command.swift */,
255250
);
256251
path = Support;
257252
sourceTree = "<group>";
@@ -310,7 +305,6 @@
310305
packageProductDependencies = (
311306
6CD35F52264FFFC6001F1344 /* SimplyCoreAudio */,
312307
6CD35F5526500008001F1344 /* MediaKeyTap */,
313-
6CD35F582650002E001F1344 /* DDC */,
314308
6CD35F5B2650003F001F1344 /* Preferences */,
315309
);
316310
productName = MonitorControl.OSX;
@@ -383,7 +377,6 @@
383377
packageReferences = (
384378
6CD35F51264FFFC6001F1344 /* XCRemoteSwiftPackageReference "SimplyCoreAudio" */,
385379
6CD35F5426500008001F1344 /* XCRemoteSwiftPackageReference "MediaKeyTap" */,
386-
6CD35F572650002E001F1344 /* XCRemoteSwiftPackageReference "DDC" */,
387380
6CD35F5A2650003F001F1344 /* XCRemoteSwiftPackageReference "Preferences" */,
388381
);
389382
productRefGroup = 56754EAC1D9A4016007BCDC5 /* Products */;
@@ -494,7 +487,7 @@
494487
};
495488
F03A8DF01FFB9D4C0034DC27 /* [Lint] Run SwiftLint */ = {
496489
isa = PBXShellScriptBuildPhase;
497-
buildActionMask = 2147483647;
490+
buildActionMask = 12;
498491
files = (
499492
);
500493
inputPaths = (
@@ -516,22 +509,21 @@
516509
56754EAF1D9A4016007BCDC5 /* AppDelegate.swift in Sources */,
517510
6C85EFE122CC00AD00227EA1 /* NSNotification+Extension.swift in Sources */,
518511
AA062E8A26C9A039007E628C /* DisplaysPrefsViewController.swift in Sources */,
519-
6C2EA1CD228F644B00060E3F /* OnlyIntegerValueFormatter.swift in Sources */,
512+
AA473EB126DFF8DE0063A181 /* Command.swift in Sources */,
520513
2894D9B82280B30500DF58DA /* CGDirectDisplayID+Extension.swift in Sources */,
521514
6CC260F6256AD8F900613714 /* Preferences+Extension.swift in Sources */,
522515
AA665A5D26C5892800FEF2C1 /* AboutPrefsViewController.swift in Sources */,
523-
6C2EA1CF228F7DFB00060E3F /* PollingMode.swift in Sources */,
524516
6CBFE27C23DB27A200D1BC41 /* InternalDisplay.swift in Sources */,
525517
AA062E8E26CA7BE5007E628C /* DisplaysPrefsCellView.swift in Sources */,
526518
FE4E0896249D584C003A50BB /* OSDUtils.swift in Sources */,
527519
6CBFE27A23DB266000D1BC41 /* Display.swift in Sources */,
528520
F03A8DF21FFBAA6F0034DC27 /* ExternalDisplay.swift in Sources */,
529-
28D1DDF0227FBD99004CB494 /* EDID+Extension.swift in Sources */,
530521
6C20466C23153E4F00859767 /* Display+Extension.swift in Sources */,
531-
AA16139B26BE772E00DCF027 /* Arm64DDCUtils.swift in Sources */,
522+
AA16139B26BE772E00DCF027 /* Arm64DDC.swift in Sources */,
532523
F0445D3820023E710025AE82 /* MainPrefsViewController.swift in Sources */,
533524
28D1DDF2227FBE71004CB494 /* NSScreen+Extension.swift in Sources */,
534525
F01B069F228221B7008E64DB /* SliderHandler.swift in Sources */,
526+
AA4398A926DD55DA00943F16 /* IntelDDC.swift in Sources */,
535527
6C85EFDA22C941B000227EA1 /* DisplayManager.swift in Sources */,
536528
F01B069A228221B7008E64DB /* Utils.swift in Sources */,
537529
);
@@ -756,6 +748,7 @@
756748
PRODUCT_NAME = "$(TARGET_NAME)";
757749
PROVISIONING_PROFILE_SPECIFIER = "";
758750
SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h";
751+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
759752
SWIFT_VERSION = 5.0;
760753
SYSTEM_FRAMEWORK_SEARCH_PATHS = (
761754
"$(inherited)",
@@ -790,6 +783,7 @@
790783
PRODUCT_NAME = "$(TARGET_NAME)";
791784
PROVISIONING_PROFILE_SPECIFIER = "";
792785
SWIFT_OBJC_BRIDGING_HEADER = "MonitorControl/Support/Bridging-Header.h";
786+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
793787
SWIFT_VERSION = 5.0;
794788
SYSTEM_FRAMEWORK_SEARCH_PATHS = (
795789
"$(inherited)",
@@ -905,14 +899,6 @@
905899
kind = branch;
906900
};
907901
};
908-
6CD35F572650002E001F1344 /* XCRemoteSwiftPackageReference "DDC" */ = {
909-
isa = XCRemoteSwiftPackageReference;
910-
repositoryURL = "https://github.com/reitermarkus/DDC.swift";
911-
requirement = {
912-
branch = master;
913-
kind = branch;
914-
};
915-
};
916902
6CD35F5A2650003F001F1344 /* XCRemoteSwiftPackageReference "Preferences" */ = {
917903
isa = XCRemoteSwiftPackageReference;
918904
repositoryURL = "https://github.com/sindresorhus/Preferences";
@@ -934,11 +920,6 @@
934920
package = 6CD35F5426500008001F1344 /* XCRemoteSwiftPackageReference "MediaKeyTap" */;
935921
productName = MediaKeyTap;
936922
};
937-
6CD35F582650002E001F1344 /* DDC */ = {
938-
isa = XCSwiftPackageProductDependency;
939-
package = 6CD35F572650002E001F1344 /* XCRemoteSwiftPackageReference "DDC" */;
940-
productName = DDC;
941-
};
942923
6CD35F5B2650003F001F1344 /* Preferences */ = {
943924
isa = XCSwiftPackageProductDependency;
944925
package = 6CD35F5A2650003F001F1344 /* XCRemoteSwiftPackageReference "Preferences" */;

0 commit comments

Comments
 (0)