Fixed bug 1958 - Cocoa SwapWindow doesn't swap the specified window
Ryan C. Gordon We have this in Cocoa_GL_SwapWindow()... /* FIXME: Do we need to get the context for the window? */ [[NSOpenGLContext currentContext] flushBuffer]; ...which means if the current GL context is not the one in (window), we swap a different one than requested. Right now, we don't store information about which context is assigned to which window, and the OS doesn't give you a way to retrieve it from an NSView. We would have to track this per-window during SDL_GL_MakeCurrent() (and SDL_GL_CreateContext) calls.
This commit is contained in:
parent
ca37b8fd83
commit
b5145bcf7f
2 changed files with 5 additions and 3 deletions
|
@ -212,6 +212,7 @@ Cocoa_GL_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context)
|
|||
SDL_WindowData *windowdata = (SDL_WindowData *)window->driverdata;
|
||||
NSOpenGLContext *nscontext = (NSOpenGLContext *)context;
|
||||
|
||||
windowdata->nscontext = nscontext;
|
||||
if ([nscontext view] != [windowdata->nswindow contentView]) {
|
||||
[nscontext setView:[windowdata->nswindow contentView]];
|
||||
[nscontext update];
|
||||
|
@ -272,12 +273,12 @@ void
|
|||
Cocoa_GL_SwapWindow(_THIS, SDL_Window * window)
|
||||
{
|
||||
NSAutoreleasePool *pool;
|
||||
NSOpenGLContext *nscontext;
|
||||
SDL_WindowData *windowdata = (SDL_WindowData *)window->driverdata;
|
||||
NSOpenGLContext *nscontext = windowdata->nscontext;
|
||||
|
||||
pool = [[NSAutoreleasePool alloc] init];
|
||||
|
||||
/* FIXME: Do we need to get the context for the window? */
|
||||
[[NSOpenGLContext currentContext] flushBuffer];
|
||||
[nscontext flushBuffer];
|
||||
|
||||
[pool release];
|
||||
}
|
||||
|
|
|
@ -86,6 +86,7 @@ struct SDL_WindowData
|
|||
{
|
||||
SDL_Window *window;
|
||||
NSWindow *nswindow;
|
||||
NSOpenGLContext *nscontext;
|
||||
SDL_bool created;
|
||||
Cocoa_WindowListener *listener;
|
||||
struct SDL_VideoData *videodata;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue