javacommons/comms/src/commsendpoint.cpp
changeset 87 1627c337e51e
parent 50 023eef975703
equal deleted inserted replaced
80:d6dafc5d983f 87:1627c337e51e
   440         ELOG1(EJavaComms, "%s failed, default listener already exists", __PRETTY_FUNCTION__);
   440         ELOG1(EJavaComms, "%s failed, default listener already exists", __PRETTY_FUNCTION__);
   441     }
   441     }
   442     return rc;
   442     return rc;
   443 }
   443 }
   444 
   444 
   445 OS_EXPORT int CommsEndpoint::unregisterDefaultJavaListener(jobject, JNIEnv*)
   445 OS_EXPORT int CommsEndpoint::unregisterDefaultJavaListener(jobject, JNIEnv* aEnv)
   446 {
   446 {
   447     ScopedLock lock(mListenersMutex);
   447     ScopedLock lock(mListenersMutex);
   448     int rc = 0;
   448     int rc = 0;
   449 
   449 
   450     if (mDefaultListener && mDefaultListener->getListener() == 0)
   450     if (mDefaultListener && mDefaultListener->getListener() == 0)
   451     {
   451     {
       
   452         mDefaultListener->release(aEnv);
   452         delete mDefaultListener;
   453         delete mDefaultListener;
   453         mDefaultListener = 0;
   454         mDefaultListener = 0;
   454         LOG(EJavaComms, EInfo, "Unregistered default java listener");
   455         LOG(EJavaComms, EInfo, "Unregistered default java listener");
   455     }
   456     }
   456     else
   457     else
   474     }
   475     }
   475 
   476 
   476     return rc;
   477     return rc;
   477 }
   478 }
   478 
   479 
   479 OS_EXPORT int CommsEndpoint::detachFromVm()
   480 OS_EXPORT int CommsEndpoint::detachFromVm(JNIEnv* aEnv)
   480 {
   481 {
   481 //    JELOG2(EJavaComms);
   482 //    JELOG2(EJavaComms);
   482     ScopedLock lock(mListenersMutex);
   483     ScopedLock lock(mListenersMutex);
   483 
   484 
   484     // remove java listeners
   485     // remove java listeners
   485     if (mDefaultListener && mDefaultListener->getListener() == 0)
   486     if (mDefaultListener && mDefaultListener->getListener() == 0)
   486     {
   487     {
       
   488         mDefaultListener->release(aEnv);
   487         delete mDefaultListener;
   489         delete mDefaultListener;
   488         mDefaultListener = 0;
   490         mDefaultListener = 0;
   489         LOG(EJavaComms, EInfo, "Removed default java listener (detach)");
   491         LOG(EJavaComms, EInfo, "Removed default java listener (detach)");
   490     }
   492     }
   491 
   493 
   493     {
   495     {
   494         if ((it->second)->getListener() == 0)
   496         if ((it->second)->getListener() == 0)
   495         {
   497         {
   496             LOG1(EJavaComms, EInfo, "Removed java listener for module id %d (detach)", it->first);
   498             LOG1(EJavaComms, EInfo, "Removed java listener for module id %d (detach)", it->first);
   497 
   499 
   498             (it->second)->release(mJNIEnv);
   500             (it->second)->release(aEnv);
   499             delete it->second;
   501             delete it->second;
   500             mListeners.erase(it);
   502             mListeners.erase(it);
   501             it = mListeners.begin();
   503             it = mListeners.begin();
   502         }
   504         }
   503         else
   505         else