On 16.03.2011 20:19, Maurus Cuelenaere wrote:
Op 16-03-11 15:33, mai...@svn.rockbox.org schreef:
[snip]
I don't think this needed to be reverted?
[snip]
Same here, no users of env_ptr here?
I just reverted most the commit and add back what we walked about to
keep. I didn't pay attention what other parts of your commit could have
stayed.
static int last_y, last_x;
static int last_btns;
[snip]
Modified: trunk/firmware/target/hosted/android/system-target.h
===================================================================
--- trunk/firmware/target/hosted/android/system-target.h 2011-03-16
11:38:49 UTC (rev 29600)
+++ trunk/firmware/target/hosted/android/system-target.h 2011-03-16
14:33:55 UTC (rev 29601)
@@ -21,8 +21,6 @@
#ifndef __SYSTEM_TARGET_H__
#define __SYSTEM_TARGET_H__
-#include<jni.h>
-
#define disable_irq()
#define enable_irq()
#define disable_irq_save() 0
@@ -32,20 +30,16 @@
void wait_for_interrupt(void);
void interrupt(void);
-/* A JNI environment is specific to its thread, so use the correct way to
- * obtain it: share a pointer to the JavaVM structure and ask that the JNI
- * environment attached to the current thread. */
-static inline JNIEnv* getJavaEnvironment(void)
-{
- extern JavaVM *vm_ptr;
- JNIEnv *env = NULL;
+ /* don't pull in jni.h for every user of this file, it should be only needed
+ * within the target tree (if at all)
+ * define this before #including system.h or system-target.h */
+#ifdef _SYSTEM_WITH_JNI
+#include<jni.h>
+/*
+ * discover the JNIEnv for this the calling thread in case it's not known */
+extern JNIEnv* getJavaEnvironment(void);
+#endif /* _SYSTEM_WITH_JNI */
- if (vm_ptr)
- (*vm_ptr)->GetEnv(vm_ptr, (void**)&env, JNI_VERSION_1_2);
-
- return env;
-}
-
This should be solvable with the following trick:
diff --git a/firmware/target/hosted/android/pcm-android.c
b/firmware/target/hosted/android/pcm-android.c
index cc8bd9c..735956a 100644
--- a/firmware/target/hosted/android/pcm-android.c
+++ b/firmware/target/hosted/android/pcm-android.c
@@ -21,7 +21,6 @@
#include<jni.h>
#include<stdbool.h>
-#define _SYSTEM_WITH_JNI /* for getJavaEnvironment */
#include<system.h>
#include "debug.h"
#include "pcm.h"
diff --git a/firmware/target/hosted/android/system-target.h
b/firmware/target/hosted/android/system-target.h
index 325c101..c547a58 100644
--- a/firmware/target/hosted/android/system-target.h
+++ b/firmware/target/hosted/android/system-target.h
@@ -30,15 +30,11 @@ void power_off(void);
void wait_for_interrupt(void);
void interrupt(void);
- /* don't pull in jni.h for every user of this file, it should be only needed
- * within the target tree (if at all)
- * define this before #including system.h or system-target.h */
-#ifdef _SYSTEM_WITH_JNI
-#include<jni.h>
-/*
- * discover the JNIEnv for this the calling thread in case it's not known */
+struct JNINativeInterface;
+typedef const struct JNINativeInterface* JNIEnv;
+
+/* discover the JNIEnv for this the calling thread in case it's not known */
extern JNIEnv* getJavaEnvironment(void);
-#endif /* _SYSTEM_WITH_JNI */
I guess it works, but is it better?
#endif /* __SYSTEM_TARGET_H__ */
#define NEED_GENERIC_BYTESWAPS
Also, is not wanting to include jni.h for everyone the same reason for that ugly
"extern JNIEnv *env_ptr;" all over the place? If so, that can be solved the same
way as above.
Right, but I didn't want to pull lots of unrelated changes into the
commit; especially since it partly reverting an earlier one.
Best regards.