waydabber / BetterDisplay

Unlock your displays on your Mac! Flexible HiDPI scaling, XDR/HDR extra brightness, virtual screens, DDC control, extra dimming, PIP/streaming, EDID override and lots more!
https://betterdisplay.pro
18.97k stars 336 forks source link

Pressing High Resolution (HiDPI) button doesn't always work #3099

Closed Phillipus closed 3 months ago

Phillipus commented 3 months ago

Mac Mini M1 Ventura 13.6.7 Dell U2723QE Screen resolution 1920x1080 (Hi DPI)

When I press the menu item "High Resolution (HiDPI)" with the blue icon it takes several presses before it works (turns grey). Most times it turns grey momentarily and then blue again.

waydabber commented 3 months ago

I see. Don't know why that is, but let me ask some follow-up questions:

Phillipus commented 3 months ago

Does this happen with other resolutions as well?

Yes

Are you using any display group related features (US scaling, layout protection etc?)

No

Are you using any config protection features?

Yes and no. Doesn't affect it.

Is this the v2.3.7 version?

Yes

Attached is a video. Note this video shows config protections on, but it's the same with them off

https://github.com/waydabber/BetterDisplay/assets/600504/ca4b5ae5-3546-4c99-b5ad-f712dd842a1d

And in verbose mode I captured this after pressing the menu button:

