int DisplayManagerWin::getCurrentDisplayMode(int display) { if (!isValidDisplay(display)) return -1; // grab current mode DEVMODEW modeInfo; ZeroMemory(&modeInfo, sizeof(modeInfo)); modeInfo.dmSize = sizeof(modeInfo); // grab current mode info if (!EnumDisplaySettingsW((LPCWSTR)m_displayAdapters[display].utf16(), ENUM_CURRENT_SETTINGS, &modeInfo)) { QLOG_ERROR() << "Failed to retrieve current mode"; return -1; } // check if current mode info matches on of our modes for (int modeId = 0; modeId < displays[display]->videoModes.size(); modeId++) { if (isModeMatching(modeInfo, displays[display]->videoModes[modeId])) return modeId; } return -1; }
int DisplayManagerRPI::getCurrentDisplayMode(int display) { if (!isValidDisplay(display)) return -1; TV_GET_STATE_RESP_T tvstate; if (vc_tv_get_state(&tvstate)) return -1; for (int mode = 0; mode < m_displays[display]->m_videoModes.size(); mode++) { TV_SUPPORTED_MODE_NEW_T* tvmode = &m_modes[mode]; if (tvmode->width == tvstate.width && tvmode->height == tvstate.height && tvmode->frame_rate == tvstate.frame_rate && tvmode->scan_mode == tvstate.scan_mode) { bool ntsc = false; HDMI_PROPERTY_PARAM_T property; property.property = HDMI_PROPERTY_PIXEL_CLOCK_TYPE; property.param1 = 0; property.param2 = 0; if (!vc_tv_hdmi_get_property(&property)) ntsc = property.param1 == HDMI_PIXEL_CLOCK_TYPE_NTSC; return mode * 2 + (ntsc ? 1 : 0); } } return -1; }
bool DisplayManager::isValidDisplayMode(int display, int mode) { if (isValidDisplay(display)) if (mode >= 0 && mode < displays[display]->videoModes.size()) return true; return false; }
int DisplayManagerOSX::getCurrentDisplayMode(int display) { if (!isValidDisplay(display) || !m_osxDisplayModes[display]) return -1; CGDisplayModeRef currentMode = CGDisplayCopyDisplayMode(m_osxDisplays[display]); for (int mode = 0; mode < CFArrayGetCount(m_osxDisplayModes[display]); mode++) { if (currentMode == (CGDisplayModeRef)CFArrayGetValueAtIndex(m_osxDisplayModes[display], mode)) { CFRelease(currentMode); return mode; } } CFRelease(currentMode); return -1; };