Order of the Butterfly
Posts: 495 from 2003/7/25
From: Wroclaw, Poland
I have a slightly unusual question about display modes. Maybe I am trying to do something that is not really necessary, but I would still like to ask. I hope I can explain it clearly. :) :)
When I connect a TV to my PowerBook using DVI and enumerate all available display modes, the system returns a single list that contains modes for both displays: the internal PowerBook screen and the external TV.
This works correctly, but I would like to separate these modes into two groups - one group per display.
The problem is that I cannot determine which mode belongs to which monitor.
For example:
This belongs to the PowerBook internal display:
Code:
mode: 1440x960x32 (1083310162)
nameInfo: "Radeon9700Mob 24Bit 1440 x 960"
This belongs to the external TV:
Code:
mode: 1920x1080x32 (1083318353)
nameInfo: "Radeon9700Mob.1 24Bit 1920x1080"
The only visible difference is the device name (provided by NameInfo struct):
"Radeon9700Mob" vs
"Radeon9700Mob.1".
But I don’t want to "parse" the name and check if it ends with “.1”, because that is not safe or reliable. That feels like a hacky solution for lamers. ;)
I can not find any documented field that clearly associates a mode with a specific monitor, so parsing the name string does not feel like a reliable solution.
I tried querying additional information for each mode:
Code:
struct DimensionInfo dimensionInfo;
struct MonitorInfo monitorInfo;
struct NameInfo nameInfo;
ULONG dimensionInfoRes = GetDisplayInfoData(NULL, &dimensionInfo, sizeof(struct DimensionInfo), DTAG_DIMS, modeID);
ULONG monitorInfoRes = GetDisplayInfoData(NULL, &monitorInfo, sizeof(struct MonitorInfo), DTAG_MNTR, modeID);
ULONG nameInfoRes = GetDisplayInfoData(NULL, &nameInfo, sizeof(struct NameInfo), DTAG_NAME, modeID);
But neither
DimensionInfo nor
MonitorInfo seems to contain any identifier that links the mode to a specific display.
Is there a proper or recommended way to determine which display a mode belongs to?
All screen modes on my machine:
Code:
mode: 1440x960x8 (1083310080)
nameInfo: "Radeon9700Mob 8Bit 1440 x 960"
mode: 720x480x8 (1083310081)
nameInfo: "Radeon9700Mob 8Bit 720 x 480"
mode: 320x240x8 (1083310082)
nameInfo: "Radeon9700Mob 8Bit 320 x 240"
mode: 640x480x8 (1083310083)
nameInfo: "Radeon9700Mob 8Bit 640 x 480"
mode: 1440x960x8 (1083310095)
nameInfo: "Radeon: TestScreen"
mode: 1440x960x15 (1083310128)
nameInfo: "Radeon9700Mob 15Bit 1440 x 960"
mode: 720x480x15 (1083310129)
nameInfo: "Radeon9700Mob 15Bit 720 x 480"
mode: 320x240x15 (1083310130)
nameInfo: "Radeon9700Mob 15Bit 320 x 240"
mode: 640x480x15 (1083310131)
nameInfo: "Radeon9700Mob 15Bit 640 x 480"
mode: 800x600x15 (1083310132)
nameInfo: "Radeon9700Mob 15Bit 800 x 600"
mode: 1024x768x15 (1083310133)
nameInfo: "Radeon9700Mob 15Bit 1024 x 768"
mode: 1440x960x15 (1083310143)
nameInfo: "Radeon: TestScreen"
mode: 1440x960x16 (1083310144)
nameInfo: "Radeon9700Mob 16Bit 1440 x 960"
mode: 720x480x16 (1083310145)
nameInfo: "Radeon9700Mob 16Bit 720 x 480"
mode: 320x240x16 (1083310146)
nameInfo: "Radeon9700Mob 16Bit 320 x 240"
mode: 640x480x16 (1083310147)
nameInfo: "Radeon9700Mob 16Bit 640 x 480"
mode: 800x600x16 (1083310148)
nameInfo: "Radeon9700Mob 16Bit 800 x 600"
mode: 1024x768x16 (1083310149)
nameInfo: "Radeon9700Mob 16Bit 1024 x 768"
mode: 1440x960x16 (1083310159)
nameInfo: "Radeon: TestScreen"
mode: 720x480x32 (1083310160)
nameInfo: "Radeon9700Mob 24Bit 720 x 480"
mode: 320x240x32 (1083310161)
nameInfo: "Radeon9700Mob 24Bit 320 x 240"
mode: 1440x960x32 (1083310162)
nameInfo: "Radeon9700Mob 24Bit 1440 x 960"
mode: 640x480x32 (1083310163)
nameInfo: "Radeon9700Mob 24Bit 640 x 480"
mode: 800x600x32 (1083310164)
nameInfo: "Radeon9700Mob 24Bit 800 x 600"
mode: 1024x768x32 (1083310165)
nameInfo: "Radeon9700Mob 24Bit 1024 x 768"
mode: 720x480x32 (1083310175)
nameInfo: "Radeon: TestScreen"
mode: 3840x2160x8 (1083318272)
nameInfo: "Radeon9700Mob.1 8Bit 3840x2160"
mode: 1920x1080x8 (1083318273)
nameInfo: "Radeon9700Mob.1 8Bit 1920x1080"
mode: 3840x2160x15 (1083318320)
nameInfo: "Radeon9700Mob.1 15Bit 3840x2160"
mode: 1920x1080x15 (1083318321)
nameInfo: "Radeon9700Mob.1 15Bit 1920x1080"
mode: 3840x2160x16 (1083318336)
nameInfo: "Radeon9700Mob.1 16Bit 3840x2160"
mode: 1920x1080x16 (1083318337)
nameInfo: "Radeon9700Mob.1 16Bit 1920x1080"
mode: 3840x2160x32 (1083318352)
nameInfo: "Radeon9700Mob.1 24Bit 3840x2160"
mode: 1920x1080x32 (1083318353)
nameInfo: "Radeon9700Mob.1 24Bit 1920x1080"