summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSilenio Quarti <silenio>2007-03-21 13:05:47 +0000
committerSilenio Quarti <silenio>2007-03-21 13:05:47 +0000
commitbfa969319f6e5a1893ccf7e1b760debe9461b9c3 (patch)
treec6b298b23b84072cbabcbb8de6615f03a88c9378
parentaf7bdd0ab357dd7049eefdc0c7a31b9c87365c11 (diff)
downloadeclipse.platform.swt-bfa969319f6e5a1893ccf7e1b760debe9461b9c3.tar.gz
eclipse.platform.swt-bfa969319f6e5a1893ccf7e1b760debe9461b9c3.tar.xz
eclipse.platform.swt-bfa969319f6e5a1893ccf7e1b760debe9461b9c3.zip
jni global refs
-rw-r--r--bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StructsGenerator.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StructsGenerator.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StructsGenerator.java
index 8685ac1b3a..4cd2f0a93a 100644
--- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StructsGenerator.java
+++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StructsGenerator.java
@@ -18,6 +18,8 @@ public class StructsGenerator extends JNIGenerator {
boolean header;
+static final boolean GLOBAL_REF = false;
+
public StructsGenerator(boolean header) {
this.header = header;
}
@@ -217,9 +219,17 @@ void generateCacheFunction(Class clazz) {
output("\t");
output(clazzName);
if (isCPP) {
- output("Fc.clazz = env->GetObjectClass(lpObject);");
+ if (GLOBAL_REF) {
+ output("Fc.clazz = (jclass)env->NewGlobalRef(env->GetObjectClass(lpObject));");
+ } else {
+ output("Fc.clazz = env->GetObjectClass(lpObject);");
+ }
} else {
- output("Fc.clazz = (*env)->GetObjectClass(env, lpObject);");
+ if (GLOBAL_REF) {
+ output("Fc.clazz = (*env)->NewGlobalRef(env, (*env)->GetObjectClass(env, lpObject));");
+ } else {
+ output("Fc.clazz = (*env)->GetObjectClass(env, lpObject);");
+ }
}
outputln();
Field[] fields = clazz.getDeclaredFields();