From ce84decc76532d0643ec78ba667c865ec91aa485 Mon Sep 17 00:00:00 2001 From: 15690690116 Date: Tue, 15 Jul 2025 11:23:08 +0800 Subject: [PATCH 1/2] test Signed-off-by: 15690690116 --- frameworks/fontmgr/src/font_manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/fontmgr/src/font_manager.cpp b/frameworks/fontmgr/src/font_manager.cpp index 07dfcc5..3956964 100644 --- a/frameworks/fontmgr/src/font_manager.cpp +++ b/frameworks/fontmgr/src/font_manager.cpp @@ -124,8 +124,8 @@ std::vector FontManager::GetFontFullName(const int32_t &fd) return fullNameVector; } - int ret = fontMgr->GetFontFullName(fd, fullNameVec); - if (ret != SUCCESS) { + int ret = fontMgr->GaetFontFullName(fd, fullNameVec); + if (rest != SUCCESS) { FONT_LOGE("GetFontFullName failed, err:%{public}d", ret); return fullNameVector; } -- Gitee From bef38e7d3dbbd21765fb7518a298a5cf578a55ec Mon Sep 17 00:00:00 2001 From: 15690690116 Date: Sat, 19 Jul 2025 16:30:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E8=BF=87=E7=A8=8B=E8=A2=AB=E5=8D=8F=E5=8A=A9?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 15690690116 --- frameworks/fontmgr/src/font_manager.cpp | 6 ++-- service/include/font_manager_server.h | 3 +- service/src/font_manager_server.cpp | 40 +++++++++++++++---------- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/frameworks/fontmgr/src/font_manager.cpp b/frameworks/fontmgr/src/font_manager.cpp index 3956964..b9b3feb 100644 --- a/frameworks/fontmgr/src/font_manager.cpp +++ b/frameworks/fontmgr/src/font_manager.cpp @@ -124,8 +124,8 @@ std::vector FontManager::GetFontFullName(const int32_t &fd) return fullNameVector; } - int ret = fontMgr->GaetFontFullName(fd, fullNameVec); - if (rest != SUCCESS) { + int ret = fontMgr->GetFontFullName(fd, fullNameVec); + if (ret != SUCCESS) { FONT_LOGE("GetFontFullName failed, err:%{public}d", ret); return fullNameVector; } @@ -133,8 +133,8 @@ std::vector FontManager::GetFontFullName(const int32_t &fd) for (const auto &name : fullNameVec) { if (name.strData && name.strLen > 0) { std::string fullnameStr = Utf16BEToUtf8(name.strData.get(), name.strLen); - fullNameVector.emplace_back(std::move(fullnameStr)); FONT_LOGI("GetFontFullname, fullnameStr:%{public}s", fullnameStr.c_str()); + fullNameVector.emplace_back(std::move(fullnameStr)); } } return fullNameVector; diff --git a/service/include/font_manager_server.h b/service/include/font_manager_server.h index ad86eec..189f6a9 100644 --- a/service/include/font_manager_server.h +++ b/service/include/font_manager_server.h @@ -43,7 +43,8 @@ protected: void OnStop(const SystemAbilityOnDemandReason &startReason) override; private: - void UnloadFontServiceAbility(); + void AddUnloadFontServiceTask(); + void RemoveUnloadFontServiceTask(); int32_t CheckPermission(); // font service unload event handler. std::shared_ptr handler_; diff --git a/service/src/font_manager_server.cpp b/service/src/font_manager_server.cpp index 431807b..edbd740 100644 --- a/service/src/font_manager_server.cpp +++ b/service/src/font_manager_server.cpp @@ -39,43 +39,51 @@ FontManagerServer::FontManagerServer(int32_t saId, bool runOnCreate) : SystemAbi int32_t FontManagerServer::InstallFont(const int32_t fd, int32_t &outValue) { - int32_t err = CheckPermission(); - if (err != SUCCESS) { - outValue = err; - return SUCCESS; + RemoveUnloadFontServiceTask(); + int32_t ret = CheckPermission(); + if (ret != SUCCESS) { + outValue = ret; + } else { + outValue = FontManager::GetInstance()->InstallFont(fd); } - outValue = FontManager::GetInstance()->InstallFont(fd); - UnloadFontServiceAbility(); + AddUnloadFontServiceTask(); return SUCCESS; } int32_t FontManagerServer::UninstallFont(const std::string &fontName, int32_t &outValue) { - int32_t err = CheckPermission(); - if (err != SUCCESS) { - outValue = err; - return SUCCESS; + RemoveUnloadFontServiceTask(); + int32_t ret = CheckPermission(); + if (ret != SUCCESS) { + outValue = ret; + } else { + outValue = FontManager::GetInstance()->UninstallFont(fontName); } - outValue = FontManager::GetInstance()->UninstallFont(fontName); - UnloadFontServiceAbility(); + AddUnloadFontServiceTask(); return SUCCESS; } -void FontManagerServer::UnloadFontServiceAbility() +void FontManagerServer::AddUnloadFontServiceTask() { auto task = [this]() { auto fontSaLoadManager = DelayedSingleton::GetInstance(); if (fontSaLoadManager != nullptr) { - FONT_LOGI("FontManagerServer::UnloadFontServiceAbility start to unload fontManager SA."); + FONT_LOGI("FontManagerServer start to unload fontManager SA."); fontSaLoadManager->UnloadFontService(FONT_SA_ID); } }; if (handler_ != nullptr) { - handler_->RemoveTask(UNLOAD_TASK); handler_->PostTask(task, UNLOAD_TASK, DELAY_MILLISECONDS_FOR_UNLOAD_SA); } } +void FontManagerServer::RemoveUnloadFontServiceTask() +{ + if (handler_ != nullptr) { + handler_->RemoveTask(UNLOAD_TASK); + } +} + void FontManagerServer::OnStart(const SystemAbilityOnDemandReason &startReason) { FONT_LOGI("FontManagerServer OnStart, startReason name %{public}s", startReason.GetName().c_str()); @@ -87,7 +95,7 @@ void FontManagerServer::OnStart(const SystemAbilityOnDemandReason &startReason) } FileUtils::DeleteDir(FONTS_TEMP_PATH, false); handler_ = std::make_shared(AppExecFwk::EventRunner::Create(true)); - UnloadFontServiceAbility(); + AddUnloadFontServiceTask(); } void FontManagerServer::OnStop(const SystemAbilityOnDemandReason &stopReason) -- Gitee