diff options
author | Silenio Quarti <silenio> | 2007-03-21 13:05:47 +0000 |
---|---|---|
committer | Silenio Quarti <silenio> | 2007-03-21 13:05:47 +0000 |
commit | bfa969319f6e5a1893ccf7e1b760debe9461b9c3 (patch) | |
tree | c6b298b23b84072cbabcbb8de6615f03a88c9378 | |
parent | af7bdd0ab357dd7049eefdc0c7a31b9c87365c11 (diff) | |
download | eclipse.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.java | 14 |
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(); |