Merge pull request !1052 from weishaoxiong/master
This commit is contained in:
openharmony_ci 2024-01-20 09:38:47 +00:00 committed by Gitee
commit a7a7eaf770
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
8 changed files with 84 additions and 18 deletions

View File

@ -621,7 +621,7 @@ void JsInputMethodEngineSetting::OnInputStop()
return;
}
IMSA_HILOGI("run in");
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -631,6 +631,7 @@ void JsInputMethodEngineSetting::OnInputStop()
JsCallbackHandler::Traverse(entry->vecCopy);
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsInputMethodEngineSetting::OnSetCallingWindow(uint32_t windowId)
@ -670,7 +671,7 @@ void JsInputMethodEngineSetting::OnSetSubtype(const SubProperty &property)
return;
}
IMSA_HILOGI("subtypeId: %{public}s", property.id.c_str());
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -698,6 +699,7 @@ void JsInputMethodEngineSetting::OnSetSubtype(const SubProperty &property)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getSubtypeProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsInputMethodEngineSetting::OnSecurityChange(int32_t security)
@ -709,7 +711,7 @@ void JsInputMethodEngineSetting::OnSecurityChange(int32_t security)
return;
}
IMSA_HILOGI("run in: %{public}s", type.c_str());
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -732,6 +734,7 @@ void JsInputMethodEngineSetting::OnSecurityChange(int32_t security)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getSecurityProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
uv_work_t *JsInputMethodEngineSetting::GetUVwork(const std::string &type, EntrySetter entrySetter)
@ -794,5 +797,17 @@ std::shared_ptr<JsInputMethodEngineSetting::UvEntry> JsInputMethodEngineSetting:
}
return entry;
}
void JsInputMethodEngineSetting::FreeWorkIfFail(int ret, uv_work_t *work)
{
if (ret == 0 || work == nullptr) {
return;
}
UvEntry *data = static_cast<UvEntry *>(work->data);
delete data;
delete work;
IMSA_HILOGE("uv_queue_work failed retCode:%{public}d", ret);
}
} // namespace MiscServices
} // namespace OHOS

View File

@ -111,6 +111,7 @@ private:
static std::shared_ptr<AppExecFwk::EventHandler> GetEventHandler();
std::shared_ptr<UvEntry> GetEntry(const std::string &type, EntrySetter entrySetter = nullptr);
uv_work_t *GetUVwork(const std::string &type, EntrySetter entrySetter = nullptr);
void FreeWorkIfFail(int ret, uv_work_t *work);
uv_loop_s *loop_ = nullptr;
std::recursive_mutex mutex_;
std::map<std::string, std::vector<std::shared_ptr<JSCallbackObject>>> jsCbMap_;

View File

@ -553,7 +553,7 @@ void JsKeyboardDelegateSetting::OnTextChange(const std::string &text)
return;
}
IMSA_HILOGI("run in");
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -573,6 +573,12 @@ void JsKeyboardDelegateSetting::OnTextChange(const std::string &text)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getTextChangeProperty });
},
uv_qos_user_initiated);
if (ret != 0) {
IMSA_HILOGE("uv_queue_work failed retCode:%{public}d", ret);
UvEntry *data = static_cast<UvEntry *>(work->data);
delete data;
delete work;
}
}
void JsKeyboardDelegateSetting::OnEditorAttributeChange(const InputAttribute &inputAttribute)

View File

@ -92,7 +92,7 @@ void PanelListenerImpl::OnPanelStatus(uint32_t windowId, bool isShow)
uv_loop_s *loop = nullptr;
napi_get_uv_event_loop(callback.second->env_, &loop);
IMSA_HILOGI("windowId = %{public}u, type = %{public}s", windowId, type.c_str());
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -106,6 +106,12 @@ void PanelListenerImpl::OnPanelStatus(uint32_t windowId, bool isShow)
JsCallbackHandler::Traverse({ entry->cbCopy });
},
uv_qos_user_initiated);
if (ret != 0) {
IMSA_HILOGE("uv_queue_work failed retCode:%{public}d", ret);
UvEntry *data = static_cast<UvEntry *>(work->data);
delete data;
delete work;
}
}
} // namespace MiscServices
} // namespace OHOS

