From 83ba56e9e21ecd00f1bd2ab21720f0cbd48a6436 Mon Sep 17 00:00:00 2001 From: Ethan Date: Wed, 10 Jul 2024 12:51:38 +0000 Subject: [PATCH] fix app record not release Signed-off-by: Ethan --- services/src/concurrent_task_controller.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/services/src/concurrent_task_controller.cpp b/services/src/concurrent_task_controller.cpp index 27f1552..9d6f030 100644 --- a/services/src/concurrent_task_controller.cpp +++ b/services/src/concurrent_task_controller.cpp @@ -551,20 +551,16 @@ void TaskController::NewForeground(int uid, int pid) void TaskController::NewForegroundAppRecord(int pid, int uiTid, bool ddlEnabled) { - ForegroundAppRecord *tempRecord = nullptr; - if (pid == curGamePid_) { - tempRecord = new ForegroundAppRecord(pid, uiTid, false); - } else { - tempRecord = new ForegroundAppRecord(pid, uiTid, true); + auto appRecord = foregroundApp_.emplace_back(pid, uiTid, pid != curGamePid_); + if (foregroundApp_.size() <= 0 || appRecord.GetPid() != pid) { + CONCUR_LOGE("pid %{public}d create app record failed", pid); + return; } - if (tempRecord->IsValid()) { - foregroundApp_.push_back(*tempRecord); + if (appRecord.IsValid()) { if (ddlEnabled && pid != curGamePid_) { - tempRecord->AddKeyThread(uiTid, PRIO_RT); + appRecord.AddKeyThread(uiTid, PRIO_RT); } - tempRecord->BeginScene(); - } else { - delete tempRecord; + appRecord.BeginScene(); } } -- Gitee