libbluray | branch: master | hpi1 <[email protected]> | Wed Feb 26 11:11:32 2014 +0200| [b8a378faee686e5d8cbbec08c2125eb4c6e00516] | committer: hpi1
bdj: give disc root path to Libbluray.init() instead of setting it as JVM parameter Fixes two issues: - when disc is changed, disc root may need to be changed too - charset conversion issues in Windows > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=b8a378faee686e5d8cbbec08c2125eb4c6e00516 --- src/libbluray/bdj/bdj.c | 7 ++++--- src/libbluray/bdj/java/org/videolan/Libbluray.java | 4 +++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/libbluray/bdj/bdj.c b/src/libbluray/bdj/bdj.c index 83b6790..11e9d0c 100644 --- a/src/libbluray/bdj/bdj.c +++ b/src/libbluray/bdj/bdj.c @@ -307,7 +307,7 @@ static int _bdj_init(BDJAVA *bdjava, JNIEnv *env) jclass init_class; jmethodID init_id; if (!bdj_get_method(env, &init_class, &init_id, - "org/videolan/Libbluray", "init", "(JLjava/lang/String;)V")) { + "org/videolan/Libbluray", "init", "(JLjava/lang/String;Ljava/lang/String;)V")) { return 0; } @@ -316,8 +316,9 @@ static int _bdj_init(BDJAVA *bdjava, JNIEnv *env) jlong param_bdjava_ptr = (jlong)(intptr_t) bdjava; jstring param_disc_id = (*env)->NewStringUTF(env, id ? id->disc_id : "00000000000000000000000000000000"); + jstring param_disc_root = (*env)->NewStringUTF(env, bdjava->path); (*env)->CallStaticVoidMethod(env, init_class, init_id, - param_bdjava_ptr, param_disc_id); + param_bdjava_ptr, param_disc_id, param_disc_root); if ((*env)->ExceptionOccurred(env)) { (*env)->ExceptionDescribe(env); @@ -326,6 +327,7 @@ static int _bdj_init(BDJAVA *bdjava, JNIEnv *env) (*env)->DeleteLocalRef(env, init_class); (*env)->DeleteLocalRef(env, param_disc_id); + (*env)->DeleteLocalRef(env, param_disc_root); X_FREE(id_path); bdid_free(&id); @@ -389,7 +391,6 @@ BDJAVA* bdj_open(const char *path, struct bluray *bd, JavaVMOption* option = calloc(1, sizeof(JavaVMOption) * 20); int n = 0; JavaVMInitArgs args; - option[n++].optionString = str_printf("-Dbluray.vfs.root=%s", path); option[n++].optionString = str_printf("-Ddvb.persistent.root=%s", _bdj_persistent_root()); option[n++].optionString = str_printf("-Dbluray.bindingunit.root=%s", _bdj_buda_root()); diff --git a/src/libbluray/bdj/java/org/videolan/Libbluray.java b/src/libbluray/bdj/java/org/videolan/Libbluray.java index 48e9bc9..18d4aab 100644 --- a/src/libbluray/bdj/java/org/videolan/Libbluray.java +++ b/src/libbluray/bdj/java/org/videolan/Libbluray.java @@ -39,7 +39,9 @@ import org.videolan.media.content.PlayerManager; * This class allows BDJ to call various libbluray functions. */ public class Libbluray { - protected static void init(long nativePointer, String discID) { + protected static void init(long nativePointer, String discID, String discRoot) { + + System.setProperty("bluray.vfs.root", discRoot); Libbluray.nativePointer = nativePointer; DiscManager.getDiscManager().setCurrentDisc(discID); _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
