mirror of
https://github.com/Tencent/Hippy.git
synced 2026-10-29 06:06:52 +08:00
feat(dom): modify event-related logic
This commit is contained in:
committed by
churchill-zhang
parent
f52c2b7b89
commit
ac7590fbde
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user