X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b6ccc13c2fd78a1165782fd5b5bdd2950fb8fb2e..52cda80e1c94758a720d48c5b9743dbb18764cb6:/src/osx/carbon/glcanvas.cpp diff --git a/src/osx/carbon/glcanvas.cpp b/src/osx/carbon/glcanvas.cpp index 4084a19ecb..9a6226dd9a 100644 --- a/src/osx/carbon/glcanvas.cpp +++ b/src/osx/carbon/glcanvas.cpp @@ -77,11 +77,6 @@ void WXGLDestroyContext( WXGLContext context ) } } -void WXGLSwapBuffers( WXGLContext context ) -{ - aglSwapBuffers(context); -} - WXGLContext WXGLGetCurrentContext() { return aglGetCurrentContext(); @@ -268,7 +263,7 @@ bool wxGLContext::SetCurrent(const wxGLCanvas& win) const GLint bufnummer = win.GetAglBufferName(); aglSetInteger(m_glContext, AGL_BUFFER_NAME, &bufnummer); //win.SetLastContext(m_glContext); - + const_cast(win).SetViewport(); if ( !aglSetDrawable(m_glContext, drawable) ) @@ -286,19 +281,19 @@ bool wxGLContext::SetCurrent(const wxGLCanvas& win) const /* -sharing contexts under AGL is not straightforward, to quote from +sharing contexts under AGL is not straightforward, to quote from http://lists.apple.com/archives/mac-opengl/2003/Jan/msg00402.html : -In Carbon OpenGL (AGL) you would use call aglSetInteger to setup a -buffer name and attached each context to that same name. From AGL +In Carbon OpenGL (AGL) you would use call aglSetInteger to setup a +buffer name and attached each context to that same name. From AGL you can do: GLint id = 1; ctx1 = aglCreateContext... aglSetInteger(ctx1, AGL_BUFFER_NAME, &id); // create name -aglAttachDrawable (ctx1,...); // create surface with associated with +aglAttachDrawable (ctx1,...); // create surface with associated with name (first time) ctx2 = aglCreateContext... aglSetInteger(ctx2, AGL_BUFFER_NAME, &id); // uses previously created name @@ -320,7 +315,7 @@ context behavior. */ /* -so what I'm doing is to have a dummy aglContext attached to a wxGLCanvas, +so what I'm doing is to have a dummy aglContext attached to a wxGLCanvas, assign it a buffer number */ @@ -348,8 +343,8 @@ bool wxGLCanvas::Create(wxWindow *parent, static GLint gCurrentBufferName = 1; m_bufferName = gCurrentBufferName++; - aglSetInteger (m_dummyContext, AGL_BUFFER_NAME, &m_bufferName); - + aglSetInteger (m_dummyContext, AGL_BUFFER_NAME, &m_bufferName); + AGLDrawable drawable = (AGLDrawable)GetWindowPort(MAC_WXHWND(MacGetTopLevelWindowRef())); aglSetDrawable(m_dummyContext, drawable); @@ -362,11 +357,20 @@ wxGLCanvas::~wxGLCanvas() { if ( m_glFormat ) WXGLDestroyPixelFormat(m_glFormat); - + if ( m_dummyContext ) WXGLDestroyContext(m_dummyContext); } +bool wxGLCanvas::SwapBuffers() +{ + WXGLContext context = WXGLGetCurrentContext(); + wxCHECK_MSG(context, false, wxT("should have current context")); + + aglSwapBuffers(context); + return true; +} + void wxGLCanvas::SetViewport() { if ( !m_needsUpdate )