diff --git a/sinkhandler/include/distributed_input_sink_handler.h b/sinkhandler/include/distributed_input_sink_handler.h index 86090ee18f876bc9e1fe9c3b308d24d803009379..d20ec32e8f97d20ce4896b87ddd94d9cdf1a8e9c 100644 --- a/sinkhandler/include/distributed_input_sink_handler.h +++ b/sinkhandler/include/distributed_input_sink_handler.h @@ -69,7 +69,7 @@ private: public: void OnRemoteDied(const wptr &remote) override; }; - DistributedInputSinkHandler() = default; + DistributedInputSinkHandler(); ~DistributedInputSinkHandler(); OHOS::sptr sysSinkCallback = nullptr; diff --git a/sinkhandler/src/distributed_input_sink_handler.cpp b/sinkhandler/src/distributed_input_sink_handler.cpp index 20a5a1342c96404637520c0a2b07a2c7e178dc89..13ff24fc80cef29a030d2703d908280ec9624bdb 100644 --- a/sinkhandler/src/distributed_input_sink_handler.cpp +++ b/sinkhandler/src/distributed_input_sink_handler.cpp @@ -26,6 +26,15 @@ namespace DistributedHardware { namespace DistributedInput { IMPLEMENT_SINGLE_INSTANCE(DistributedInputSinkHandler); +DistributedInputSinkHandler::DistributedInputSinkHandler() +{ + DHLOGI("DInputSinkHandler construct."); + std::lock_guard lock(proxyMutex_); + if (sinkSvrRecipient_ == nullptr) { + sinkSvrRecipient_ = new (std::nothrow) DInputSinkSvrRecipient(); + } +} + DistributedInputSinkHandler::~DistributedInputSinkHandler() { DHLOGI("~DistributedInputSinkHandler"); diff --git a/sourcehandler/include/distributed_input_source_handler.h b/sourcehandler/include/distributed_input_source_handler.h index fb96f6549ca07ac8ad71dcff48754a17b6e43fa9..c496921aad859ecaa88b2bae373ed10cc858d0e4 100644 --- a/sourcehandler/include/distributed_input_source_handler.h +++ b/sourcehandler/include/distributed_input_source_handler.h @@ -71,8 +71,8 @@ public: OHOS::sptr currRemoteObject; }; private: - DistributedInputSourceHandler() = default; - ~DistributedInputSourceHandler(); + DistributedInputSourceHandler(); + ~DistributedInputSourceHandler() = default; class DInputSourceSvrRecipient : public IRemoteObject::DeathRecipient { public: void OnRemoteDied(const wptr &remote) override; diff --git a/sourcehandler/include/load_d_input_source_callback.h b/sourcehandler/include/load_d_input_source_callback.h index befb9d911371633a6322583ddff120e3c3e6e62f..5133351622d0882bca456f0f7efc74fe21b9495c 100644 --- a/sourcehandler/include/load_d_input_source_callback.h +++ b/sourcehandler/include/load_d_input_source_callback.h @@ -23,6 +23,9 @@ namespace DistributedHardware { namespace DistributedInput { class LoadDInputSourceCallback : public SystemAbilityLoadCallbackStub { public: + LoadDInputSourceCallback() = default; + ~LoadDInputSourceCallback() override = default; + explicit LoadDInputSourceCallback(const std::string ¶ms); void OnLoadSystemAbilitySuccess(int32_t systemAbilityId, const sptr &remoteObject) override; void OnLoadSystemAbilityFail(int32_t systemAbilityId) override; diff --git a/sourcehandler/src/distributed_input_source_handler.cpp b/sourcehandler/src/distributed_input_source_handler.cpp index b5b7c7cfeeafedb56e0377f5827af41208b19865..e5e205b31fcb70fca3af09a066a68215ffc2c6bf 100644 --- a/sourcehandler/src/distributed_input_source_handler.cpp +++ b/sourcehandler/src/distributed_input_source_handler.cpp @@ -26,8 +26,17 @@ namespace DistributedHardware { namespace DistributedInput { IMPLEMENT_SINGLE_INSTANCE(DistributedInputSourceHandler); -DistributedInputSourceHandler::~DistributedInputSourceHandler() +DistributedInputSourceHandler::DistributedInputSourceHandler() { + DHLOGI("DInputSourceHandler construct."); + std::lock_guard lock(proxyMutex_); + if (sourceSvrRecipient_ == nullptr) { + sourceSvrRecipient_ = new (std::nothrow) DInputSourceSvrRecipient(); + } + + if (dInputSourceCallback_ == nullptr) { + dInputSourceCallback_ = new (std::nothrow) LoadDInputSourceCallback(); + } } int32_t DistributedInputSourceHandler::InitSource(const std::string ¶ms)