mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-29 16:20:11 -04:00
Merge branch 'release/1.10.x'
This commit is contained in:
commit
fe8ed9dec7
@ -80,10 +80,10 @@ makepanda\makepanda.bat --everything --installer --msvc-version=14.3 --windows-s
|
||||
When the build succeeds, it will produce an .exe file that you can use to
|
||||
install Panda3D on your system.
|
||||
|
||||
Note: you may choose to remove --no-eigen and build with Eigen support in
|
||||
**Note:** you may choose to remove `--no-eigen` and build with Eigen support in
|
||||
order to improve runtime performance. However, this will cause the build to
|
||||
take hours to complete, as Eigen is a heavily template-based library, and the
|
||||
the MSVC compiler does not perform well under these circumstances.
|
||||
MSVC compiler does not perform well under those circumstances.
|
||||
|
||||
Linux
|
||||
-----
|
||||
|
@ -99,7 +99,7 @@ CocoaGraphicsWindow(GraphicsEngine *engine, GraphicsPipe *pipe,
|
||||
if (NSApp == nil) {
|
||||
[CocoaPandaApp sharedApplication];
|
||||
|
||||
CocoaPandaAppDelegate *delegate = [[CocoaPandaAppDelegate alloc] init];
|
||||
CocoaPandaAppDelegate *delegate = [[CocoaPandaAppDelegate alloc] initWithEngine:engine];
|
||||
[NSApp setDelegate:delegate];
|
||||
|
||||
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
|
||||
@ -209,17 +209,15 @@ begin_frame(FrameMode mode, Thread *current_thread) {
|
||||
cocoagsg->lock_context();
|
||||
|
||||
// Set the drawable.
|
||||
if (_properties.get_fullscreen()) {
|
||||
if (_properties.get_fullscreen() && !is_arm64_mac()) {
|
||||
// Fullscreen. Note that this call doesn't work with the newer
|
||||
// Metal-based OpenGL drivers.
|
||||
if (!is_arm64_mac()) {
|
||||
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;
|
||||
}
|
||||
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
|
||||
|
@ -14,9 +14,17 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AppKit/AppKit.h>
|
||||
|
||||
// Cocoa is picky about where and when certain methods are called in the initialization process.
|
||||
@interface CocoaPandaAppDelegate : NSObject<NSApplicationDelegate>
|
||||
class GraphicsEngine;
|
||||
|
||||
// Cocoa is picky about where and when certain methods are called in the initialization process.
|
||||
@interface CocoaPandaAppDelegate : NSObject<NSApplicationDelegate> {
|
||||
@private
|
||||
GraphicsEngine *_engine;
|
||||
}
|
||||
|
||||
- (id) initWithEngine:(GraphicsEngine *)engine;
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)notification;
|
||||
- (BOOL)applicationShouldTerminate:(NSApplication *)app;
|
||||
- (void)applicationWillTerminate:(NSNotification *)notification;
|
||||
|
||||
@end
|
||||
|
@ -12,12 +12,44 @@
|
||||
*/
|
||||
|
||||
#import "cocoaPandaAppDelegate.h"
|
||||
#include "graphicsEngine.h"
|
||||
|
||||
@implementation CocoaPandaAppDelegate
|
||||
|
||||
- (id) initWithEngine:(GraphicsEngine *)engine {
|
||||
|
||||
if (self = [super init]) {
|
||||
_engine = engine;
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
|
||||
// This only seems to work when called here.
|
||||
[NSApp activateIgnoringOtherApps:YES];
|
||||
}
|
||||
|
||||
- (BOOL)applicationShouldTerminate:(NSApplication *)app {
|
||||
if (cocoadisplay_cat.is_debug()) {
|
||||
cocoadisplay_cat.debug()
|
||||
<< "Received applicationShouldTerminate, closing all Cocoa windows\n";
|
||||
}
|
||||
// Call performClose on all the windows. This should make ShowBase shut down.
|
||||
for (NSWindow *window in [app windows]) {
|
||||
[window performClose:nil];
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
- (void)applicationWillTerminate:(NSNotification *)notification {
|
||||
// The application is about to be closed, tell the graphics engine to close
|
||||
// all the windows.
|
||||
if (cocoadisplay_cat.is_debug()) {
|
||||
cocoadisplay_cat.debug()
|
||||
<< "Received applicationWillTerminate, removing all windows\n";
|
||||
}
|
||||
_engine->remove_all_windows();
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -30,6 +30,7 @@ class CocoaGraphicsWindow;
|
||||
- (void)windowDidBecomeKey:(NSNotification *)notification;
|
||||
- (void)windowDidResignKey:(NSNotification *)notification;
|
||||
- (BOOL)windowShouldClose:(id)sender;
|
||||
- (void)windowWillClose:(id)sender;
|
||||
|
||||
// TODO: handle fullscreen on Lion.
|
||||
|
||||
|
@ -51,11 +51,19 @@
|
||||
}
|
||||
|
||||
- (BOOL) windowShouldClose:(id)sender {
|
||||
bool should_close = _graphicsWindow->handle_close_request();
|
||||
if (should_close) {
|
||||
_graphicsWindow->handle_close_event();
|
||||
if (cocoadisplay_cat.is_debug()) {
|
||||
cocoadisplay_cat.debug()
|
||||
<< "Received windowShouldClose for window " << _graphicsWindow << "\n";
|
||||
}
|
||||
return should_close;
|
||||
return _graphicsWindow->handle_close_request();
|
||||
}
|
||||
|
||||
- (void) windowWillClose:(id)sender {
|
||||
if (cocoadisplay_cat.is_debug()) {
|
||||
cocoadisplay_cat.debug()
|
||||
<< "Received windowWillClose for window " << _graphicsWindow << "\n";
|
||||
}
|
||||
_graphicsWindow->handle_close_event();
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -35,8 +35,8 @@ OdeTriMeshGeom(OdeSpace &space, OdeTriMeshData &data) :
|
||||
|
||||
OdeTriMeshGeom::
|
||||
OdeTriMeshGeom(const OdeTriMeshGeom ©) :
|
||||
OdeGeom(dCreateTriMesh(nullptr, copy.get_data_id(), nullptr, nullptr, nullptr)) {
|
||||
OdeTriMeshData::link_data(_id, copy.get_data());
|
||||
OdeGeom(dCreateTriMesh(nullptr, copy.get_tri_mesh_data_id(), nullptr, nullptr, nullptr)) {
|
||||
OdeTriMeshData::link_data(_id, copy.get_tri_mesh_data());
|
||||
}
|
||||
|
||||
OdeTriMeshGeom::
|
||||
|
Loading…
x
Reference in New Issue
Block a user