|
|
@@ -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,29 +188,17 @@ 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.
|
|
|
- if ([cocoagsg->_context view] != _view) {
|
|
|
- // XXX I'm not 100% sure that changing the view requires it to update.
|
|
|
- _context_needs_update = true;
|
|
|
- [cocoagsg->_context setView:_view];
|
|
|
+ // 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.
|
|
|
+ if ([cocoagsg->_context view] != _view) {
|
|
|
+ // XXX I'm not 100% sure that changing the view requires it to update.
|
|
|
+ _context_needs_update = true;
|
|
|
+ [cocoagsg->_context setView:_view];
|
|
|
|
|
|
- if (cocoadisplay_cat.is_spam()) {
|
|
|
- cocoadisplay_cat.spam()
|
|
|
- << "Switching context to view " << _view << "\n";
|
|
|
- }
|
|
|
+ if (cocoadisplay_cat.is_spam()) {
|
|
|
+ cocoadisplay_cat.spam()
|
|
|
+ << "Switching context to view " << _view << "\n";
|
|
|
}
|
|
|
}
|
|
|
|