cocoadisplay: Fix fullscreen regression on Intel macs

Partially backs out 619050bb32a6b154e48af968ca9372278292cd61

Fixes #1316 (for good this time hopefully)
This commit is contained in:
rdb 2022-12-08 15:20:14 +01:00
parent 602bd3e023
commit dae26c2e4b

View File

@ -43,35 +43,12 @@
#import <OpenGL/OpenGL.h>
#import <Carbon/Carbon.h>
#include <sys/sysctl.h>
TypeHandle CocoaGraphicsWindow::_type_handle;
#ifndef MAC_OS_X_VERSION_10_15
#define NSAppKitVersionNumber10_14 1671
#endif
/**
* Returns true if this is an arm64-based mac.
*/
static int is_arm64_mac() {
#ifdef __aarch64__
return 1;
#elif defined(__x86_64__)
// Running in Rosetta 2?
static int ret = -1;
if (ret < 0) {
size_t size = sizeof(ret);
if (sysctlbyname("sysctl.proc_translated", &ret, &size, nullptr, 0) == -1) {
ret = 0;
}
}
return ret;
#else
return 0;
#endif
}
/**
*
*/
@ -211,17 +188,6 @@ begin_frame(FrameMode mode, Thread *current_thread) {
cocoagsg->lock_context();
// Set the drawable.
if (_properties.get_fullscreen() && !is_arm64_mac()) {
// Fullscreen. Note that this call doesn't work with the newer
// Metal-based OpenGL drivers.
CGLError err = CGLSetFullScreenOnDisplay((CGLContextObj) [cocoagsg->_context CGLContextObj], CGDisplayIDToOpenGLDisplayMask(_display));
if (err != kCGLNoError) {
cocoadisplay_cat.error()
<< "Failed call to CGLSetFullScreenOnDisplay with display mask "
<< CGDisplayIDToOpenGLDisplayMask(_display) << ": " << CGLErrorString(err) << "\n";
return false;
}
} else {
// Although not recommended, it is technically possible to use the same
// context with multiple different-sized windows. If that happens, the
// context needs to be updated accordingly.
@ -235,7 +201,6 @@ begin_frame(FrameMode mode, Thread *current_thread) {
<< "Switching context to view " << _view << "\n";
}
}
}
// Update the context if necessary, to make it reallocate buffers etc.
if (_context_needs_update) {