From: Jaroslav G. <jgr...@gm...> - 2008-11-05 20:52:19
|
Hi, I need to prevent a Java director from being garbage collected when it is not referenced in JVM but a C++ code still uses it. For instance, for Python I use the following: void MyDirector::addref() { Swig::Director *d = SWIG_DIRECTOR_CAST(this); PyObject *self = d->swig_get_self(); SWIG_PYTHON_THREAD_BEGIN_BLOCK; Py_INCREF(self); SWIG_PYTHON_THREAD_END_BLOCK; } void MyDirector::release() { Swig::Director *d = SWIG_DIRECTOR_CAST(this); PyObject *self = d->swig_get_self(); SWIG_PYTHON_THREAD_BEGIN_BLOCK; Py_DECREF(self); SWIG_PYTHON_THREAD_END_BLOCK; } The C++ code then simply calls addref()/release() whenever it acquires/releases ownership. As far as the Java Swig::Director is concerned it looks like its swig_java_change_ownership() method could fit my purpose but I don't know where to get the JNIEnv* needed by that method. Any ideas would be appreciated. thanks, -- Jarda http://jagpdf.com |