As MacOS and iPad support sidecar now, CGGetActiveDisplayList provides the list of displays contains iPad when sidecar working, but how to check witch CGDisplay is the iPad?
CGDirectDisplayID displays[10] = {0};
uint32_t count;
CGError err = CGGetActiveDisplayList(10, displays, &count);
printf("%d %d\n", displays[0], displays[1]);
for (int i = 0; i < count; i++) {
CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displays[i]);
int32_t io = CGDisplayModeGetIODisplayModeID(mode);
uint32_t io_flag = CGDisplayModeGetIOFlags(mode);
bool usable = CGDisplayModeIsUsableForDesktopGUI(mode);
size_t width = CGDisplayModeGetPixelWidth(mode);
size_t height = CGDisplayModeGetPixelHeight(mode);
printf("i: %d io: %d usable: %s, io flag: 0x%x, pixel size: %dx%d\n",i, io, usable ? "T": "F", io_flag, width, height);
}
Output:
i: 0 io: 8 usable: T, io flag: 0x7, pixel size: 2880x1800
i: 1 io: 0 usable: T, io flag: 0x2000007, pixel size: 2576x1892