Revision: 23789 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23789 Author: damien78 Date: 2009-10-12 18:51:36 +0200 (Mon, 12 Oct 2009)
Log Message: ----------- Cocoa : fix secondary window display bug issue Modified Paths: -------------- trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.h trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.mm Modified: trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.h =================================================================== --- trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.h 2009-10-12 16:34:55 UTC (rev 23788) +++ trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.h 2009-10-12 16:51:36 UTC (rev 23789) @@ -275,6 +275,9 @@ /** The mother SystemCocoa class to send events */ GHOST_SystemCocoa *m_systemCocoa; + /** The first created OpenGL context (for sharing display lists) */ + static NSOpenGLContext *s_firstOpenGLcontext; + NSCursor* m_customCursor; GHOST_TabletData m_tablet; Modified: trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.mm =================================================================== --- trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.mm 2009-10-12 16:34:55 UTC (rev 23788) +++ trunk/blender/intern/ghost/intern/GHOST_WindowCocoa.mm 2009-10-12 16:51:36 UTC (rev 23789) @@ -149,6 +149,8 @@ #pragma mark initialization / finalization +NSOpenGLContext* GHOST_WindowCocoa::s_firstOpenGLcontext = nil; + GHOST_WindowCocoa::GHOST_WindowCocoa( GHOST_SystemCocoa *systemCocoa, const STR_String& title, @@ -197,7 +199,7 @@ [pixelFormat release]; - m_openGLContext = [m_openGLView openGLContext]; + m_openGLContext = [m_openGLView openGLContext]; //This context will be replaced by the proper one just after [m_window setContentView:m_openGLView]; [m_window setInitialFirstResponder:m_openGLView]; @@ -229,9 +231,6 @@ { if (m_customCursor) delete m_customCursor; - /*if(ugly_hack==m_windowRef) ugly_hack= NULL; - - if(ugly_hack==NULL) setDrawingContextType(GHOST_kDrawingContextTypeNone);*/ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; [m_openGLView release]; @@ -670,12 +669,15 @@ case GHOST_kDrawingContextTypeOpenGL: if (!getValid()) break; - pixelFormat = [m_openGLView pixelFormat]; - tmpOpenGLContext = [[NSOpenGLContext alloc] initWithFormat:pixelFormat - shareContext:m_openGLContext]; - if (tmpOpenGLContext == nil) - success = GHOST_kFailure; - break; + pixelFormat = [m_openGLView pixelFormat]; + tmpOpenGLContext = [[NSOpenGLContext alloc] initWithFormat:pixelFormat + shareContext:s_firstOpenGLcontext]; + if (tmpOpenGLContext == nil) { + success = GHOST_kFailure; + break; + } + + if (!s_firstOpenGLcontext) s_firstOpenGLcontext = tmpOpenGLContext; #ifdef WAIT_FOR_VSYNC /* wait for vsync, to avoid tearing artifacts */ [tmpOpenGLContext setValues:1 forParameter:NSOpenGLCPSwapInterval]; @@ -683,7 +685,6 @@ [m_openGLView setOpenGLContext:tmpOpenGLContext]; [tmpOpenGLContext setView:m_openGLView]; - [m_openGLContext release]; m_openGLContext = tmpOpenGLContext; break; @@ -704,7 +705,12 @@ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; switch (m_drawingContextType) { case GHOST_kDrawingContextTypeOpenGL: - [m_openGLView clearGLContext]; + if (m_openGLContext) + { + [m_openGLView clearGLContext]; + if (s_firstOpenGLcontext == m_openGLContext) s_firstOpenGLcontext = nil; + m_openGLContext = nil; + } [pool drain]; return GHOST_kSuccess; case GHOST_kDrawingContextTypeNone: _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs