From 64123b869635c2747af487122fd3ca5f8f1dfe1b Mon Sep 17 00:00:00 2001 From: schlaepfer Date: Tue, 17 Jan 2006 12:50:24 +0000 Subject: [PATCH] - redirect before creating other classes git-svn-id: https://svn.code.sf.net/p/libusbjava/code/trunk@85 94ad28fe-ef68-46b1-9651-e7ae4fcf1c4c --- JNIdll/BDI.dll | Bin 39442 -> 39442 bytes JNIdll/BDI_dll.cpp | 59 +++++++++++++++++++++------------------------ 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/JNIdll/BDI.dll b/JNIdll/BDI.dll index d794ca31f38af33099f9ddde630fca8de026930b..1ad07a806ee07bf3f66aca5fd8b2e9584735bee4 100644 GIT binary patch delta 7229 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 U5=|T43N0Pimqyhm#_8g}0g;LL=Kufz diff --git a/JNIdll/BDI_dll.cpp b/JNIdll/BDI_dll.cpp index 7ee9e1b..8f041f8 100644 --- a/JNIdll/BDI_dll.cpp +++ b/JNIdll/BDI_dll.cpp @@ -196,7 +196,29 @@ EXPORT int createJVM(char *classpath) } jvm_created = TRUE; } else { - fprintf_flush(stdout, "JVM already created -> creating class pointers\n"); + fprintf_flush(stdout, "JVM already created -> trying to redirect ouput streams\n"); + } + + if (!jvm_redirection_done) { + cls_Redirect = env->FindClass(Redirect_Class); + if (cls_Redirect == 0) { + fprintf_flush(stderr, "Can't find %s class\n", Redirect_Class); + return FALSE; + } + + // Redirect Class + mid_Redirect_redirect = env->GetStaticMethodID(cls_Redirect, "redirect", "()V"); + if (mid_Redirect_redirect == 0) { + fprintf_flush(stderr, "Can't find Redirect.redirect\n"); + return FALSE; + } + + // Call redirect + env->CallStaticVoidMethod(cls_Redirect, mid_Redirect_redirect); + + jvm_redirection_done = TRUE; + } else { + fprintf_flush(stdout, "Redirection already done -> creating class pointers\n"); } if (!jvm_classPtrs_done) { @@ -219,12 +241,6 @@ EXPORT int createJVM(char *classpath) return FALSE; } - cls_Redirect = env->FindClass(Redirect_Class); - if (cls_Redirect == 0) { - fprintf_flush(stderr, "Can't find %s class\n", Redirect_Class); - return FALSE; - } - cls_Uart0 = env->FindClass(Uart0_Class); if (cls_Uart0 == 0) { fprintf_flush(stderr, "Can't find %s class\n", Uart0_Class); @@ -464,13 +480,6 @@ EXPORT int createJVM(char *classpath) return FALSE; } - // Redirect Class - mid_Redirect_redirect = env->GetStaticMethodID(cls_Redirect, "redirect", "()V"); - if (mid_Redirect_redirect == 0) { - fprintf_flush(stderr, "Can't find Redirect.redirect\n"); - return FALSE; - } - // Uart0 Class mid_Uart0_write = env->GetStaticMethodID(cls_Uart0, "write", "([BI)Z"); if (mid_Uart0_write == 0) { @@ -485,16 +494,7 @@ EXPORT int createJVM(char *classpath) jvm_mIDs_done = TRUE; } else { - fprintf_flush(stdout, "Method IDs already created -> trying to redirect ouput streams\n"); - } - - if (!jvm_redirection_done) { - // Call redirect - env->CallStaticVoidMethod(cls_Redirect, mid_Redirect_redirect); - - jvm_redirection_done = TRUE; - } else { - fprintf_flush(stdout, "Redirection already done -> everything successfully set up!\n"); + fprintf_flush(stdout, "Method IDs already created -> everything successfully set up!\n"); } return TRUE; @@ -517,7 +517,7 @@ EXPORT int checkForExceptions() { /* USB_Device methods * - * For documentatione see the java doc. + * For documentation see the java doc. */ EXPORT void USB_Device_open() { @@ -536,7 +536,7 @@ EXPORT void USB_Device_reset() /* BDI 555 methods * - * For documentatione see the java doc. + * For documentation see the java doc. */ EXPORT void BDI555_break_() { @@ -684,7 +684,7 @@ EXPORT void BDI555_setGpr31(int gpr31) /* BDI 332 methods * - * For documentatione see the java doc. + * For documentation see the java doc. */ EXPORT void BDI332_nopsToLegalCmd() { @@ -797,7 +797,7 @@ EXPORT BOOL BDI332_isTargetInDebugMode() /* * UART functions * - * For documentatione see the java doc. + * For documentation see the java doc. */ EXPORT int UART0_read(char result[]) { @@ -830,9 +830,6 @@ EXPORT int UART0_write(char data[], int dataLength) env->ThrowNew(excCls, "UART0_write: not enough memory"); return FALSE; } -// for (int i = 0; i < dataLength; ++i) { -// fprintf_flush(stdout, ("data %d: %x\n", i, data[i]); -// } env->SetByteArrayRegion(jdata, 0, dataLength, (jbyte*) data); result = env->CallStaticBooleanMethod(cls_Uart0, mid_Uart0_write, jdata, dataLength);