!121 修改dinput进程crash后,概率无法拉起问题

Merge pull request !121 from zhangchuang/master
This commit is contained in:
openharmony_ci
2023-12-06 15:19:43 +00:00
committed by Gitee
4 changed files with 48 additions and 46 deletions
+7 -10
View File
@@ -414,17 +414,14 @@ void InputHub::GetDeviceHandler()
continue;
}
Device* device = GetDeviceByFdLocked(eventItem.data.fd);
if (!device) {
DHLOGE(
"Received unexpected epoll event 0x%08x for unknown fd %d.",
eventItem.events, eventItem.data.fd);
continue;
}
if (eventItem.events & EPOLLHUP) {
DHLOGI("Removing device %s due to epoll hang-up event.",
device->identifier.name.c_str());
Device* device = GetDeviceByFdLocked(eventItem.data.fd);
if (!device) {
DHLOGE("Received unexpected epoll event 0x%08x for unknown fd %d.",
eventItem.events, eventItem.data.fd);
continue;
}
DHLOGI("Removing device %s due to epoll hang-up event.", device->identifier.name.c_str());
deviceChanged_ = true;
CloseDeviceLocked(*device);
}
@@ -651,7 +651,7 @@ int32_t DistributedInputSourceTransport::LatencyCount(const std::string &deviceI
return ERR_DH_INPUT_SERVER_SOURCE_TRANSPORT_LATENCY_FAIL;
}
DHLOGI("LatencyCount deviceId:%s, sessionId: %d, smsg:%s.",
DHLOGD("LatencyCount deviceId:%s, sessionId: %d, smsg:%s.",
GetAnonyString(deviceId).c_str(), sessionId, SetAnonyId(smsg).c_str());
return DH_SUCCESS;
}
@@ -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);
@@ -42,32 +42,31 @@ DistributedInputSinkHandler::~DistributedInputSinkHandler()
int32_t DistributedInputSinkHandler::InitSink(const std::string &params)
{
DHLOGD("InitSource");
DHLOGI("DistributedInputSinkHandler InitSink begin");
std::unique_lock<std::mutex> lock(proxyMutex_);
if (!DInputSAManager::GetInstance().HasDInputSinkProxy()) {
sptr<ISystemAbilityManager> samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
if (!samgr) {
DHLOGE("Failed to get system ability mgr.");
return ERR_DH_INPUT_SINK_HANDLER_INIT_SINK_SA_FAIL;
}
sptr<LoadDInputSinkCallback> 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<ISystemAbilityManager> samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
if (!samgr) {
DHLOGE("Failed to get system ability mgr.");
return ERR_DH_INPUT_SINK_HANDLER_INIT_SINK_SA_FAIL;
}
sptr<LoadDInputSinkCallback> 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;
}
@@ -41,32 +41,31 @@ DistributedInputSourceHandler::DistributedInputSourceHandler()
int32_t DistributedInputSourceHandler::InitSource(const std::string &params)
{
DHLOGD("InitSource");
DHLOGI("DistributedInputSourceHandler InitSource begin");
std::unique_lock<std::mutex> lock(proxyMutex_);
if (!DInputSAManager::GetInstance().HasDInputSourceProxy()) {
sptr<ISystemAbilityManager> samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
if (!samgr) {
DHLOGE("Failed to get system ability mgr.");
return ERR_DH_INPUT_SINK_HANDLER_INIT_SOURCE_SA_FAIL;
}
sptr<LoadDInputSourceCallback> 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<ISystemAbilityManager> samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
if (!samgr) {
DHLOGE("Failed to get system ability mgr.");
return ERR_DH_INPUT_SINK_HANDLER_INIT_SOURCE_SA_FAIL;
}
sptr<LoadDInputSourceCallback> 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;
}