diff --git a/drawing/src/main/cpp/plugin/plugin_render.cpp b/drawing/src/main/cpp/plugin/plugin_render.cpp index e609804..c92d9f6 100644 --- a/drawing/src/main/cpp/plugin/plugin_render.cpp +++ b/drawing/src/main/cpp/plugin/plugin_render.cpp @@ -70,7 +70,7 @@ void DispatchTouchEventCB(OH_NativeXComponent *component, void *window) { std::unordered_map PluginRender::instance_; -PluginRender::~PluginRender() {} +PluginRender::~PluginRender() = default; PluginRender *PluginRender::GetInstance(std::string &id) { if (PluginRender::instance_.find(id) == PluginRender::instance_.end()) { @@ -81,15 +81,16 @@ PluginRender *PluginRender::GetInstance(std::string &id) { return PluginRender::instance_[id]; } - void PluginRender::Export(napi_env env, napi_value value) {} void PluginRender::RegisterCallback(OH_NativeXComponent *nativeXComponent) { - this->renderCallback_.DispatchTouchEvent = DispatchTouchEventCB; - this->renderCallback_.OnSurfaceChanged = OnSurfaceChangedCB; - this->renderCallback_.OnSurfaceCreated = OnSurfaceCreatedCB; - this->renderCallback_.OnSurfaceDestroyed = OnSurfaceDestroyedCB; + this->renderCallback_ = new OH_NativeXComponent_Callback(); + + this->renderCallback_->DispatchTouchEvent = DispatchTouchEventCB; + this->renderCallback_->OnSurfaceChanged = OnSurfaceChangedCB; + this->renderCallback_->OnSurfaceCreated = OnSurfaceCreatedCB; + this->renderCallback_->OnSurfaceDestroyed = OnSurfaceDestroyedCB; // 将 callback 注册给 NativeXComponent - OH_NativeXComponent_RegisterCallback(nativeXComponent, &this->renderCallback_); + OH_NativeXComponent_RegisterCallback(nativeXComponent, this->renderCallback_); } diff --git a/drawing/src/main/cpp/plugin/plugin_render.h b/drawing/src/main/cpp/plugin/plugin_render.h index b0a43e9..fbe1a98 100644 --- a/drawing/src/main/cpp/plugin/plugin_render.h +++ b/drawing/src/main/cpp/plugin/plugin_render.h @@ -24,19 +24,19 @@ #define HARMONY_DEMO_NAPI_DRAWING_PLUGIN_RENDER_H class PluginRender { -private: - ~PluginRender(); - - OH_NativeXComponent_Callback renderCallback_; - public: - static std::unordered_map instance_; + ~PluginRender(); static PluginRender *GetInstance(std::string &id); void Export(napi_env env, napi_value); // 注册监听XComponent组件的回调,包括生命周期函数,手势监听函数等。 void RegisterCallback(OH_NativeXComponent *nativeXComponent); + +private: + OH_NativeXComponent_Callback *renderCallback_; + + static std::unordered_map instance_; }; #endif // HARMONY_DEMO_NAPI_DRAWING_PLUGIN_RENDER_H