libbluray | branch: master | hpi1 <[email protected]> | Mon Apr 6 14:51:28 2015 +0300| [f45b6c52406c8a40d41e7dd45af9aeec15cc6688] | committer: hpi1
BD-J: native open method was changed around j8u40 > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=f45b6c52406c8a40d41e7dd45af9aeec15cc6688 --- ChangeLog | 1 + src/libbluray/bdj/java/java/io/FileInputStream.java | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index cd4e4ee..a0580db 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,7 @@ - Accept directory name (without .jar file name) in LIBBLURAY_CP. - Improved error resilence. - Improve BD-J compability. +- Fix Java 8u40 compability. - Fix infinite loop with some broken HDMV menus. 2015-01-26: Version 0.7.0 diff --git a/src/libbluray/bdj/java/java/io/FileInputStream.java b/src/libbluray/bdj/java/java/io/FileInputStream.java index 04f5bf7..2dff711 100644 --- a/src/libbluray/bdj/java/java/io/FileInputStream.java +++ b/src/libbluray/bdj/java/java/io/FileInputStream.java @@ -57,7 +57,7 @@ public class FileInputStream extends InputStream logger.info("Using cached " + cachedName + " for " + name); name = cachedName; } - open(name); + openImpl(name); } else { /* relative paths are problematic ... */ /* Those should be mapped to xlet home directory, which is inside .jar file. */ @@ -70,7 +70,7 @@ public class FileInputStream extends InputStream logger.error("no home found for " + name + " at " + Logger.dumpStack()); throw new FileNotFoundException(name); } - open(home + name); + openImpl(home + name); } available = 1024; @@ -93,9 +93,22 @@ public class FileInputStream extends InputStream available = 1024; } - private native void open(String name) throws FileNotFoundException; + /* open()/open0() wrapper to select correct native method at runtime */ + private void openImpl(String name) throws FileNotFoundException { + try { + open(name); + } catch (UnsatisfiedLinkError e) { + /* OpenJDK 8 b40 */ + open0(name); + } + } + private native int readBytes(byte b[], int off, int len) throws IOException; private native int close0(); + /* OpenJDK 6, OpenJDK 7, PhoneME, ... */ + private native void open(String name) throws FileNotFoundException; + /* OpenJDK 8 */ + private native void open0(String name) throws FileNotFoundException; //public native int read() throws IOException; //public native long skip(long n) throws IOException; _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
