equal
deleted
inserted
replaced
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 |