]> sigrok.org Git - sigrok-util.git/blobdiff - cross-compile/android/pulseview-cpp.patch
sigrok-cross-android: Make Python work in PulseView, and reenable SRD
[sigrok-util.git] / cross-compile / android / pulseview-cpp.patch
index 496a3dd280c2e35ee315d05490a4533d0a556282..14057048f9db9d3aceb37dc7b7ebf7f4c662fe0f 100644 (file)
@@ -37,3 +37,65 @@ index e4f0276..861d25b 100644
                0.0) + h;
        const QRectF rect(x - w / 2, y - h / 2, w, h);
  
+diff --git a/main.cpp b/main.cpp
+index 2c6a59e..79627db 100644
+--- a/main.cpp 2014-04-26 23:40:24.253187700 +0200
++++ b/main.cpp 2014-04-27 00:38:55.378353311 +0200
+@@ -20,6 +20,9 @@
+ #ifdef ENABLE_DECODE
+ #include <libsigrokdecode/libsigrokdecode.h> /* First, so we avoid a _POSIX_C_SOURCE warning. */
++#ifdef ANDROID
++#include <jni.h>
++#endif
+ #endif
+ #include <stdint.h>
+@@ -45,6 +48,47 @@
+ Q_IMPORT_PLUGIN(qsvg)
+ #endif
++#if defined(ENABLE_DECODE) && defined(ANDROID)
++jint JNI_OnLoad(JavaVM *vm, void *reserved)
++{
++      JNIEnv* env;
++
++      (void)reserved;
++
++      if (vm->GetEnv((void **)&env, JNI_VERSION_1_6) != JNI_OK) {
++              return -1;
++      }
++
++      jclass envc = env->FindClass("org/sigrok/androidutils/Environment");
++      jmethodID getEnv =  env->GetStaticMethodID(envc, "getEnvironment",
++                                                 "()[Ljava/lang/String;");
++      jobjectArray envs =
++              (jobjectArray)env->CallStaticObjectMethod(envc, getEnv);
++      jsize i, envn = env->GetArrayLength(envs);
++      for (i=0; i<envn; i+=2) {
++              jstring key = (jstring)env->GetObjectArrayElement(envs, i);
++              jstring value = (jstring)env->GetObjectArrayElement(envs, i+1);
++              const char *utfkey = env->GetStringUTFChars(key, 0);
++              const char *utfvalue = env->GetStringUTFChars(value, 0);
++              setenv(utfkey, utfvalue, 1);
++              env->ReleaseStringUTFChars(value, utfvalue);
++              env->ReleaseStringUTFChars(key, utfkey);
++              env->DeleteLocalRef(value);
++              env->DeleteLocalRef(key);
++      }
++      env->DeleteLocalRef(envs);
++      env->DeleteLocalRef(envc);
++
++      return JNI_VERSION_1_6;
++}
++
++void JNI_OnUnload(JavaVM *vm, void *reserved)
++{
++      (void)vm;
++      (void)reserved;
++}
++#endif
++
+ void usage()
+ {
+       fprintf(stdout,