class JniListenerManager
{
public:
- T* addListener(JNIEnv* env, jobject jListener, JniOcResource* owner)
+ T* addListener(JNIEnv* env, jobject jListener, RemoveListenerCallback removeListener)
{
- T *onEventListener = NULL;
+ T *onEventListener = nullptr;
m_mapMutex.lock();
break;
}
}
+
if (!onEventListener)
{
- onEventListener = new T(env, jListener, owner);
+ onEventListener = new T(env, jListener, removeListener);
jobject jgListener = env->NewGlobalRef(jListener);
if (jgListener)
{
LOGD("OnEventListener: Failed to create global listener ref.");
delete onEventListener;
+ m_mapMutex.unlock();
+ return nullptr;
}
LOGD("OnEventListener: new listener");
}
+
m_mapMutex.unlock();
return onEventListener;
}
T* listener = refPair.first;
delete listener;
m_listenerMap.erase(it);
-
LOGI("OnEventListener is removed");
}
break;
void removeAllListeners(JNIEnv* env)
{
m_mapMutex.lock();
+ LOGI("All listeners are removed");
for (auto& pair : m_listenerMap)
{