View File

@ -707,7 +707,7 @@ void JsGetInputMethodController::OnSelectByRange(int32_t start, int32_t end)
return;
}
IMSA_HILOGI("start: %{public}d, end: %{public}d", start, end);
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -735,6 +735,7 @@ void JsGetInputMethodController::OnSelectByRange(int32_t start, int32_t end)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsGetInputMethodController::OnSelectByMovement(int32_t direction)
@ -746,7 +747,7 @@ void JsGetInputMethodController::OnSelectByMovement(int32_t direction)
return;
}
IMSA_HILOGI("direction: %{public}d", direction);
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -774,6 +775,7 @@ void JsGetInputMethodController::OnSelectByMovement(int32_t direction)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsGetInputMethodController::InsertText(const std::u16string &text)
@ -786,7 +788,7 @@ void JsGetInputMethodController::InsertText(const std::u16string &text)
return;
}
IMSA_HILOGI("run in");
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -811,6 +813,7 @@ void JsGetInputMethodController::InsertText(const std::u16string &text)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getInsertTextProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsGetInputMethodController::DeleteRight(int32_t length)
@ -822,7 +825,7 @@ void JsGetInputMethodController::DeleteRight(int32_t length)
return;
}
IMSA_HILOGI("length: %{public}d", length);
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -847,6 +850,7 @@ void JsGetInputMethodController::DeleteRight(int32_t length)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getDeleteForwardProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsGetInputMethodController::DeleteLeft(int32_t length)
@ -858,7 +862,7 @@ void JsGetInputMethodController::DeleteLeft(int32_t length)
return;
}
IMSA_HILOGI("length: %{public}d", length);
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -883,6 +887,7 @@ void JsGetInputMethodController::DeleteLeft(int32_t length)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getDeleteBackwardProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsGetInputMethodController::SendKeyboardStatus(const KeyboardStatus &status)
@ -895,7 +900,7 @@ void JsGetInputMethodController::SendKeyboardStatus(const KeyboardStatus &status
return;
}
IMSA_HILOGI("status: %{public}d", static_cast<int32_t>(status));
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -920,6 +925,7 @@ void JsGetInputMethodController::SendKeyboardStatus(const KeyboardStatus &status
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getSendKeyboardStatusProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
napi_value JsGetInputMethodController::CreateSendFunctionKey(napi_env env, int32_t functionKey)
@ -944,7 +950,7 @@ void JsGetInputMethodController::SendFunctionKey(const FunctionKey &functionKey)
return;
}
IMSA_HILOGI("functionKey: %{public}d", static_cast<int32_t>(functionKey.GetEnterKeyType()));
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -974,6 +980,7 @@ void JsGetInputMethodController::SendFunctionKey(const FunctionKey &functionKey)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getSendFunctionKeyProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsGetInputMethodController::MoveCursor(const Direction direction)
@ -986,7 +993,7 @@ void JsGetInputMethodController::MoveCursor(const Direction direction)
return;
}
IMSA_HILOGI("direction: %{public}d", static_cast<int32_t>(direction));
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -1011,6 +1018,7 @@ void JsGetInputMethodController::MoveCursor(const Direction direction)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getMoveCursorProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsGetInputMethodController::HandleExtendAction(int32_t action)
@ -1022,7 +1030,7 @@ void JsGetInputMethodController::HandleExtendAction(int32_t action)
return;
}
IMSA_HILOGI("action: %{public}d", action);
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -1046,6 +1054,7 @@ void JsGetInputMethodController::HandleExtendAction(int32_t action)
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getHandleExtendActionProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
std::u16string JsGetInputMethodController::GetText(const std::string &type, int32_t number)
@ -1060,7 +1069,7 @@ std::u16string JsGetInputMethodController::GetText(const std::string &type, int3
return u"";
}
IMSA_HILOGI("type: %{public}s, number: %{public}d", type.c_str(), number);
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -1086,6 +1095,7 @@ std::u16string JsGetInputMethodController::GetText(const std::string &type, int3
entry->textResultHandler->SetValue(text);
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
return Str8ToStr16(textResultHandler->GetValue());
}
@ -1100,7 +1110,7 @@ int32_t JsGetInputMethodController::GetTextIndexAtCursor()
return -1;
}
IMSA_HILOGI("run in");
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -1117,6 +1127,7 @@ int32_t JsGetInputMethodController::GetTextIndexAtCursor()
entry->indexResultHandler->SetValue(index);
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
return indexResultHandler->GetValue();
}
@ -1149,5 +1160,17 @@ uv_work_t *JsGetInputMethodController::GetUVwork(const std::string &type, EntryS
work->data = entry;
return work;
}
void JsGetInputMethodController::FreeWorkIfFail(int ret, uv_work_t *work)
{
if (ret == 0 || work == nullptr) {
return;
}
UvEntry *data = static_cast<UvEntry *>(work->data);
delete data;
delete work;
IMSA_HILOGE("uv_queue_work failed retCode:%{public}d", ret);
}
} // namespace MiscServices
} // namespace OHOS