[2024-06-19 14:40:14.107] Changing display mode for Display 2 (DELL U2723QE) to 141 
[2024-06-19 14:40:14.108] UI scale matching for Display 2 (DELL U2723QE) 
[2024-06-19 14:40:14.109] Display has a current pixel size of 3840 x 2160 with mode id 48 
[2024-06-19 14:40:14.114] Configure with token 0 accepted 
[2024-06-19 14:40:14.115] Configure running with token n/a, forced 
[2024-06-19 14:40:14.115] Updating displays 
[2024-06-19 14:40:14.116] System not in clamshell mode 
[2024-06-19 14:40:14.118] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.118] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.118] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.119] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.120] Updating ColorSync profile list 
[2024-06-19 14:40:14.124] Done updating ColorSync profile list 
[2024-06-19 14:40:14.124] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.184] Display with displayID 1 found - Identifiers(systemUUID: "26060C6E-E712-4E68-BC3D-AE22FB056318", vendorNumber: 4268, modelNumber: 17017, serial: 1094792268, productName: "DELL U2723QE", alphanumericSerialNumber: Optional("4FGC0P3"), yearOfManufacture: Optional(2022), weekOfManufacture: Optional(49), ioDisplayLocation: Optional("IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/dispext0@70000000/AppleCLCD2"), infoDictionaryVendorNumber: Optional(4268), infoDictionaryModelNumber: Optional(17017), infoDictionarySerial: Optional(1094792268), edidProductName: Optional("DELL U2723QE")) 
[2024-06-19 14:40:14.184] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.184] Display is connected 
[2024-06-19 14:40:14.184] Display is already in the display list, updating configuration data 
[2024-06-19 14:40:14.185] Configuring existing Display 2 (DELL U2723QE) 
[2024-06-19 14:40:14.186] Storing identifiers: Identifiers(systemUUID: "26060C6E-E712-4E68-BC3D-AE22FB056318", vendorNumber: 4268, modelNumber: 17017, serial: 1094792268, productName: "DELL U2723QE", alphanumericSerialNumber: Optional("4FGC0P3"), yearOfManufacture: Optional(2022), weekOfManufacture: Optional(49), ioDisplayLocation: Optional("IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/dispext0@70000000/AppleCLCD2"), infoDictionaryVendorNumber: Optional(4268), infoDictionaryModelNumber: Optional(17017), infoDictionarySerial: Optional(1094792268), edidProductName: Optional("DELL U2723QE")) 
[2024-06-19 14:40:14.186] Updating properties for Display 2 (DELL U2723QE) 
[2024-06-19 14:40:14.187] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.187] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.189] Updating mirroring and HDR info for display 2 
[2024-06-19 14:40:14.189] Display mode list update started for Display 2 (DELL U2723QE) 
[2024-06-19 14:40:14.191] Number of display modes for Display 2 (DELL U2723QE) is 145 
[2024-06-19 14:40:14.205] Display mode list update done for Display 2 (DELL U2723QE) 
[2024-06-19 14:40:14.205] Display has a current pixel size of 3840 x 2160 with mode id 48 
[2024-06-19 14:40:14.205] Setting up controllers 
[2024-06-19 14:40:14.206] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.206] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.206] Full arm64 service port update initiated 
[2024-06-19 14:40:14.212] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.213] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.213] New service found for display with displayID 1 
[2024-06-19 14:40:14.213] Display seems suitable for DDC 
[2024-06-19 14:40:14.213] Service port update completed 
[2024-06-19 14:40:14.214] EDR current/potential/reference for Display 2 (DELL U2723QE) is 1.0 1.0 1.0 
[2024-06-19 14:40:14.214] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.214] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.214] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.214] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.214] Display with displayID 2 found - Identifiers(systemUUID: "UNKNOWN", vendorNumber: 0, modelNumber: 0, serial: 0, productName: "Generic Display", alphanumericSerialNumber: nil, yearOfManufacture: nil, weekOfManufacture: nil, ioDisplayLocation: nil, infoDictionaryVendorNumber: nil, infoDictionaryModelNumber: nil, infoDictionarySerial: nil, edidProductName: nil) 
[2024-06-19 14:40:14.214] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.214] Display is disconnected 
[2024-06-19 14:40:14.214] Display is unidentified - skipping 
[2024-06-19 14:40:14.214] Looking for displays with identical identifiers 
[2024-06-19 14:40:14.214] Setting custom EDIDs 
[2024-06-19 14:40:14.214] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.215] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.215] Global display coordinate space size is 1920.0 x 1080.0 
[2024-06-19 14:40:14.215] Resetting color 
[2024-06-19 14:40:14.215] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:40:14.215] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:40:14.215] Incremental arm64 service port update initiated 
[2024-06-19 14:40:14.215] Service port update completed 
[2024-06-19 14:40:14.216] GUI update requrest success, sent to AppMenu 
[2024-06-19 14:40:14.216] GUI update request failed, asked for Settings 
[2024-06-19 14:40:14.216] GUI update request failed, asked for DisplaysPane 
[2024-06-19 14:40:14.216] GUI update request failed, asked for KeyboardPane 
Event tap creation failed: is your application sandboxed?
[2024-06-19 14:40:14.217] Configure with token 0 finished, running post-configuration tasks 
[2024-06-19 14:40:14.217] Enforcing protections for all displays 
[2024-06-19 14:40:14.218] Restoring framebuffer configuration for Display 2 (DELL U2723QE) 
[2024-06-19 14:40:14.218] Updating activation status of display groups 
[2024-06-19 14:40:14.218] Display group Default Group is active 
[2024-06-19 14:40:14.219] GUI update request failed, asked for DisplayGroupsPane 
[2024-06-19 14:40:14.219] UI scale matching after external change with 0 display(s) changing resolution and 0 new display(s) connecting 
[2024-06-19 14:40:14.219] UI scale matching found no actionable entries 
[2024-06-19 14:40:14.219] Running layout protection tasks 
[2024-06-19 14:40:14.219] Layout protection found no actionable layout protections 
[2024-06-19 14:40:14.219] Updating adaptations 
[2024-06-19 14:40:14.219] Done updating adaptations 
[2024-06-19 14:40:14.219] Post configuration taks for configuration with token 0 finished 
Phillipus commented 3 months ago

And this is the verbose output when it is successful.

[2024-06-19 14:54:30.012] Changing display mode for Display 2 (DELL U2723QE) to 47 
[2024-06-19 14:54:30.013] UI scale matching for Display 2 (DELL U2723QE) 
[2024-06-19 14:54:30.293] Configure callback fired for display ID 1 with flags: CGDisplayChangeSummaryFlags(rawValue: 1) 
[2024-06-19 14:54:30.293] Configure callback flag - beginConfiguration 
[2024-06-19 14:54:30.294] Configure is pending, missing beginConfiguration callback pairs for displayIDs [1] 
[2024-06-19 14:54:30.294] Configure call dispatched with token 1 
[2024-06-19 14:54:30.296] Configure callback fired for display ID 1 with flags: CGDisplayChangeSummaryFlags(rawValue: 8) 
[2024-06-19 14:54:30.296] Configure callback flag - setMode 
[2024-06-19 14:54:30.297] Configure call dispatched with token 2 
[2024-06-19 14:54:30.298] Display has a current pixel size of 1920 x 1080 with mode id 47 
[2024-06-19 14:54:30.300] Configure with token 0 accepted 
[2024-06-19 14:54:30.300] Configure running with token n/a, forced 
[2024-06-19 14:54:30.300] Updating displays 
[2024-06-19 14:54:30.300] System not in clamshell mode 
[2024-06-19 14:54:30.301] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.301] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.301] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.306] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.306] Updating ColorSync profile list 
[2024-06-19 14:54:30.309] Done updating ColorSync profile list 
[2024-06-19 14:54:30.309] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.384] Display with displayID 1 found - Identifiers(systemUUID: "26060C6E-E712-4E68-BC3D-AE22FB056318", vendorNumber: 4268, modelNumber: 17017, serial: 1094792268, productName: "DELL U2723QE", alphanumericSerialNumber: Optional("4FGC0P3"), yearOfManufacture: Optional(2022), weekOfManufacture: Optional(49), ioDisplayLocation: Optional("IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/dispext0@70000000/AppleCLCD2"), infoDictionaryVendorNumber: Optional(4268), infoDictionaryModelNumber: Optional(17017), infoDictionarySerial: Optional(1094792268), edidProductName: Optional("DELL U2723QE")) 
[2024-06-19 14:54:30.384] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.384] Display is connected 
[2024-06-19 14:54:30.385] Display is already in the display list, updating configuration data 
[2024-06-19 14:54:30.385] Configuring existing Display 2 (DELL U2723QE) 
[2024-06-19 14:54:30.386] Storing identifiers: Identifiers(systemUUID: "26060C6E-E712-4E68-BC3D-AE22FB056318", vendorNumber: 4268, modelNumber: 17017, serial: 1094792268, productName: "DELL U2723QE", alphanumericSerialNumber: Optional("4FGC0P3"), yearOfManufacture: Optional(2022), weekOfManufacture: Optional(49), ioDisplayLocation: Optional("IOService:/AppleARMPE/arm-io@10F00000/AppleT810xIO/dispext0@70000000/AppleCLCD2"), infoDictionaryVendorNumber: Optional(4268), infoDictionaryModelNumber: Optional(17017), infoDictionarySerial: Optional(1094792268), edidProductName: Optional("DELL U2723QE")) 
[2024-06-19 14:54:30.386] Updating properties for Display 2 (DELL U2723QE) 
[2024-06-19 14:54:30.387] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.387] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.389] Updating mirroring and HDR info for display 2 
[2024-06-19 14:54:30.389] Display mode list update started for Display 2 (DELL U2723QE) 
[2024-06-19 14:54:30.391] Number of display modes for Display 2 (DELL U2723QE) is 145 
[2024-06-19 14:54:30.404] Display mode list update done for Display 2 (DELL U2723QE) 
[2024-06-19 14:54:30.405] Display has a current pixel size of 1920 x 1080 with mode id 47 
[2024-06-19 14:54:30.405] Setting up controllers 
[2024-06-19 14:54:30.405] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.406] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.406] Full arm64 service port update initiated 
[2024-06-19 14:54:30.412] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.412] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.413] New service found for display with displayID 1 
[2024-06-19 14:54:30.413] Display seems suitable for DDC 
[2024-06-19 14:54:30.413] Service port update completed 
[2024-06-19 14:54:30.413] EDR current/potential/reference for Display 2 (DELL U2723QE) is 1.0 1.0 1.0 
[2024-06-19 14:54:30.413] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.413] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.413] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.414] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.414] Display with displayID 2 found - Identifiers(systemUUID: "UNKNOWN", vendorNumber: 0, modelNumber: 0, serial: 0, productName: "Generic Display", alphanumericSerialNumber: nil, yearOfManufacture: nil, weekOfManufacture: nil, ioDisplayLocation: nil, infoDictionaryVendorNumber: nil, infoDictionaryModelNumber: nil, infoDictionarySerial: nil, edidProductName: nil) 
[2024-06-19 14:54:30.414] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.414] Display is disconnected 
[2024-06-19 14:54:30.414] Display is unidentified - skipping 
[2024-06-19 14:54:30.414] Looking for displays with identical identifiers 
[2024-06-19 14:54:30.414] Setting custom EDIDs 
[2024-06-19 14:54:30.414] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.414] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.414] Global display coordinate space size is 1920.0 x 1080.0 
[2024-06-19 14:54:30.415] Resetting color 
[2024-06-19 14:54:30.415] Display with displayID 1 is not in mirror set, is online and active - considered connected 
[2024-06-19 14:54:30.415] Display with displayID 2 is not online - considered disconnected 
[2024-06-19 14:54:30.415] Incremental arm64 service port update initiated 
[2024-06-19 14:54:30.415] Service port update completed 
[2024-06-19 14:54:30.415] GUI update requrest success, sent to AppMenu 
[2024-06-19 14:54:30.415] GUI update request failed, asked for Settings 
[2024-06-19 14:54:30.416] GUI update request failed, asked for DisplaysPane 
[2024-06-19 14:54:30.416] GUI update request failed, asked for KeyboardPane 
Event tap creation failed: is your application sandboxed?
[2024-06-19 14:54:30.417] Configure with token 0 finished, running post-configuration tasks 
[2024-06-19 14:54:30.417] Enforcing protections for all displays 
[2024-06-19 14:54:30.417] Restoring framebuffer configuration for Display 2 (DELL U2723QE) 
[2024-06-19 14:54:30.417] Updating activation status of display groups 
[2024-06-19 14:54:30.417] Display group Default Group is active 
[2024-06-19 14:54:30.418] GUI update request failed, asked for DisplayGroupsPane 
[2024-06-19 14:54:30.418] UI scale matching after external change with 0 display(s) changing resolution and 0 new display(s) connecting 
[2024-06-19 14:54:30.418] UI scale matching found no actionable entries 
[2024-06-19 14:54:30.418] Running layout protection tasks 
[2024-06-19 14:54:30.418] Layout protection found no actionable layout protections 
[2024-06-19 14:54:30.418] Updating adaptations 
[2024-06-19 14:54:30.418] Done updating adaptations 
[2024-06-19 14:54:30.418] Post configuration taks for configuration with token 0 finished 
[2024-06-19 14:54:30.504] Configure token 1 outdated, aborting attempt 
[2024-06-19 14:54:30.505] Configure token 2 outdated, aborting attempt 
waydabber commented 3 months ago

Ok, I see the problem. For some displays there might be two variants of some resolutions with identical properties, but one marked unsafe, the other safe. The OS won't switch to some of the unsafe resolutions. In 2.3.7 it's up to chance which one will be selected so sometimes it works, other time it doesn't. I now added a sorting to prefer the safe mode.

Sorry about the issue and thanks for pointing it out, I wasn't aware of the problem!

waydabber commented 3 months ago

I'll provide an interim build with the fix, will let you know.

Phillipus commented 3 months ago

Thanks very much for the fast response. You do a great job, and the software is excellent, I'm happy to have paid for the Pro version. :-)

waydabber commented 3 months ago

Here is an updated pre-release: https://github.com/waydabber/BetterDisplay/releases/download/v2.0.0-pre-release/BetterDisplay-v2.3.8-b31048-pre.zip

Please let me know if this fixes the issue on your config! Thanks! :)

Phillipus commented 3 months ago

Please let me know if this fixes the issue on your config!

Perfect. It's working now. Many thanks!

waydabber commented 3 months ago

Thank you for the feedback! :)

Phillipus commented 3 months ago

waydabber reopened this

Sorry for closing it!

waydabber commented 3 months ago

No problem, just want to leave it open till I have a release so it is not omitted from release notes by accident. :)