From: William F. <wsf...@us...> - 2004-12-07 23:05:05
|
Update of /cvsroot/swig/SWIG/Lib/java In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3153/Lib/java Modified Files: director.swg java.swg Log Message: new directorconnect and directorconnect_derived typemaps Index: java.swg =================================================================== RCS file: /cvsroot/swig/SWIG/Lib/java/java.swg,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** java.swg 30 Nov 2004 20:10:44 -0000 1.30 --- java.swg 7 Dec 2004 23:04:54 -0000 1.31 *************** *** 960,963 **** --- 960,973 ---- } + %typemap(directordisconnect, methodname="swigDirectorDisconnect") SWIGTYPE { + swigCMemOwn = false; + $jnicall; + } + + %typemap(directordisconnect_derived, methodname="swigDirectorDisconnect") SWIGTYPE { + swigCMemOwn = false; + $jnicall; + } + /* Java specific directives */ #define %javaconst(flag) %feature("java:const","flag") Index: director.swg =================================================================== RCS file: /cvsroot/swig/SWIG/Lib/java/director.swg,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** director.swg 26 Sep 2003 20:40:22 -0000 1.8 --- director.swg 7 Dec 2004 23:04:54 -0000 1.9 *************** *** 31,34 **** --- 31,49 ---- } + /* Disconnect director from Java object */ + void swig_disconnect_director_self(const char *disconn_method) { + if (swig_self) { + JNIEnv *jenv = swig_acquire_jenv(); + jmethodID disconn_meth = jenv->GetMethodID(jenv->GetObjectClass(swig_self), disconn_method, "()V"); + if (disconn_meth) { + jenv->CallVoidMethod(swig_self, disconn_meth); + } else { + jenv->ExceptionClear(); + } + jenv->DeleteGlobalRef(swig_self); + swig_self = (jobject) NULL; + } + } + public: Director(JNIEnv *jenv) : swig_jvm((JavaVM *) NULL), swig_self(NULL) { *************** *** 37,50 **** } - /* Remove the Java object global lock at destruction */ virtual ~Director() { - if (swig_self) { - JNIEnv *jenv = swig_acquire_jenv(); - jmethodID disconn_meth = jenv->GetMethodID(jenv->GetObjectClass(swig_self), "swigDirectorDisconnect", "()V"); - if (disconn_meth) - jenv->CallVoidMethod(swig_self, disconn_meth); - jenv->DeleteGlobalRef(swig_self); - swig_self = (jobject) NULL; - } } --- 52,56 ---- |