View File

@ -228,6 +228,7 @@ private:
};
using EntrySetter = std::function<void(UvEntry &)>;
uv_work_t *GetUVwork(const std::string &type, EntrySetter entrySetter = nullptr);
void FreeWorkIfFail(int ret, uv_work_t *work);
uv_loop_s *loop_ = nullptr;
std::recursive_mutex mutex_;
std::map<std::string, std::vector<std::shared_ptr<JSCallbackObject>>> jsCbMap_;

View File

@ -586,7 +586,7 @@ void JsGetInputMethodSetting::OnImeChange(const Property &property, const SubPro
return;
}
IMSA_HILOGI("run in");
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -617,6 +617,7 @@ void JsGetInputMethodSetting::OnImeChange(const Property &property, const SubPro
JsCallbackHandler::Traverse(entry->vecCopy, { 2, getImeChangeProperty });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
void JsGetInputMethodSetting::OnPanelStatusChange(
@ -634,7 +635,7 @@ void JsGetInputMethodSetting::OnPanelStatusChange(
return;
}
IMSA_HILOGI("status: %{public}u", static_cast<uint32_t>(status));
uv_queue_work_with_qos(
auto ret = uv_queue_work_with_qos(
loop_, work, [](uv_work_t *work) {},
[](uv_work_t *work, int status) {
std::shared_ptr<UvEntry> entry(static_cast<UvEntry *>(work->data), [work](UvEntry *data) {
@ -662,6 +663,7 @@ void JsGetInputMethodSetting::OnPanelStatusChange(
JsCallbackHandler::Traverse(entry->vecCopy, { 1, getWindowInfo });
},
uv_qos_user_initiated);
FreeWorkIfFail(ret, work);
}
uv_work_t *JsGetInputMethodSetting::GetUVwork(const std::string &type, EntrySetter entrySetter)
@ -693,5 +695,16 @@ uv_work_t *JsGetInputMethodSetting::GetUVwork(const std::string &type, EntrySett
work->data = entry;
return work;
}
void JsGetInputMethodSetting::FreeWorkIfFail(int ret, uv_work_t *work)
{
if (ret == 0 || work == nullptr) {
return;
}
UvEntry *data = static_cast<UvEntry *>(work->data);
delete data;
delete work;
IMSA_HILOGE("uv_queue_work failed retCode:%{public}d", ret);
}
} // namespace MiscServices
} // namespace OHOS

View File

@ -136,6 +136,7 @@ private:
};
using EntrySetter = std::function<void(UvEntry &)>;
uv_work_t *GetUVwork(const std::string &type, EntrySetter entrySetter = nullptr);
void FreeWorkIfFail(int ret, uv_work_t *work);
static const std::string IMS_CLASS_NAME;
static thread_local napi_ref IMSRef_;
uv_loop_s *loop_ = nullptr;