[Power] Fix variable type to avoid invalidation 42/317942/2 accepted/tizen/unified/20240924.153222 accepted/tizen/unified/toolchain/20241004.101306 accepted/tizen/unified/x/20240925.015909 accepted/tizen/unified/x/asan/20241013.235602
authorYunhee Seo <yuni.seo@samsung.com>
Mon, 23 Sep 2024 02:25:21 +0000 (11:25 +0900)
committerPiotr Kosko/Tizen API (PLT) /SRPOL/Engineer/Samsung Electronics <p.kosko@samsung.com>
Mon, 23 Sep 2024 08:24:42 +0000 (10:24 +0200)
[Bug] Double can be represented with some inaccuracy e.g. 30.0 can be
   29.999999 which in case of casting to int is casted to 29 instead of 30
   as expected.

[Solution] Added std round to proper round double value to closest
inteager instead of cutting of the decimal part of number.

Change-Id: I20e889df9d6a0ff4434fc18b77016287f0bd45c7
Signed-off-by: Yunhee Seo <yuni.seo@samsung.com>
src/power/power_manager.cc

index 4973b0c4cbfc89be0bf4d0f2268b02acc0fa38f7..db0b4fc6645eb6746b01b4d16a399a7f05625d61 100644 (file)
@@ -183,7 +183,7 @@ PlatformResult PowerManager::SetScreenBrightness(double brightness) {
     return result;
   }
 
-  int platform_brightness = (int)(brightness * max_brightness_);
+  int platform_brightness = std::round(brightness * max_brightness_);
   if (0 == platform_brightness) {
     // The value '0' on native level is treated as setting ScreenState to "SCREEN_DIM", thus the
     // brightness values come from range from 1 to max_brightness_ (which is usually equal to