summaryrefslogtreecommitdiffstats
path: root/src/nativewindow/classes/javax
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2012-06-29 04:09:48 +0200
committerSven Gothel <[email protected]>2012-06-29 04:09:48 +0200
commitd10c7916a2444b6cb1cf45be3ccb3d6e91a2f1b4 (patch)
tree35565df0357b1c3fd96ecc5ac92c6dbf0ff45993 /src/nativewindow/classes/javax
parent89b09958ef1ad9cdc228517d2acaa0dc27aa559f (diff)
NativeSurface.unlockSurface(): Change fail-fast policy to fail safe tolerant
- This policy allows more simple destruction handling w/o validating on the top level. - Hence 'unlockSurface()' shall not throw any exception. - 'lockSurface()' keeps unchanges, clarified w/ explicit 'throws' declaration, ie will fail-fast.
Diffstat (limited to 'src/nativewindow/classes/javax')
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/NativeSurface.java8
-rw-r--r--src/nativewindow/classes/javax/media/nativewindow/ProxySurface.java2
2 files changed, 6 insertions, 4 deletions
diff --git a/src/nativewindow/classes/javax/media/nativewindow/NativeSurface.java b/src/nativewindow/classes/javax/media/nativewindow/NativeSurface.java
index c58b34b18..cec7d4ec3 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/NativeSurface.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/NativeSurface.java
@@ -83,10 +83,11 @@ public interface NativeSurface extends SurfaceUpdatedListener {
* @return {@link #LOCK_SUCCESS}, {@link #LOCK_SURFACE_CHANGED} or {@link #LOCK_SURFACE_NOT_READY}.
*
* @throws RuntimeException after timeout when waiting for the surface lock
+ * @throws NativeWindowException if native locking failed, maybe platform related
*
* @see com.jogamp.common.util.locks.RecursiveLock
*/
- public int lockSurface();
+ public int lockSurface() throws NativeWindowException, RuntimeException;
/**
* Unlock the surface of this native window
@@ -96,12 +97,13 @@ public interface NativeSurface extends SurfaceUpdatedListener {
* The implementation shall also invoke {@link AbstractGraphicsDevice#unlock()}
* for the final unlock (recursive count zero).<P>
*
- * @throws RuntimeException if surface is not locked
+ * The implementation shall be fail safe, i.e. tolerant in case the native resources
+ * are already released / unlocked. In this case the implementation shall simply ignore the call.
*
* @see #lockSurface
* @see com.jogamp.common.util.locks.RecursiveLock
*/
- public void unlockSurface() throws NativeWindowException ;
+ public void unlockSurface();
/**
* Query if surface is locked by another thread, i.e. not the current one.
diff --git a/src/nativewindow/classes/javax/media/nativewindow/ProxySurface.java b/src/nativewindow/classes/javax/media/nativewindow/ProxySurface.java
index c8cd78d82..1dabc3dcd 100644
--- a/src/nativewindow/classes/javax/media/nativewindow/ProxySurface.java
+++ b/src/nativewindow/classes/javax/media/nativewindow/ProxySurface.java
@@ -123,7 +123,7 @@ public abstract class ProxySurface implements NativeSurface {
}
@Override
- public int lockSurface() throws NativeWindowException {
+ public int lockSurface() throws NativeWindowException, RuntimeException {
surfaceLock.lock();
int res = surfaceLock.getHoldCount() == 1 ? LOCK_SURFACE_NOT_READY : LOCK_SUCCESS; // new lock ?