JniLocalRef::JniLocalRef(const JniLocalRef& rhs) { JEnv env; m_obj = rhs.m_isWeak ? rhs.m_obj : env.NewLocalRef(rhs.m_obj); m_isWeak = rhs.m_isWeak; }
jobject NativePlatform::ConvertJsValueToJavaObject(JEnv& env, const Local<Value>& value, int classReturnType) { JsArgToArrayConverter argConverter(value, false/*is implementation object*/, classReturnType); jobject jr = argConverter.GetConvertedArg(); jobject javaResult = nullptr; if (jr != nullptr) { javaResult = env.NewLocalRef(jr); } return javaResult; }
void JsArgToArrayConverter::SetConvertedObject(JEnv& env, int index, jobject obj, bool isGlobalRef) { if (obj == nullptr) { m_argsAsObject[index] = obj; } else if (isGlobalRef) { m_argsAsObject[index] = obj; } else { m_storedIndexes.push_back(index); m_argsAsObject[index] = env.NewLocalRef(obj); } }
JniLocalRef& JniLocalRef::operator=(const JniLocalRef& rhs) { if(this != &rhs) { m_isWeak = rhs.m_isWeak; if (m_isWeak) { m_obj = rhs.m_obj; } else { JEnv env; if (m_obj != nullptr) { env.DeleteLocalRef(m_obj); } m_obj = (rhs.m_obj != nullptr) ? env.NewLocalRef(rhs.m_obj) : nullptr; } } return *this; }