feat(dom): modify event-related logic

This commit is contained in:
jinhaihuang
2022-01-17 14:22:51 +08:00
committed by churchill-zhang
parent f52c2b7b89
commit ac7590fbde
4 changed files with 19 additions and 12 deletions
@@ -136,6 +136,7 @@ void DoBind(JNIEnv* j_env,
scope->SetRenderManager(render_manager);
dom_manager->SetRenderManager(render_manager);
dom_manager->SetDelegateTaskRunner(scope->GetTaskRunner());
render_manager->SetDomManager(dom_manager);
}
jint CreateDomInstance(JNIEnv* j_env, __unused jobject j_obj, jint j_root_id) {
@@ -81,14 +81,14 @@ void OnDestroyNativeRenderProvider(JNIEnv* j_env, jobject j_object, jint j_insta
void UpdateRootSize(JNIEnv *j_env, jobject j_object, jint j_instance_id,
jfloat j_width, jfloat j_height) {
std::shared_ptr<Runtime> runtime = Runtime::Find(j_instance_id);
if (!runtime) {
std::shared_ptr<HippyRenderManager> render_manager = HippyRenderManager::Find(
static_cast<int32_t>(j_instance_id));
if (!render_manager) {
TDF_BASE_DLOG(WARNING) << "UpdateRootSize j_instance_id invalid";
return;
}
TDF_BASE_CHECK(runtime->GetScope() != nullptr);
std::shared_ptr<DomManager> dom_manager = runtime->GetScope()->GetDomManager().lock();
std::shared_ptr<DomManager> dom_manager = render_manager->GetDomManager();
if (dom_manager == nullptr) {
TDF_BASE_DLOG(WARNING) << "UpdateRootSize dom_manager is nullptr";
return;
@@ -100,14 +100,14 @@ void UpdateRootSize(JNIEnv *j_env, jobject j_object, jint j_instance_id,
void DoCallBack(JNIEnv *j_env, jobject j_object,
jint j_instance_id, jint j_result, jstring j_func_name, jint j_node_id,
jbyteArray j_buffer, jint j_offset, jint j_length) {
std::shared_ptr<Runtime> runtime = Runtime::Find(j_instance_id);
if (!runtime) {
std::shared_ptr<HippyRenderManager> render_manager = HippyRenderManager::Find(
static_cast<int32_t>(j_instance_id));
if (!render_manager) {
TDF_BASE_DLOG(WARNING) << "DoCallBack j_instance_id invalid";
return;
}
TDF_BASE_CHECK(runtime->GetScope() != nullptr);
std::shared_ptr<DomManager> dom_manager = runtime->GetScope()->GetDomManager().lock();
std::shared_ptr<DomManager> dom_manager = render_manager->GetDomManager();
if (dom_manager == nullptr) {
TDF_BASE_DLOG(WARNING) << "DoCallBack dom_manager is nullptr";
return;
@@ -141,14 +141,14 @@ void OnReceivedEvent(JNIEnv *j_env, jobject j_object,
jint j_instance_id, jint j_dom_id, jstring j_event_name,
jbyteArray j_buffer, jint j_offset, jint j_length,
jboolean j_use_capture, jboolean j_use_bubble) {
std::shared_ptr<Runtime> runtime = Runtime::Find(j_instance_id);
if (!runtime) {
std::shared_ptr<HippyRenderManager> render_manager = HippyRenderManager::Find(
static_cast<int32_t>(j_instance_id));
if (!render_manager) {
TDF_BASE_DLOG(WARNING) << "OnReceivedEvent j_instance_id invalid";
return;
}
TDF_BASE_CHECK(runtime->GetScope() != nullptr);
std::shared_ptr<DomManager> dom_manager = runtime->GetScope()->GetDomManager().lock();
std::shared_ptr<DomManager> dom_manager = render_manager->GetDomManager();
if (dom_manager == nullptr) {
TDF_BASE_DLOG(WARNING) << "OnReceivedEvent dom_manager is nullptr";
return;
@@ -666,6 +666,7 @@ public class NativeRenderer implements NativeRender, NativeRenderProxy, NativeRe
mUITaskQueue.clear();
throw new NativeRenderException(UI_TASK_QUEUE_UNAVAILABLE_ERR, e);
}
executeUIOperation();
}
@Override
@@ -41,6 +41,9 @@ class HippyRenderManager : public RenderManager {
void SetDensity(float density) { density_ = density; };
float GetDensity() { return density_; }
void SetDomManager(std::weak_ptr<DomManager> dom_manager) { dom_manager_ = dom_manager; }
std::shared_ptr<DomManager> GetDomManager() const { return dom_manager_.lock(); }
static void Insert(const std::shared_ptr<HippyRenderManager>& render_manager);
static std::shared_ptr<HippyRenderManager> Find(int32_t id);
static bool Erase(int32_t id);
@@ -78,6 +81,8 @@ class HippyRenderManager : public RenderManager {
std::shared_ptr<tdf::base::Serializer> serializer_;
float density_ = 1.0f;
std::vector<ListenerOp> event_listener_ops_;
std::weak_ptr<DomManager> dom_manager_;
};
} // namespace dom
} // namespace hippy