diff options
author | Sven Gothel <[email protected]> | 2011-10-13 03:33:28 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-10-13 03:33:28 +0200 |
commit | 946c98fd196802755e9e13a9c5db75650a564466 (patch) | |
tree | c3aa9b62a1cea7e3a2dc8c306decbbbe273f3b4c /src/jogl/native/macosx/ContextUpdater.h | |
parent | 22f8e786219166019688ff2eea6ff9570c117544 (diff) |
JOGL/OSX: Properly utilize NSOpenGLContext update() via ContextUpdater, which only holds the 'update' state now.
Avoid calling updater() for every makeCurrent(), but if view's frame has changed only.
This solves the pixel flickering experienced on OSX.
- GLContextImpl:update() -> drawableUpdatedNotify() w/ comments
- ContextUpdater holds context, view, old view frame and the update state.
It doesn't issue NSOpenGLContext update() by itself, but allows querying and clearing the update flag.
- MacOSXOnscreenCGLContext impl drawableUpdatedNotify()
- register via ContextUpdater, and use it if available.
Diffstat (limited to 'src/jogl/native/macosx/ContextUpdater.h')
-rw-r--r-- | src/jogl/native/macosx/ContextUpdater.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/jogl/native/macosx/ContextUpdater.h b/src/jogl/native/macosx/ContextUpdater.h index f8ce93def..2483ec403 100644 --- a/src/jogl/native/macosx/ContextUpdater.h +++ b/src/jogl/native/macosx/ContextUpdater.h @@ -22,10 +22,13 @@ This notification is sent whenever an NSView that has an attached NSSurface chan #define UNLOCK_GL(func, line) [ContextUpdater unlock]; #endif -// gznote: OpenGL NOT thread safe - need to sync on update and paints - @interface ContextUpdater : NSObject { +@protected + NSView * view; + NSRect viewRect; + NSOpenGLContext *ctx; + BOOL viewUpdated; } + (void) lock; @@ -33,8 +36,10 @@ This notification is sent whenever an NSView that has an attached NSSurface chan + (void) unlock; + (void) unlockInFunction:(char *)func atLine:(int)line; -- (void) registerFor:(NSOpenGLContext *)context with: (NSView *)window; +- (id) initWithContext:(NSOpenGLContext *)context view: (NSView *)nsView; - (void) update:(NSNotification *)notification; +- (BOOL) needsUpdate; + @end |