From 14be1f7ddba34c59b22bedebcde7fbfab63fbe13 Mon Sep 17 00:00:00 2001 From: hwzhangchuang Date: Wed, 6 Dec 2023 14:51:53 +0800 Subject: [PATCH] modify dinput sa maybe CAN NOT start again after crash Signed-off-by: hwzhangchuang --- .../distributed_input_source_transport.cpp | 9 ++++- .../src/distributed_input_sink_handler.cpp | 33 +++++++++---------- .../src/distributed_input_source_handler.cpp | 33 +++++++++---------- 3 files changed, 40 insertions(+), 35 deletions(-) diff --git a/services/source/transport/src/distributed_input_source_transport.cpp b/services/source/transport/src/distributed_input_source_transport.cpp index e6c370e..b253ff3 100644 --- a/services/source/transport/src/distributed_input_source_transport.cpp +++ b/services/source/transport/src/distributed_input_source_transport.cpp @@ -1102,7 +1102,14 @@ void DistributedInputSourceTransport::CalculateLatency(int32_t sessionId, const return; } - deltaTime_ = GetCurrentTimeUs() - sendTime_; + uint64_t curTimeUs = GetCurrentTimeUs(); + if (curTimeUs <= sendTime_) { + DHLOGE("Latency time error, currtime is before than send time, curTime: %llu us, sendTime: %llu us", + curTimeUs, sendTime_); + return; + } + + deltaTime_ = curTimeUs - sendTime_; deltaTimeAll_ += deltaTime_; recvNum_ += 1; eachLatencyDetails_ += (std::to_string(deltaTime_) + DINPUT_SPLIT_COMMA); diff --git a/sinkhandler/src/distributed_input_sink_handler.cpp b/sinkhandler/src/distributed_input_sink_handler.cpp index be4eeca..95541e3 100644 --- a/sinkhandler/src/distributed_input_sink_handler.cpp +++ b/sinkhandler/src/distributed_input_sink_handler.cpp @@ -42,32 +42,31 @@ DistributedInputSinkHandler::~DistributedInputSinkHandler() int32_t DistributedInputSinkHandler::InitSink(const std::string ¶ms) { - DHLOGD("InitSource"); + DHLOGI("DistributedInputSinkHandler InitSink begin"); std::unique_lock lock(proxyMutex_); - if (!DInputSAManager::GetInstance().HasDInputSinkProxy()) { - sptr samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - if (!samgr) { - DHLOGE("Failed to get system ability mgr."); - return ERR_DH_INPUT_SINK_HANDLER_INIT_SINK_SA_FAIL; - } - sptr loadCallback(new LoadDInputSinkCallback(params)); - HisyseventUtil::GetInstance().SysEventWriteBehavior(DINPUT_INIT, - "dinput sink LoadSystemAbility call"); - int32_t ret = samgr->LoadSystemAbility(DISTRIBUTED_HARDWARE_INPUT_SINK_SA_ID, loadCallback); - if (ret != ERR_OK) { - DHLOGE("Failed to Load systemAbility, systemAbilityId:%d, ret code:%d", - DISTRIBUTED_HARDWARE_INPUT_SINK_SA_ID, ret); - return ERR_DH_INPUT_SINK_HANDLER_INIT_SINK_SA_FAIL; - } + sptr samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + if (!samgr) { + DHLOGE("Failed to get system ability mgr."); + return ERR_DH_INPUT_SINK_HANDLER_INIT_SINK_SA_FAIL; + } + sptr loadCallback(new LoadDInputSinkCallback(params)); + HisyseventUtil::GetInstance().SysEventWriteBehavior(DINPUT_INIT, + "dinput sink LoadSystemAbility call"); + int32_t ret = samgr->LoadSystemAbility(DISTRIBUTED_HARDWARE_INPUT_SINK_SA_ID, loadCallback); + if (ret != ERR_OK) { + DHLOGE("Failed to Load systemAbility, systemAbilityId:%d, ret code:%d", + DISTRIBUTED_HARDWARE_INPUT_SINK_SA_ID, ret); + return ERR_DH_INPUT_SINK_HANDLER_INIT_SINK_SA_FAIL; } auto waitStatus = proxyConVar_.wait_for(lock, std::chrono::milliseconds(INPUT_LOAD_SA_TIMEOUT_MS), [this]() { return (DInputSAManager::GetInstance().HasDInputSinkProxy()); }); if (!waitStatus) { - DHLOGE("dinput load sa timeout."); + DHLOGE("dinput load sink sa timeout."); return ERR_DH_INPUT_SINK_HANDLER_INIT_SINK_SA_FAIL; } + DHLOGI("DistributedInputSinkHandler InitSink end"); return DH_SUCCESS; } diff --git a/sourcehandler/src/distributed_input_source_handler.cpp b/sourcehandler/src/distributed_input_source_handler.cpp index e47ae50..8faa6eb 100644 --- a/sourcehandler/src/distributed_input_source_handler.cpp +++ b/sourcehandler/src/distributed_input_source_handler.cpp @@ -41,32 +41,31 @@ DistributedInputSourceHandler::DistributedInputSourceHandler() int32_t DistributedInputSourceHandler::InitSource(const std::string ¶ms) { - DHLOGD("InitSource"); + DHLOGI("DistributedInputSourceHandler InitSource begin"); std::unique_lock lock(proxyMutex_); - if (!DInputSAManager::GetInstance().HasDInputSourceProxy()) { - sptr samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - if (!samgr) { - DHLOGE("Failed to get system ability mgr."); - return ERR_DH_INPUT_SINK_HANDLER_INIT_SOURCE_SA_FAIL; - } - sptr loadCallback(new LoadDInputSourceCallback(params)); - HisyseventUtil::GetInstance().SysEventWriteBehavior(DINPUT_INIT, - "dinput init source sa start."); - int32_t ret = samgr->LoadSystemAbility(DISTRIBUTED_HARDWARE_INPUT_SOURCE_SA_ID, loadCallback); - if (ret != ERR_OK) { - DHLOGE("Failed to Load systemAbility, systemAbilityId:%d, ret code:%d", - DISTRIBUTED_HARDWARE_INPUT_SOURCE_SA_ID, ret); - return ERR_DH_INPUT_SINK_HANDLER_INIT_SOURCE_SA_FAIL; - } + sptr samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + if (!samgr) { + DHLOGE("Failed to get system ability mgr."); + return ERR_DH_INPUT_SINK_HANDLER_INIT_SOURCE_SA_FAIL; + } + sptr loadCallback(new LoadDInputSourceCallback(params)); + HisyseventUtil::GetInstance().SysEventWriteBehavior(DINPUT_INIT, + "dinput init source sa start."); + int32_t ret = samgr->LoadSystemAbility(DISTRIBUTED_HARDWARE_INPUT_SOURCE_SA_ID, loadCallback); + if (ret != ERR_OK) { + DHLOGE("Failed to Load systemAbility, systemAbilityId:%d, ret code:%d", + DISTRIBUTED_HARDWARE_INPUT_SOURCE_SA_ID, ret); + return ERR_DH_INPUT_SINK_HANDLER_INIT_SOURCE_SA_FAIL; } auto waitStatus = proxyConVar_.wait_for(lock, std::chrono::milliseconds(INPUT_LOAD_SA_TIMEOUT_MS), [this]() { return (DInputSAManager::GetInstance().HasDInputSourceProxy()); }); if (!waitStatus) { - DHLOGE("dinput load sa timeout."); + DHLOGE("dinput load source sa timeout."); return ERR_DH_INPUT_SINK_HANDLER_INIT_SOURCE_SA_FAIL; } + DHLOGI("DistributedInputSourceHandler InitSource end"); return DH_SUCCESS; }