aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2019-12-04 22:38:45 +0100
committerSven Gothel <[email protected]>2019-12-04 22:38:45 +0100
commitd5ba4cae824087879a4857e20961a95da04eaebb (patch)
treeb8e85473ab02757a698813b09fb2629f8c4bd438
parent4665875ac4689885da3b4a4c45cde7c6886322e3 (diff)
NEWT: Align DisplayImpl.createPointerIcon(..) behavior; PointerIconImpl.validatedHandle() shall not create native resource.
Semantic cleanup for clarity and equal behavior Align DisplayImpl.createPointerIcon(..) behavior - return null handle of createPointerIconImplChecked(..) shall be accepted, no exception for neither of the two creation methods. PointerIconImpl.validatedHandle() shall not create native resource. - throws exception if handle is null (about to be used) - no native creation shall happen here. Display.PointerIcon.validate(): Removed, not used.
-rw-r--r--src/newt/classes/com/jogamp/newt/Display.java8
-rw-r--r--src/newt/classes/jogamp/newt/DisplayImpl.java17
-rw-r--r--src/newt/classes/jogamp/newt/PointerIconImpl.java31
3 files changed, 16 insertions, 40 deletions
diff --git a/src/newt/classes/com/jogamp/newt/Display.java b/src/newt/classes/com/jogamp/newt/Display.java
index d683eb9f2..de2f698c9 100644
--- a/src/newt/classes/com/jogamp/newt/Display.java
+++ b/src/newt/classes/com/jogamp/newt/Display.java
@@ -147,14 +147,6 @@ public abstract class Display {
boolean isValid();
/**
- * Returns true if instance {@link #isValid()} or validation was successful, otherwise false.
- * <p>
- * Validation, i.e. recreation, is required if instance became invalid, see {@link #isValid()}.
- * </p>
- */
- boolean validate();
-
- /**
* Destroys this instance.
* <p>
* Will be called automatically if it's {@link #getDisplay() associated Display} is destroyed.
diff --git a/src/newt/classes/jogamp/newt/DisplayImpl.java b/src/newt/classes/jogamp/newt/DisplayImpl.java
index 8037ffdce..62550ee0c 100644
--- a/src/newt/classes/jogamp/newt/DisplayImpl.java
+++ b/src/newt/classes/jogamp/newt/DisplayImpl.java
@@ -140,12 +140,8 @@ public abstract class DisplayImpl extends Display {
if( DEBUG_POINTER_ICON ) {
System.err.println("createPointerIconPNG.0: "+image+", handle: "+toHexString(handle)+", hot "+hotspot);
}
- if( 0 == handle ) {
- throw new IOException(exStr);
- }
- res[0] = new PointerIconImpl(DisplayImpl.this, image, hotspot, handle);
- if( DEBUG_POINTER_ICON ) {
- System.err.println("createPointerIconPNG.0: "+res[0]);
+ if( 0 != handle ) {
+ res[0] = new PointerIconImpl(DisplayImpl.this, image, hotspot, handle);
}
} catch (final Exception e) {
ex[0] = e;
@@ -161,11 +157,10 @@ public abstract class DisplayImpl extends Display {
}
throw new IOException(e);
}
- if( null == res[0] ) {
- throw new IOException(exStr);
- }
- synchronized(pointerIconList) {
- pointerIconList.add(res[0]);
+ if( null != res[0] ) {
+ synchronized(pointerIconList) {
+ pointerIconList.add(res[0]);
+ }
}
return res[0];
}
diff --git a/src/newt/classes/jogamp/newt/PointerIconImpl.java b/src/newt/classes/jogamp/newt/PointerIconImpl.java
index da72752fa..e0a47fed2 100644
--- a/src/newt/classes/jogamp/newt/PointerIconImpl.java
+++ b/src/newt/classes/jogamp/newt/PointerIconImpl.java
@@ -29,6 +29,7 @@ package jogamp.newt;
import java.nio.ByteBuffer;
+import com.jogamp.nativewindow.NativeWindowException;
import com.jogamp.nativewindow.util.DimensionImmutable;
import com.jogamp.nativewindow.util.PixelFormat;
import com.jogamp.nativewindow.util.PixelRectangle;
@@ -53,7 +54,6 @@ public class PointerIconImpl implements PointerIcon {
this.size = size;
this.pixels = pixels;
this.hotspot = hotspot;
-
this.handle=handle;
}
public PointerIconImpl(final DisplayImpl display, final PixelRectangle pixelrect, final PointImmutable hotspot, final long handle) {
@@ -84,21 +84,17 @@ public class PointerIconImpl implements PointerIcon {
return hashCode;
}
+ /**
+ * @return the native handle of this pointer icon, maybe {@code null}
+ */
public synchronized final long getHandle() { return handle; }
- public synchronized final long validatedHandle() {
- synchronized(display.pointerIconList) {
- if( !display.pointerIconList.contains(this) ) {
- display.pointerIconList.add(this);
- }
- }
+ /**
+ * @return the {@link #getHandle()} if not {@code null}, otherwise throws NativeWindowException
+ * @throws NativeWindowException if {@link #getHandle()} is {@code null}
+ */
+ public synchronized final long validatedHandle() throws NativeWindowException {
if( 0 == handle ) {
- try {
- handle = display.createPointerIconImpl(pixelformat, size.getWidth(), size.getHeight(), pixels, hotspot.getX(), hotspot.getY());
- return handle;
- } catch (final Exception e) {
- e.printStackTrace();
- return 0;
- }
+ throw new NativeWindowException("PointerIconImpl has null handle: "+this);
} else {
return handle;
}
@@ -111,13 +107,6 @@ public class PointerIconImpl implements PointerIcon {
public final ByteBuffer getPixels() { return pixels; }
@Override
public synchronized final boolean isValid() { return 0 != handle; }
- @Override
- public synchronized final boolean validate() {
- if( 0 == handle ) {
- return 0 != validatedHandle();
- }
- return true;
- }
@Override
public synchronized void destroy() {