summaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp/common
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2013-01-19 03:57:52 +0100
committerSven Gothel <[email protected]>2013-01-19 03:57:52 +0100
commit039ff52d12f5dd750494fb2dea580946291bdb7e (patch)
tree120fedf7cc88637a087c51ae801d857c3ee82223 /src/java/com/jogamp/common
parent9bcec728aebc74c81cdd7c92aba5ac2706a7da19 (diff)
Modified Java 1.5 Buffers patch 2b7d1b1d25cb2cd73311ec9159b465f0391bf5e0 - May break GCJ/ECJ .. needs to be revised.
- Adding JAVA_6 in PlatformPropsImpl - Buffers.isDirect() chooses fast-path iff JAVA_6, otherwise using reflection (GCJ/ECJ) - Adding JAVA_6 info in VersionUtil - API doc: Refine JAVA_SE and JAVA_6 spec. TODO: In case GCJ etc is unable to compile the JAVA_6 code even though it uses a static condition (probably not), We have to wrap isStatic in an own class, one for JAVA_6 and one for <= 1.5. This will be a good exercise for further issues we may have w/ Java <= 1.5.
Diffstat (limited to 'src/java/com/jogamp/common')
-rwxr-xr-xsrc/java/com/jogamp/common/nio/Buffers.java46
-rw-r--r--src/java/com/jogamp/common/os/Platform.java15
-rw-r--r--src/java/com/jogamp/common/util/VersionUtil.java3
3 files changed, 43 insertions, 21 deletions
diff --git a/src/java/com/jogamp/common/nio/Buffers.java b/src/java/com/jogamp/common/nio/Buffers.java
index 4a5255e..283cf07 100755
--- a/src/java/com/jogamp/common/nio/Buffers.java
+++ b/src/java/com/jogamp/common/nio/Buffers.java
@@ -41,6 +41,8 @@ package com.jogamp.common.nio;
import java.nio.*;
+import jogamp.common.os.PlatformPropsImpl;
+
import com.jogamp.common.util.ValueConv;
/**
@@ -359,25 +361,31 @@ public class Buffers {
if (buf == null) {
return true;
}
- if (buf instanceof ByteBuffer) {
- return ((ByteBuffer) buf).isDirect();
- } else if (buf instanceof IntBuffer) {
- return ((IntBuffer) buf).isDirect();
- } else if (buf instanceof ShortBuffer) {
- return ((ShortBuffer) buf).isDirect();
- } else if (buf instanceof FloatBuffer) {
- return ((FloatBuffer) buf).isDirect();
- } else if (buf instanceof DoubleBuffer) {
- return ((DoubleBuffer) buf).isDirect();
- } else if (buf instanceof LongBuffer) {
- return ((LongBuffer) buf).isDirect();
- } else if (buf instanceof CharBuffer) {
- return ((CharBuffer) buf).isDirect();
- } else if (buf instanceof PointerBuffer) {
- return ((PointerBuffer) buf).isDirect();
- } else if (buf instanceof Buffer) {
- throw new IllegalArgumentException("Unexpected buffer type Buffer.isDirect() operation is undefined");
- }
+ if ( PlatformPropsImpl.JAVA_6 ) {
+ if (buf instanceof Buffer) {
+ return ((Buffer) buf).isDirect();
+ } else if (buf instanceof PointerBuffer) {
+ return ((PointerBuffer) buf).isDirect();
+ }
+ } else {
+ if (buf instanceof ByteBuffer) {
+ return ((ByteBuffer) buf).isDirect();
+ } else if (buf instanceof IntBuffer) {
+ return ((IntBuffer) buf).isDirect();
+ } else if (buf instanceof ShortBuffer) {
+ return ((ShortBuffer) buf).isDirect();
+ } else if (buf instanceof FloatBuffer) {
+ return ((FloatBuffer) buf).isDirect();
+ } else if (buf instanceof DoubleBuffer) {
+ return ((DoubleBuffer) buf).isDirect();
+ } else if (buf instanceof LongBuffer) {
+ return ((LongBuffer) buf).isDirect();
+ } else if (buf instanceof CharBuffer) {
+ return ((CharBuffer) buf).isDirect();
+ } else if (buf instanceof PointerBuffer) {
+ return ((PointerBuffer) buf).isDirect();
+ }
+ }
throw new IllegalArgumentException("Unexpected buffer type " + buf.getClass().getName());
}
diff --git a/src/java/com/jogamp/common/os/Platform.java b/src/java/com/jogamp/common/os/Platform.java
index 72a0b3d..e58e72c 100644
--- a/src/java/com/jogamp/common/os/Platform.java
+++ b/src/java/com/jogamp/common/os/Platform.java
@@ -257,13 +257,26 @@ public class Platform extends PlatformPropsImpl {
public static void initSingleton() { }
/**
- * Returns true only if this program is running on the Java Standard Edition.
+ * Returns true only if having {@link java.nio.LongBuffer} and {@link java.nio.DoubleBuffer} available.
*/
public static boolean isJavaSE() {
return JAVA_SE;
}
/**
+ * Returns true only if being compatible w/ language level 6, e.g. JRE 1.6.
+ * <p>
+ * Implies {@link #isJavaSE()}.
+ * </p>
+ * <p>
+ * <i>Note</i>: We claim Android is compatible.
+ * </p>
+ */
+ public static boolean isJava6() {
+ return JAVA_6;
+ }
+
+ /**
* Returns true if this machine is little endian, otherwise false.
*/
public static boolean isLittleEndian() {
diff --git a/src/java/com/jogamp/common/util/VersionUtil.java b/src/java/com/jogamp/common/util/VersionUtil.java
index e5491c7..22672b4 100644
--- a/src/java/com/jogamp/common/util/VersionUtil.java
+++ b/src/java/com/jogamp/common/util/VersionUtil.java
@@ -71,7 +71,8 @@ public class VersionUtil {
sb.append("Platform: Java Version: ").append(Platform.getJavaVersion()).append(", VM: ").append(Platform.getJavaVMName());
sb.append(", Runtime: ").append(Platform.getJavaRuntimeName()).append(Platform.getNewline());
sb.append("Platform: Java Vendor: ").append(Platform.getJavaVendor()).append(", ").append(Platform.getJavaVendorURL());
- sb.append(", is JavaSE: ").append(Platform.isJavaSE());
+ sb.append(", JavaSE: ").append(Platform.isJavaSE());
+ sb.append(", Java6: ").append(Platform.isJava6());
sb.append(", AWT enabled: ").append(Platform.AWT_AVAILABLE);
sb.append(Platform.getNewline()).append(SEPERATOR);