Use correct back buffer size when creating a new context and going

straight into fullscreen
This commit is contained in:
kappaOne 2012-12-09 15:39:26 +00:00
parent c2081c5c1a
commit 2cc6affcd1
2 changed files with 17 additions and 3 deletions

View file

@ -431,6 +431,7 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXDisplay_nCreateWindow(JNIE
[[NSApplication sharedApplication] setDelegate:window_info->view];
window_info->display_rect = NSMakeRect(x, y, width, height);
if (!fullscreen) {
@ -444,8 +445,6 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXDisplay_nCreateWindow(JNIE
default_window_mask |= NSResizableWindowMask;
}
window_info->display_rect = NSMakeRect(x, y, width, height);
window_info->window = (MacOSXKeyableWindow*)[[NSApplication sharedApplication] mainWindow];
if (window_info->window == nil) {
window_info->window = [[MacOSXKeyableWindow alloc] initWithContentRect:window_info->display_rect styleMask:default_window_mask backing:NSBackingStoreBuffered defer:YES];
@ -464,7 +463,7 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXDisplay_nCreateWindow(JNIE
}
else {
// set a fixed backbuffer size for fullscreen
CGLContextObj cgcontext = (CGLContextObj)[[window_info->view openGLContext] CGLContextObj];
CGLContextObj cgcontext = (CGLContextObj)[window_info->context CGLContextObj];
GLint dim[2] = {width, height};
CGLSetParameter(cgcontext, kCGLCPSurfaceBackingSize, dim);
CGLEnable(cgcontext, kCGLCESurfaceBackingSize);

View file

@ -75,6 +75,21 @@ JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_MacOSXContextImplementation_nCre
throwException(env, "Could not create context");
return NULL;
}
if (peer_info->window_info->fullscreen) {
// set a fixed backbuffer size for fullscreen
CGLContextObj cgcontext = (CGLContextObj)[context CGLContextObj];
NSSize displaySize = peer_info->window_info->display_rect.size;
GLint dim[2] = {displaySize.width, displaySize.height};
CGLSetParameter(cgcontext, kCGLCPSurfaceBackingSize, dim);
CGLEnable(cgcontext, kCGLCESurfaceBackingSize);
}
else {
// disable any fixed backbuffer size to allow resizing
CGLContextObj cgcontext = (CGLContextObj)[context CGLContextObj];
CGLDisable(cgcontext, kCGLCESurfaceBackingSize);
}
[peer_info->window_info->view setOpenGLContext:context];
peer_info->window_info->context = context;
context_info = (MacOSXContext *)(*env)->GetDirectBufferAddress(env, context_handle);