9 #define LOC QString("DisplayOSX: ")
42 CGDisplayModeRef mode = CGDisplayCopyDisplayMode(disp);
51 m_resolution = QSize(
static_cast<int>(CGDisplayModeGetWidth(mode)),
52 static_cast<int>(CGDisplayModeGetHeight(mode)));
56 CGDisplayModeRelease(mode);
57 CGSize sizemm = CGDisplayScreenSize(disp);
58 m_physicalSize = QSize(
static_cast<int>(sizemm.width),
static_cast<int>(sizemm.height));
79 CFArrayRef modes = CGDisplayCopyAllDisplayModes(disp,
nullptr);
84 CGSize sizemm = CGDisplayScreenSize(disp);
86 for (
int i = 0; i < CFArrayGetCount(modes); ++i)
88 CGDisplayModeRef mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, i);
89 double rate = CGDisplayModeGetRefreshRate(mode);
90 bool interlaced = CGDisplayModeGetIOFlags(mode) & kDisplayModeInterlacedFlag;
91 int width =
static_cast<int>(CGDisplayModeGetWidth(mode));
92 int height =
static_cast<int>(CGDisplayModeGetHeight(mode));
97 LOG(VB_PLAYBACK, LOG_INFO,
LOC + QString(
"Ignoring interlaced mode %1x%2 %3i")
98 .
arg(width).
arg(height).
arg(rate, 2,
'f', 2,
'0'));
102 QSize resolution(width, height);
104 if (screen_map.find(key) == screen_map.end())
105 screen_map[key] =
MythDisplayMode(resolution, QSize(sizemm.width, sizemm.height),
108 screen_map[key].AddRefreshRate(rate);
114 for (
auto it = screen_map.begin(); screen_map.end() != it; ++it)
129 auto rate =
static_cast<double>(NAN);
134 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Desired resolution and frame rate not found.");
141 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Failed to find mode");
146 CGDisplayCapture(disp);
147 CGDisplayConfigRef cfg;
148 CGBeginDisplayConfiguration(&cfg);
149 CGConfigureDisplayFadeEffect(cfg, 0.3
f, 0.5
f, 0, 0, 0);
150 CGDisplaySetDisplayMode(disp,
m_modeMap.value(mode),
nullptr);
151 CGError err = CGCompleteDisplayConfiguration(cfg, kCGConfigureForAppOnly);
152 CGDisplayRelease(disp);
153 return err == kCGErrorSuccess;
159 CGDisplayModeRelease(it.value());