From 046279817bacdae59f18a91fa0b28b5b9998806a Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 8 Jul 2025 12:00:05 +0800 Subject: [PATCH] clean code Signed-off-by: zzz --- .../include/screen_setting_helper.h | 2 + .../src/screen_session_manager.cpp | 40 +++++++++++++------ .../src/screen_setting_helper.cpp | 9 +++++ .../screen_setting_helper_test.cpp | 16 ++++++++ 4 files changed, 54 insertions(+), 13 deletions(-) diff --git a/window_scene/screen_session_manager/include/screen_setting_helper.h b/window_scene/screen_session_manager/include/screen_setting_helper.h index 5564a61514..d204132d6e 100644 --- a/window_scene/screen_session_manager/include/screen_setting_helper.h +++ b/window_scene/screen_session_manager/include/screen_setting_helper.h @@ -16,6 +16,7 @@ #ifndef OHOS_ROSEN_WINDOW_SCENE_SCREEN_SETTING_HELPER_H #define OHOS_ROSEN_WINDOW_SCENE_SCREEN_SETTING_HELPER_H +#include #include #include #include @@ -61,6 +62,7 @@ public: static void UnRegisterSettingExtendScreenDpiObserver(); static bool GetSettingExtendScreenDpi(float& coef, const std::string& key = SETTING_EXTEND_DPI_KEY); static bool ConvertStrToUint64(const std::string& str, uint64_t& num); + static bool ConvertStrToInt32(const std::string& str, int32_t& num); private: static const constexpr char* SETTING_DPI_KEY {"user_set_dpi_value"}; diff --git a/window_scene/screen_session_manager/src/screen_session_manager.cpp b/window_scene/screen_session_manager/src/screen_session_manager.cpp index bcbcb93a61..cfb574274f 100644 --- a/window_scene/screen_session_manager/src/screen_session_manager.cpp +++ b/window_scene/screen_session_manager/src/screen_session_manager.cpp @@ -10530,9 +10530,15 @@ void ScreenSessionManager::CalculateRotatedDisplay(Rotation rotation, const DMRe int32_t phyOffset = 0; if (phyOffsets.size() > 1 && (FoldScreenStateInternel::IsSecondaryDisplayFoldDevice() || GetFoldStatus() != FoldStatus::FOLDED)) { - phyOffset = static_cast(std::stoi(phyOffsets[1])); - } else { - phyOffset = static_cast(std::stoi(phyOffsets[0])); + if (!ScreenSettingHelper::ConvertStrToInt32(phyOffsets[1], phyOffset)) { + TLOGE(WmsLogTag::DMS, "transfer phyOffset1 failed."); + return; + } + } else if (phyOffsets.size() > 0) { + if (!ScreenSettingHelper::ConvertStrToInt32(phyOffsets[0], phyOffset)) { + TLOGE(WmsLogTag::DMS, "transfer phyOffset0 failed."); + return; + } } Rotation phyOffsetRotation = ConvertIntToRotation(phyOffset); uint32_t correctedRotation = (static_cast(rotation) + static_cast(phyOffsetRotation)) % @@ -10546,24 +10552,32 @@ void ScreenSessionManager::CalculateRotatedDisplay(Rotation rotation, const DMRe displayArea.width_ = displayAreaCopy.height_; displayArea.height_ = displayAreaCopy.width_; displayRegion.posX_ = displayRegionCopy.posY_; - displayRegion.posY_ = screenRegion.width_ - (displayRegionCopy.posX_ + displayRegionCopy.width_); + displayRegion.posY_ = static_cast(screenRegion.width_) - + (displayRegionCopy.posX_ + static_cast(displayRegionCopy.width_)); displayArea.posX_ = displayAreaCopy.posY_; - displayArea.posY_ = screenRegion.width_ - (displayAreaCopy.posX_ + displayAreaCopy.width_); + displayArea.posY_ = static_cast(screenRegion.width_) - + (displayAreaCopy.posX_ + static_cast(displayAreaCopy.width_)); break; case Rotation::ROTATION_180: - displayRegion.posX_ = screenRegion.width_ - (displayRegionCopy.posX_ + displayRegionCopy.width_); - displayRegion.posY_ = screenRegion.height_ - (displayRegionCopy.posY_ + displayRegionCopy.height_); - displayArea.posX_ = screenRegion.width_ - (displayAreaCopy.posX_ + displayAreaCopy.width_); - displayArea.posY_ = screenRegion.height_ - (displayAreaCopy.posY_ + displayAreaCopy.height_); + displayRegion.posX_ = static_cast(screenRegion.width_) - + (displayRegionCopy.posX_ + static_cast(displayRegionCopy.width_)); + displayRegion.posY_ = static_cast(screenRegion.height_) - + (displayRegionCopy.posY_ + static_cast(displayRegionCopy.height_)); + displayArea.posX_ = static_cast(screenRegion.width_) - + (displayAreaCopy.posX_ + static_cast(displayAreaCopy.width_)); + displayArea.posY_ = static_cast(screenRegion.height_) - + (displayAreaCopy.posY_ + static_cast(displayAreaCopy.height_)); break; case Rotation::ROTATION_270: displayRegion.width_ = displayRegionCopy.height_; displayRegion.height_ = displayRegionCopy.width_; displayArea.width_ = displayAreaCopy.height_; displayArea.height_ = displayAreaCopy.width_; - displayRegion.posX_ = screenRegion.height_ - (displayRegionCopy.posY_ + displayRegionCopy.height_); + displayRegion.posX_ = static_cast(screenRegion.height_) - + (displayRegionCopy.posY_ + static_cast(displayRegionCopy.height_)); displayRegion.posY_ = displayRegionCopy.posX_; - displayArea.posX_ = screenRegion.height_ - (displayAreaCopy.posY_ + displayAreaCopy.height_); + displayArea.posX_ = static_cast(screenRegion.height_) - + (displayAreaCopy.posY_ + static_cast(displayAreaCopy.height_)); displayArea.posY_ = displayAreaCopy.posX_; break; default: @@ -10590,8 +10604,8 @@ void ScreenSessionManager::CalculateScreenArea(const DMRect& displayRegion, cons float ratioHeight = static_cast(displayArea.height_) / static_cast(displayRegion.height_); screenArea.posX_ = screenRegion.posX_ + static_cast(ratioX * screenRegion.width_); screenArea.posY_ = screenRegion.posY_ + static_cast(ratioY * screenRegion.height_); - screenArea.width_ = static_cast(ratioWidth * screenRegion.width_); - screenArea.height_ = static_cast(ratioHeight * screenRegion.height_); + screenArea.width_ = static_cast(ratioWidth * screenRegion.width_); + screenArea.height_ = static_cast(ratioHeight * screenRegion.height_); } DMError ScreenSessionManager::SetPrimaryDisplaySystemDpi(float virtualPixelRatio) diff --git a/window_scene/screen_session_manager/src/screen_setting_helper.cpp b/window_scene/screen_session_manager/src/screen_setting_helper.cpp index 220c94ee03..5ec6975713 100644 --- a/window_scene/screen_session_manager/src/screen_setting_helper.cpp +++ b/window_scene/screen_session_manager/src/screen_setting_helper.cpp @@ -600,5 +600,14 @@ bool ScreenSettingHelper::GetSettingExtendScreenDpi(float& coef, const std::stri } return true; } + +bool ScreenSettingHelper::ConvertStrToInt32(const std::string& str, int32_t& num) +{ + auto res = std::from_chars(str.data(), str.data() + str.size(), num); + if (res.ec != std::errc()) { + return false; + } + return true; +} } // namespace Rosen } // namespace OHOS diff --git a/window_scene/test/dms_unittest/screen_setting_helper_test.cpp b/window_scene/test/dms_unittest/screen_setting_helper_test.cpp index 4899c76eea..32a4e1921a 100644 --- a/window_scene/test/dms_unittest/screen_setting_helper_test.cpp +++ b/window_scene/test/dms_unittest/screen_setting_helper_test.cpp @@ -867,6 +867,22 @@ namespace { std::map multiScreenInfoMap = screenSettingHelper.GetMultiScreenInfo(key); ASSERT_TRUE(multiScreenInfoMap.empty()); } + + /** + * @tc.name: ConvertStrToInt32 + * @tc.desc: Test ConvertStrToInt32 func + * @tc.type: FUNC + */ + HWTEST_F(ScreenSettingHelperTest, ConvertStrToInt32, Function | SmallTest | Level3) + { + ScreenSettingHelper screenSettingHelper = ScreenSettingHelper(); + std::string str = "not_a_number"; + int32_t num1 = 0; + EXPECT_FALSE(screenSettingHelper.ConvertStrToInt32(str, num1)); + str = "123"; + EXPECT_TRUE(screenSettingHelper.ConvertStrToInt32(str, num1)); + EXPECT_EQ(123, num1); + } } } // namespace Rosen } // namespace OHOS \ No newline at end of file -- Gitee