Created
September 30, 2012 16:57
-
-
Save aont/3807585 to your computer and use it in GitHub Desktop.
Mac Display
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
| #include <ApplicationServices/ApplicationServices.h> | |
| #include <vector> | |
| // void MyDisplaySwitchToMode (CGDirectDisplayID display, CFDictionaryRef mode) | |
| // { | |
| // CGDisplayConfigRef config; // 1 | |
| // CGBeginDisplayConfiguration (&config); // 2 | |
| // CGConfigureDisplayMode (config, display, mode); // 3 | |
| // CGCompleteDisplayConfiguration (config, kCGConfigureForSession ); // 5 | |
| // } | |
| int main(int argc, char * argv[]) | |
| { | |
| CGError cgret; | |
| uint32_t num_displays = 0; | |
| cgret = CGGetActiveDisplayList(0, NULL, &num_displays); | |
| //cgret = CGGetOnlineDisplayList(0, NULL, &num_displays); | |
| std::vector<CGDirectDisplayID> displays(num_displays); | |
| cgret = CGGetActiveDisplayList(num_displays, displays.begin().base(), &num_displays); | |
| //cgret = CGGetOnlineDisplayList(num_displays, displays.begin().base(), &num_displays); | |
| fprintf(stderr, "num_displays: %d\n", num_displays); | |
| for(uint32_t d=0; d<num_displays; ++d) { | |
| fprintf(stderr, "display id: %u\n", displays[d]); | |
| CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displays[d]); | |
| uint32_t ioflags = CGDisplayModeGetIOFlags(mode); | |
| fprintf(stderr, " ioflags: %d\n", ioflags); | |
| bool gui = CGDisplayModeIsUsableForDesktopGUI(mode); | |
| fprintf(stderr, " gui: %d\n", gui); | |
| CGDisplayModeRelease(mode); | |
| } | |
| // cgret = CGDisplayCaptureWithOptions(displays[1], 0); | |
| // sleep(10); | |
| // cgret = CGDisplayRelease (displays[1]); | |
| if(false) { | |
| fprintf(stderr, "all display modes\n"); | |
| CFIndex index, count; | |
| CFArrayRef modeList; | |
| modeList = CGDisplayCopyAllDisplayModes (displays[1], NULL); | |
| count = CFArrayGetCount (modeList); | |
| for (index = 0; index < count; index++) { | |
| CGDisplayModeRef mode; | |
| mode = (CGDisplayModeRef)CFArrayGetValueAtIndex (modeList, index); | |
| uint32_t ioflags = CGDisplayModeGetIOFlags(mode); | |
| fprintf(stderr, " ioflags: %d\n", ioflags); | |
| bool gui = CGDisplayModeIsUsableForDesktopGUI(mode); | |
| fprintf(stderr, " gui: %d\n", gui); | |
| if(ioflags==513) { | |
| // CGDisplaySetDisplayMode(displays[1], mode, NULL); | |
| // sleep(10); | |
| // CGDisplayModeRelease(mode); | |
| // break; | |
| } | |
| else { | |
| CGDisplayModeRelease(mode); | |
| } | |
| } | |
| CFRelease(modeList); | |
| } | |
| CGDisplayConfigRef config; | |
| CGDisplayErr err = noErr; | |
| err = CGBeginDisplayConfiguration(&config); | |
| err = CGConfigureDisplayMirrorOfDisplay(config, displays[0], kCGNullDirectDisplay ); | |
| err = CGCompleteDisplayConfiguration(config, kCGConfigurePermanently); | |
| // int h = 1280; //horizontal resolution | |
| // int v = 800; //vertical resolution | |
| // CGDirectDisplayID mainDisplay; //ID of main display | |
| // mainDisplay = CGMainDisplayID(); | |
| // CFDictionaryRef switchMode; //mode to swich to | |
| // switchMode = CGDisplayBestModeForParameters(displays[1], 32, 0, 0, NULL); | |
| // MyDisplaySwitchToMode(displays[1], switchMode); | |
| return 0; | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment