From: Hwankyu Jhun Date: Wed, 3 Jan 2024 08:25:28 +0000 (+0900) Subject: Add locking mutex for thread safe issues X-Git-Tag: accepted/tizen/unified/20240104.053214~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5f52eb5bff8ab8e0731aba3f080cffa6b5a2bc35;p=platform%2Fcore%2Fapi%2Fapp-control.git Add locking mutex for thread safe issues This patch addes locking mutex for thread safety. Change-Id: I18bdf83dd061c598ad1d24b7783b2464030a76cb Signed-off-by: Hwankyu Jhun --- diff --git a/src/app-control/app_control_broker.cc b/src/app-control/app_control_broker.cc index 779b6bd..10f1fbe 100644 --- a/src/app-control/app_control_broker.cc +++ b/src/app-control/app_control_broker.cc @@ -103,6 +103,7 @@ void AppControlBroker::FlushPendingItem(int id) { g_idle_add([](gpointer data) -> gboolean { int req_id = GPOINTER_TO_INT(data); auto* broker = AppControlBroker::GetInst(); + std::lock_guard lock(broker->GetRecMutex()); auto item = broker->FindPendingItem(req_id); if (item == nullptr) return G_SOURCE_REMOVE; @@ -131,6 +132,7 @@ void AppControlBroker::FlushPendingItem(int id) { void AppControlBroker::AppControlResultBroker(int req_id, int result, void* user_data) { auto* broker = AppControlBroker::GetInst(); + std::lock_guard lock(broker->GetRecMutex()); auto request_context = broker->FindRequestContext(req_id); if (request_context == nullptr) { _E("Invalid request"); @@ -161,6 +163,7 @@ void AppControlBroker::AppControlResultBroker(int req_id, int result, void AppControlBroker::AppControlResultCb(int req_id, int result, void* user_data) { auto* broker = AppControlBroker::GetInst(); + std::lock_guard lock(broker->GetRecMutex()); auto item = broker->FindPendingItem(req_id); if (item != nullptr) { item->SetResultInfo(std::make_shared(result, user_data)); @@ -174,6 +177,7 @@ void AppControlBroker::AppControlResultCb(int req_id, int result, void AppControlBroker::AppControlReplyBroker(bundle* b, int req_id, aul_svc_result_val result, void* user_data) { auto* broker = AppControlBroker::GetInst(); + std::lock_guard lock(broker->GetRecMutex()); auto request_context = broker->FindRequestContext(req_id); if (request_context == nullptr) return; @@ -196,6 +200,7 @@ void AppControlBroker::AppControlReplyBroker(bundle* b, int req_id, void AppControlBroker::AppControlReplyCb(bundle* b, int req_id, aul_svc_result_val result, void* user_data) { auto* broker = AppControlBroker::GetInst(); + std::lock_guard lock(broker->GetRecMutex()); auto item = broker->FindPendingItem(req_id); if (item != nullptr) { item->SetReplyInfo(std::make_shared( @@ -237,6 +242,7 @@ void AppControlBroker::HandleAppStartedResult(AppControl* app_control, [](int launched_pid, void* data) { int req_id = GPOINTER_TO_INT(data); auto* broker = AppControlBroker::GetInst(); + std::lock_guard lock(broker->GetRecMutex()); auto request_context = broker->FindRequestContext(req_id); if (request_context == nullptr) return; @@ -312,6 +318,7 @@ void AppControlBroker::CopyCalleeInfo(AppControl* dst, AppControl* src) { void AppControlBroker::SendLaunchRequest(AppControl* app_control, std::shared_ptr context) { + std::lock_guard lock(GetRecMutex()); int ret = CheckAppControl(app_control); if (ret != APP_CONTROL_ERROR_NONE) THROW(ret); @@ -360,6 +367,7 @@ void AppControlBroker::SendLaunchRequest(AppControl* app_control, void AppControlBroker::SendLaunchRequest(AppControl* app_control, AppControl** reply, app_control_result_e* result) { + std::lock_guard lock(GetRecMutex()); int ret = CheckAppControl(app_control); if (ret != APP_CONTROL_ERROR_NONE) THROW(ret); @@ -387,6 +395,7 @@ void AppControlBroker::SendLaunchRequest(AppControl* app_control, void AppControlBroker::SendResumeRequest(AppControl* app_control, std::shared_ptr context) { + std::lock_guard lock(GetRecMutex()); try { std::string app_id = app_control->GetAppId(); } catch (Exception& e) {