8 #define LOC QString("DisplayOSX: ")
41 CGDisplayModeRef mode = CGDisplayCopyDisplayMode(disp);
50 m_resolution = QSize(
static_cast<int>(CGDisplayModeGetWidth(mode)),
51 static_cast<int>(CGDisplayModeGetHeight(mode)));
55 CGDisplayModeRelease(mode);
56 CGSize sizemm = CGDisplayScreenSize(disp);
57 m_physicalSize = QSize(
static_cast<int>(sizemm.width),
static_cast<int>(sizemm.height));
78 CFArrayRef modes = CGDisplayCopyAllDisplayModes(disp,
nullptr);
83 CGSize sizemm = CGDisplayScreenSize(disp);
85 for (
int i = 0; i < CFArrayGetCount(modes); ++i)
87 CGDisplayModeRef mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i);
88 double rate = CGDisplayModeGetRefreshRate(mode);
89 bool interlaced = CGDisplayModeGetIOFlags(mode) & kDisplayModeInterlacedFlag;
90 int width =
static_cast<int>(CGDisplayModeGetWidth(mode));
91 int height =
static_cast<int>(CGDisplayModeGetHeight(mode));
96 LOG(VB_PLAYBACK, LOG_INFO,
LOC + QString(
"Ignoring interlaced mode %1x%2 %3i")
97 .arg(width).arg(height).arg(rate, 2,
'f', 2,
'0'));
101 QSize resolution(width, height);
103 if (screen_map.find(key) == screen_map.end())
104 screen_map[key] =
MythDisplayMode(resolution, QSize(sizemm.width, sizemm.height),
107 screen_map[key].AddRefreshRate(rate);
113 for (
auto it = screen_map.begin(); screen_map.end() != it; ++it)
128 auto rate =
static_cast<double>(NAN);
133 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Desired resolution and frame rate not found.");
140 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Failed to find mode");
145 CGDisplayCapture(disp);
146 CGDisplayConfigRef cfg;
147 CGBeginDisplayConfiguration(&cfg);
148 CGConfigureDisplayFadeEffect(cfg, 0.3f, 0.5f, 0, 0, 0);
149 CGDisplaySetDisplayMode(disp,
m_modeMap.value(mode),
nullptr);
150 CGError err = CGCompleteDisplayConfiguration(cfg, kCGConfigureForAppOnly);
151 CGDisplayRelease(disp);
152 return err == kCGErrorSuccess;
158 CGDisplayModeRelease(it.value());