diff options
| author | Michael Maltese <michaeljosephmaltese@gmail.com> | 2017-04-15 19:23:19 -0700 |
|---|---|---|
| committer | Michael Maltese <michaeljosephmaltese@gmail.com> | 2017-04-15 19:34:42 -0700 |
| commit | 5298328cb175a17eb9ea534a9d07dc57b42d2d42 (patch) | |
| tree | 1a0bcdbc85ba3045cf0ff92fc7332ef9b15a5011 /Source/Core/Common/GL/GLInterface | |
| parent | a389ae0711142d8c5c996fda3d1e6c5731d71de3 (diff) | |
Add headless support on macOS
Diffstat (limited to 'Source/Core/Common/GL/GLInterface')
| -rw-r--r-- | Source/Core/Common/GL/GLInterface/AGL.mm | 70 |
1 files changed, 38 insertions, 32 deletions
diff --git a/Source/Core/Common/GL/GLInterface/AGL.mm b/Source/Core/Common/GL/GLInterface/AGL.mm index 78b2db2ea4..594a854f31 100644 --- a/Source/Core/Common/GL/GLInterface/AGL.mm +++ b/Source/Core/Common/GL/GLInterface/AGL.mm @@ -14,22 +14,6 @@ void cInterfaceAGL::Swap() // Call browser: Core.cpp:EmuThread() > main.cpp:Video_Initialize() bool cInterfaceAGL::Create(void* window_handle, bool core) { - cocoaWin = reinterpret_cast<NSView*>(window_handle); - NSSize size = [cocoaWin frame].size; - - // Enable high-resolution display support. - [cocoaWin setWantsBestResolutionOpenGLSurface:YES]; - - NSWindow* window = [cocoaWin window]; - - float scale = [window backingScaleFactor]; - size.width *= scale; - size.height *= scale; - - // Control window size and picture scaling - s_backbuffer_width = size.width; - s_backbuffer_height = size.height; - NSOpenGLPixelFormatAttribute attr[] = {NSOpenGLPFADoubleBuffer, NSOpenGLPFAOpenGLProfile, core ? NSOpenGLProfileVersion3_2Core : NSOpenGLProfileVersionLegacy, @@ -49,15 +33,34 @@ bool cInterfaceAGL::Create(void* window_handle, bool core) return false; } - if (cocoaWin == nil) + if (window_handle) { - ERROR_LOG(VIDEO, "failed to create window"); - return false; - } + cocoaWin = reinterpret_cast<NSView*>(window_handle); + NSSize size = [cocoaWin frame].size; + + // Enable high-resolution display support. + [cocoaWin setWantsBestResolutionOpenGLSurface:YES]; - [window makeFirstResponder:cocoaWin]; - [cocoaCtx setView:cocoaWin]; - [window makeKeyAndOrderFront:nil]; + NSWindow* window = [cocoaWin window]; + + float scale = [window backingScaleFactor]; + size.width *= scale; + size.height *= scale; + + // Control window size and picture scaling + s_backbuffer_width = size.width; + s_backbuffer_height = size.height; + + if (cocoaWin == nil) + { + ERROR_LOG(VIDEO, "failed to create window"); + return false; + } + + [window makeFirstResponder:cocoaWin]; + [cocoaCtx setView:cocoaWin]; + [window makeKeyAndOrderFront:nil]; + } return true; } @@ -84,18 +87,21 @@ void cInterfaceAGL::Shutdown() void cInterfaceAGL::Update() { - NSWindow* window = [cocoaWin window]; - NSSize size = [cocoaWin frame].size; + if (cocoaWin) + { + NSWindow* window = [cocoaWin window]; + NSSize size = [cocoaWin frame].size; - float scale = [window backingScaleFactor]; - size.width *= scale; - size.height *= scale; + float scale = [window backingScaleFactor]; + size.width *= scale; + size.height *= scale; - if (s_backbuffer_width == size.width && s_backbuffer_height == size.height) - return; + if (s_backbuffer_width == size.width && s_backbuffer_height == size.height) + return; - s_backbuffer_width = size.width; - s_backbuffer_height = size.height; + s_backbuffer_width = size.width; + s_backbuffer_height = size.height; + } [cocoaCtx update]; } |
