From e587f2a724c79d50118f717cc29fba78cad0feeb Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Tue, 22 Feb 2011 14:21:29 +0100 Subject: NativeWindow NativeSurface lock/unlock Surface cleanup ; NEWT WindowImpl lock/unlock Surface fix - Rename lock to surfaceLock to determine it's use - NEWT's WindowImpl windowLock usage is not sufficient for lock/unlock surface. Using distinguished surfaceLock for proper recursion count on lock/unlock surface. --- .../javax/media/nativewindow/ProxySurface.java | 35 ++++++++++------------ .../jogamp/nativewindow/jawt/JAWTWindow.java | 20 ++++++------- 2 files changed, 25 insertions(+), 30 deletions(-) (limited to 'src/nativewindow/classes') diff --git a/src/nativewindow/classes/javax/media/nativewindow/ProxySurface.java b/src/nativewindow/classes/javax/media/nativewindow/ProxySurface.java index 386ba32f4..038580ce0 100644 --- a/src/nativewindow/classes/javax/media/nativewindow/ProxySurface.java +++ b/src/nativewindow/classes/javax/media/nativewindow/ProxySurface.java @@ -31,7 +31,7 @@ package javax.media.nativewindow; import com.jogamp.common.util.locks.RecursiveLock; public abstract class ProxySurface implements NativeSurface { - protected RecursiveLock recurLock = new RecursiveLock(); + protected RecursiveLock surfaceLock = new RecursiveLock(); protected AbstractGraphicsConfiguration config; protected long displayHandle; protected int height; @@ -44,14 +44,9 @@ public abstract class ProxySurface implements NativeSurface { displayHandle=cfg.getScreen().getDevice().getHandle(); } - public final void invalidate() { - recurLock.lock(); - try { - displayHandle = 0; - invalidateImpl(); - } finally { - recurLock.unlock(); - } + void invalidate() { + displayHandle = 0; + invalidateImpl(); } protected abstract void invalidateImpl(); @@ -90,8 +85,8 @@ public abstract class ProxySurface implements NativeSurface { } public int lockSurface() throws NativeWindowException { - recurLock.lock(); - int res = recurLock.getRecursionCount() == 0 ? LOCK_SURFACE_NOT_READY : LOCK_SUCCESS; + surfaceLock.lock(); + int res = surfaceLock.getRecursionCount() == 0 ? LOCK_SURFACE_NOT_READY : LOCK_SUCCESS; if ( LOCK_SURFACE_NOT_READY == res ) { try { @@ -106,7 +101,7 @@ public abstract class ProxySurface implements NativeSurface { } } finally { if (LOCK_SURFACE_NOT_READY >= res) { - recurLock.unlock(); + surfaceLock.unlock(); } } } @@ -114,9 +109,9 @@ public abstract class ProxySurface implements NativeSurface { } public final void unlockSurface() { - recurLock.validateLocked(); + surfaceLock.validateLocked(); - if (recurLock.getRecursionCount() == 0) { + if (surfaceLock.getRecursionCount() == 0) { final AbstractGraphicsDevice adevice = config.getScreen().getDevice(); try { unlockSurfaceImpl(); @@ -124,7 +119,7 @@ public abstract class ProxySurface implements NativeSurface { adevice.unlock(); } } - recurLock.unlock(); + surfaceLock.unlock(); } protected abstract int lockSurfaceImpl(); @@ -132,23 +127,23 @@ public abstract class ProxySurface implements NativeSurface { protected abstract void unlockSurfaceImpl() ; public final void validateSurfaceLocked() { - recurLock.validateLocked(); + surfaceLock.validateLocked(); } public final boolean isSurfaceLocked() { - return recurLock.isLocked(); + return surfaceLock.isLocked(); } public final boolean isSurfaceLockedByOtherThread() { - return recurLock.isLockedByOtherThread(); + return surfaceLock.isLockedByOtherThread(); } public final Thread getSurfaceLockOwner() { - return recurLock.getOwner(); + return surfaceLock.getOwner(); } public final int getSurfaceRecursionCount() { - return recurLock.getRecursionCount(); + return surfaceLock.getRecursionCount(); } public abstract String toString(); diff --git a/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTWindow.java b/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTWindow.java index 0f7f1ee62..781882f08 100644 --- a/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTWindow.java +++ b/src/nativewindow/classes/jogamp/nativewindow/jawt/JAWTWindow.java @@ -107,13 +107,13 @@ public abstract class JAWTWindow implements NativeWindow { // NativeSurface // - private RecursiveLock recurLock = new RecursiveLock(); + private RecursiveLock surfaceLock = new RecursiveLock(); protected abstract int lockSurfaceImpl() throws NativeWindowException; public final int lockSurface() throws NativeWindowException { - recurLock.lock(); - int res = recurLock.getRecursionCount() == 0 ? LOCK_SURFACE_NOT_READY : LOCK_SUCCESS; + surfaceLock.lock(); + int res = surfaceLock.getRecursionCount() == 0 ? LOCK_SURFACE_NOT_READY : LOCK_SUCCESS; if ( LOCK_SURFACE_NOT_READY == res ) { try { @@ -128,7 +128,7 @@ public abstract class JAWTWindow implements NativeWindow { } } finally { if (LOCK_SURFACE_NOT_READY >= res) { - recurLock.unlock(); + surfaceLock.unlock(); } } } @@ -138,9 +138,9 @@ public abstract class JAWTWindow implements NativeWindow { protected abstract void unlockSurfaceImpl() throws NativeWindowException; public final void unlockSurface() { - recurLock.validateLocked(); + surfaceLock.validateLocked(); - if (recurLock.getRecursionCount() == 0) { + if (surfaceLock.getRecursionCount() == 0) { final AbstractGraphicsDevice adevice = config.getScreen().getDevice(); try { unlockSurfaceImpl(); @@ -148,19 +148,19 @@ public abstract class JAWTWindow implements NativeWindow { adevice.unlock(); } } - recurLock.unlock(); + surfaceLock.unlock(); } public final boolean isSurfaceLockedByOtherThread() { - return recurLock.isLockedByOtherThread(); + return surfaceLock.isLockedByOtherThread(); } public final boolean isSurfaceLocked() { - return recurLock.isLocked(); + return surfaceLock.isLocked(); } public final Thread getSurfaceLockOwner() { - return recurLock.getOwner(); + return surfaceLock.getOwner(); } public final boolean surfaceSwap() { -- cgit v1.2.3