javacommons/comms/src/commsendpoint.cpp
changeset 87 1627c337e51e
parent 50 023eef975703
--- a/javacommons/comms/src/commsendpoint.cpp	Fri Oct 15 12:29:39 2010 +0300
+++ b/javacommons/comms/src/commsendpoint.cpp	Fri Oct 29 11:49:32 2010 +0300
@@ -442,13 +442,14 @@
     return rc;
 }
 
-OS_EXPORT int CommsEndpoint::unregisterDefaultJavaListener(jobject, JNIEnv*)
+OS_EXPORT int CommsEndpoint::unregisterDefaultJavaListener(jobject, JNIEnv* aEnv)
 {
     ScopedLock lock(mListenersMutex);
     int rc = 0;
 
     if (mDefaultListener && mDefaultListener->getListener() == 0)
     {
+        mDefaultListener->release(aEnv);
         delete mDefaultListener;
         mDefaultListener = 0;
         LOG(EJavaComms, EInfo, "Unregistered default java listener");
@@ -476,7 +477,7 @@
     return rc;
 }
 
-OS_EXPORT int CommsEndpoint::detachFromVm()
+OS_EXPORT int CommsEndpoint::detachFromVm(JNIEnv* aEnv)
 {
 //    JELOG2(EJavaComms);
     ScopedLock lock(mListenersMutex);
@@ -484,6 +485,7 @@
     // remove java listeners
     if (mDefaultListener && mDefaultListener->getListener() == 0)
     {
+        mDefaultListener->release(aEnv);
         delete mDefaultListener;
         mDefaultListener = 0;
         LOG(EJavaComms, EInfo, "Removed default java listener (detach)");
@@ -495,7 +497,7 @@
         {
             LOG1(EJavaComms, EInfo, "Removed java listener for module id %d (detach)", it->first);
 
-            (it->second)->release(mJNIEnv);
+            (it->second)->release(aEnv);
             delete it->second;
             mListeners.erase(it);
             it = mListeners.begin();