| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
/proc/self/exe (Linux) or a found java/jvm native lib.
- PlatformPropsImpl.queryABITypeImpl: Check Elf Header for ARM + !ANDROID (i.e. add other OS than Linux, use native java/jmv lib)
- NativeLibrary.enumerateLibraryPaths: Add 'sun.boot.library.path' to enumeration!
- TestElfReader01: Add test for finding java/jvm native lib and parse it
|
|
|
|
| |
- relax loop-condition (hope thats ok)
|
|
|
|
| |
initialCapcity
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- NativeLibrary Fix
- enumerateLibraryPaths(..):
- Properly iterate through all prefix _and_ suffix.
- Make public for JNILibLoaderBase.loadLibraryInternal(..)
- isValidNativeLibraryName(..):
- Stop iterating through prefix, if previously found
but suffix doesn't match.
- JNILibLoaderBase.loadLibraryInternal(..) Enhancement
- Mark customLibLoader FIXME: remove (we will get rid of jnlp.launcher.class)
- If System.load(TempJarCache) and System.loadLibrary(plainLibName) fails,
use NativeLibrary.enumerateLibraryPaths() w/ System.load(..) as last resort.
Tested on Linux x86_64 Java6 and OSX Java7 manually, no regressions expected.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix for the runtime error using GCJ gij JRE:
java.lang.NoSuchMethodError: method java.nio.Buffer.isDirect with signature ()Z was not found.
at com.jogamp.common.nio.Buffers.isDirect(Buffers.java:363)
Also Eclipse ecj refuses to compile code using java.nio.Buffer.isDirect().
----------
1. ERROR
...
return ((Buffer) buf).isDirect();
^^^^^^^^
The method isDirect() is undefined for the type Buffer
Signed-off-by: Xerxes Rånby <[email protected]>
|
| | |
|
|/ |
|
|
|
|
| |
w/ initialSizeElem:=0.
|
|
|
|
|
|
|
|
|
|
|
|
| |
simple primitive stack implementation.
Currently only FILO put/get operations are implemented using either
primitive arrays as I/O itself or <Type>Buffer.
Unit tests are included..
Note: Only FloatStack is implemented in a manual, where others (IntegerStack)
is derived (generated) from it. Same goes w/ unit tests.
|
|
|
|
|
|
|
|
|
|
| |
for short[]
For short[] Java code gets emitted for an StructAccessor object that uses:
void setShortsAt(int i, short[] shorts)
short[] getShortsAt(int i, short[] shorts)
Problem was that StructAccessor.java had no such methods - added.
|
|
|
|
| |
toString(..); Add more generics coding.
|
|
|
|
| |
used more versatile and write only if value changed.
|
|
|
|
|
|
|
| |
using an int[] storage.
IntBitfield comes in handy to store bit states of a wide value range w/o being a memory hog an O(1) access,
e.g. keyCode -> isPressed maps etc.
|
|
|
|
|
|
|
| |
JNILibLoaderBase.loadLibraryInternal() to NativeLibrary.findLibrary(..)
This allows using TempJarCache (if used/initialized) for native 'tool' libraries as well.
This is the case of JOAL's attempt to load the provided 'libopenal.so'
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in case leading non digits appear.
'\D.*' matches a leading non-digit and then any character.
First the string is tokenized by delim:
"OpenGL ES GLSL ES 1.0.16" -> "OpenGL ES GLSL ES 1", "0", "16"
Enhance pattern as follows and access collected group if matching:
// group1: \D* == leading non digits, optional
// group2: \d* == digits
// group3: .* == any pending chars, optional
final java.util.regex.Pattern nonDigitsCutOff = java.util.regex.Pattern.compile("(\\D*)(\\d*)(.*)");
Reorganized storage from atomic values to int[3] array, allowing simple pattern matching loop.
Added unit test.
|
|
|
|
|
|
|
|
|
| |
buffer (was missing).
This is an API regression as introduced in commit 25cc744f6bd5ca97e0ae58fa7e1c35f7b0f3046d
where JOGL's BufferUtil and GlueGen's were merged and API doc elaborated.
The latter states the desired fact that the source passed buffer's position shall remain
unchanged, however no code was added to take care of this detail.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
- Use the copy constructor rather than ArrayList.clone()
- constrain listsEqual so the compiler will warn about comparing lists of different types
Signed-off-by: Harvey Harrison <[email protected]>
|
|/
|
|
| |
util. ValueConv for primitive type value conversion
|
| |
|
|
|
|
|
|
| |
sb, Buffer buffer)"
Sometimes we need to see details of a Buffer w/ it's content, e.g. for debugging purposes.
|
|
|
|
| |
86e8c3a8d9f430700e07c485127130da68618e9d
|
| |
|
| |
|
|
|
|
| |
start, otherwise we may collide w/ a failed start. Misc: Cleanup / reuse strings.
|
| |
|
| |
|
|
|
|
| |
method to flush a pending task (lock that is).
|
|
|
|
|
|
|
|
| |
- LockExt -> ThreadLock - clarifying semantics (API Change)
- ThreadLock: Remove isOwner(), use isOwner(Thread.currentThread)
- adding @Override
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Derivation
+++
JNILibLoaderBase.addNativeJarLibs(..): Add API doc
JNILibLoaderBase:
"addNativeJarLibs(Class<?> classFromJavaJar, String allNativeJarBaseName, String[] atomicNativeJarBaseNames)" ->
"addNativeJarLibs(Class<?>[] classesFromJavaJars, String singleJarMarker, String[] stripBasenameSuffixes)"
Derive the 'all' (1st choice) native JAR URL solely on the given class's JAR URL.
Examples:
JOCL:
// only: jocl.jar -> jocl-natives-'os.and.arch'.jar
addNativeJarLibs(new Class<?>[] { JOCLJNILibLoader.class }, null, null );
JOGL:
final ClassLoader cl = GLProfile.class.getClassLoader();
// either: [jogl-all.jar, jogl-all-noawt.jar, jogl-all-mobile.jar] -> jogl-all-natives-<os.and.arch>.jar
// or: nativewindow-core.jar -> nativewindow-natives-<os.and.arch>.jar,
// jogl-core.jar -> jogl-natives-<os.and.arch>.jar,
// (newt-core.jar -> newt-natives-<os.and.arch>.jar)? (if available)
final String newtFactoryClassName = "com.jogamp.newt.NewtFactory";
final Class<?>[] classesFromJavaJars = new Class<?>[] { NWJNILibLoader.class, GLProfile.class, null };
if( ReflectionUtil.isClassAvailable(newtFactoryClassName, cl) ) {
classesFromJavaJars[2] = ReflectionUtil.getClass(newtFactoryClassName, false, cl);
}
JNILibLoaderBase.addNativeJarLibs(classesFromJavaJars, "-all", new String[] { "-noawt", "-mobile", "-core" } );
Efficiency / Performance:
- Reduced JAR URL lookup calls JarUtil.getJarURL(..) - JNILibLoaderBase, Platform, JarUtil
- Attempt loading Jar files (native, class, ..) only once - TempJarCache
Code Cleanup (IOUtil, JarUtil, :
- IOException if not found
- IllegalArgumentException if null argument
+++
jogamp.android-launcher.jar -> jogamp-android-launcher.jar
+++
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Usually you set a property like
jogamp.debug.IOUtil
jogamp.debug=all
to enable either IOUtil debugging or all debugging.
In case you use Applets or JNLP you cannot use above
property namespace, since it's considered insecure.
GlueGen would allow you to use an 'jnlp.' alias, e.g.:
jnlp.jogamp.debug.IOUtil
jnlp.jogamp.debug=all
The latter are secure properties and will be passed to the invoked JVM.
All properties requested by PropertyAccess.getProperty(..)
shall be aliased w/ 'jnlp.' (prepend 'jnlp.'),
if no value could be found with the given key.
|
|
|
|
| |
utilizing default SecurityManager validation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1468286bf569a493e4fdb887d5f3732f88c8cec3) 'update' scenario in same JVM instance.
TempFileCache/LauncherTempFileCache were using the system property
'jnlp.jogamp.tmp.cache.root', if set.
However, in case one JVM launched an old GlueGen (Applet)
and then launching a new GlueGen (Applet) w/ a new tmpDir location,
the property is still set but the tmpRootDir location does not exist.
This patch tolerates this situation and cont. setting a new tmpRootDir.
Example:
JVM1.GlueGen1 tmpDir: /tmp/, tmpRootDir: /tmp/jogamp.tmp.cache_000000/
JVM1.GlueGen2 tmpDir: /tmp/jogamp_0000/, tmpRootDir: /tmp/jogamp_0000/file_cache/
Misc:
- IOUtil: Always use 'jogamp_xxxx' as the sys-temp subfolder for tmpDir
- JNILibLoaderBase: Remove unised import
- TempJarCache.validateCertificates(): Add OK DEBUG output.
|
|
|
|
|
|
|
|
|
|
|
|
| |
library loading
Some Platform field declarations and it's static initialization has been delegated
to it's new abstract super class PlatformPropsImpl to solve
static initialization interdependencies w/ the GlueGen native library loading
and it's derived information {@link #getMachineDescription()}, {@link #is32Bit()}, ..<br>
This mechanism is preferred in this case to avoid synchronization and locking
and allow better performance accessing the mentioned fields/methods.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
is mounted w/ noexec ; IOUtil API change!
Test whether executable files can be launched in temporary folder
by trying to run an empty executable file - if !( WINDOWS | OPENKODE )
TempDir:
1) ${java.io.tmpdir}/jogamp
2) $XDG_CACHE_HOME/jogamp - if !( ANDROID | MACOS | WINDOWS | OPENKODE )
3) $HOME/.jogamp
$XDG_CACHE_HOME defaults to $HOME/.cache
- TempFileCache: ${TempDir}/file_cache -> ${java.io.tmpdir}/jogamp/file_cache
- LauncherTempFileCache: ${TempDir}/file_cache -> ${java.io.tmpdir}/jogamp/file_cache
+++
AndroidUtils*.getTempRoot(): Remove unused AccessControlContext param
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specific classes for non Android platforms.
Android specifics are delegated via class AndroidUtils,
which uses reflection to call AndroidUtilsImpl if platform is Android.
Android code is confined to the packages:
jogamp.common.os.android.*
jogamp.android.launcher.*
and only included when compiled for the Android platform.
|
| |
|
|
|
|
| |
System.loadLibrary(libraryPath) -> System.load(libraryPath)
|
|
|
|
|
|
|
|
|
|
|
| |
tool native libraries.
NativeLibrary: Expose 'String findLibrary(String libName, ClassLoader loader)',
allowing utilization of System.load(loader.findLibrary(libName)).
JNILibLoaderBase.loadLibrary(): Add optional ClassLoader argument, used to locate the library
DynamicLibraryBundle: Use DynamicLibraryInfo's ClassLoader to find native libraries (tool + jni)
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|