unsigned int setDisplayToMode(CGDirectDisplayID display, CGDisplayModeRef mode) { CGError rc; CGDisplayConfigRef config; rc = CGBeginDisplayConfiguration(&config); if (rc != kCGErrorSuccess) { NSLog(CFSTR("Error: failed CGBeginDisplayConfiguration err(%u)"), rc); return 0; } rc = CGConfigureDisplayWithDisplayMode(config, display, mode, NULL); if (rc != kCGErrorSuccess) { NSLog(CFSTR("Error: failed CGConfigureDisplayWithDisplayMode err(%u)"), rc); return 0; } rc = CGCompleteDisplayConfiguration(config, kCGConfigurePermanently); if (rc != kCGErrorSuccess) { NSLog(CFSTR("Error: failed CGCompleteDisplayConfiguration err(%u)"), rc); return 0; } return 1; }
void UIDisplay::SwitchToMode(int Index) { if (Index < 0 || Index >= m_modes.size() || !gDisplayModes) return; int index = m_modes[Index].m_index; if (index < 0 || index >= CFArrayGetCount(gDisplayModes)) return; CGDisplayModeRef mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(gDisplayModes, index); CGDisplayConfigRef config; CGBeginDisplayConfiguration(&config); CGDirectDisplayID display = GetOSXDisplay(m_widget->winId()); CGConfigureDisplayFadeEffect(config, 0.3f, 0.5f, 0, 0, 0); CGConfigureDisplayWithDisplayMode(config, display, mode, NULL); if (CGCompleteDisplayConfiguration(config, kCGConfigureForAppOnly)) LOG(VB_GENERAL, LOG_ERR, "Failed to complete display configuration"); else m_refreshRate = m_modes[Index].m_rate; }