Fix display_name returning index instead of name on macOS#147
Open
ralphweng2023 wants to merge 1 commit intothoth-tech:mainfrom
Open
Fix display_name returning index instead of name on macOS#147ralphweng2023 wants to merge 1 commit intothoth-tech:mainfrom
ralphweng2023 wants to merge 1 commit intothoth-tech:mainfrom
Conversation
Root cause: SDL_GetDisplayName returns display index ('0', '1', etc.)
instead of actual display names on newer macOS versions.
Solution: Use native macOS NSScreen.localizedName API via Objective-C++
to get proper display names like 'Built-in Retina Display'.
Changes:
- core_driver.cpp: Add macOS-specific code path using sk_macos_get_display_name()
- core_driver_macos.mm: New Objective-C++ file implementing NSScreen API
- CMakeLists.txt: Add macOS .mm files to build
Tested on macOS - now correctly returns 'Built-in Retina Display'
instead of '0'.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR fixes the
display_name()function returning display index numbers ("0", "1", "2") instead of actual display names on macOS.Problem
On newer macOS versions,
SDL_GetDisplayName()returns the display index as a string instead of the actual display name. This is a known SDL2 limitation.Before:
After:
Root Cause
SDL_GetDisplayName()in SDL2 does not properly retrieve display names on macOS 10.15+ (Catalina and later).Solution
Use native macOS
NSScreen.localizedNameAPI via Objective-C++ to get proper display names. The implementation:core_driver_macos.mmfile with macOS-specific codeNSScreen.localizedNamewhich returns proper names like "Built-in Retina Display" or "DELL U2720Q"SDL_GetDisplayName()on older macOS versions (pre-10.15) or other platformsFiles Changed
core_driver.cpp: Added macOS-specific code path usingsk_macos_get_display_name()core_driver_macos.mm: New Objective-C++ file implementing the macOS NSScreen APICMakeLists.txt: Updated to include.mmfiles in the macOS buildType of change
How Has This Been Tested?
NSScreen.localizedName:Testing Checklist
Checklist