mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
[hardware][interfaces][graphics] fix -Wimplicit-int-float-conversion
IEEE 754 single precision cannot precisely represent the value of large 32b integrals. Accept the imprecision from implicit casts by making the casts explicit. One case is comparing the value before and after converting a float to an int32_t and back, the other is used when printing a value. Bug: 139945549 Test: mm Change-Id: I23375d73cd16be0741defc6395046bd3b22d1335 Merged-in: Id30edce2cd29c0f9c24cd52ba5fb33f7c56a3100 Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
This commit is contained in:
@@ -1389,7 +1389,7 @@ static std::string rectString(hwc_rect_t rect) {
|
||||
}
|
||||
|
||||
static std::string approximateFloatString(float f) {
|
||||
if (static_cast<int32_t>(f) == f) {
|
||||
if (static_cast<float>(static_cast<int32_t>(f)) == f) {
|
||||
return std::to_string(static_cast<int32_t>(f));
|
||||
}
|
||||
int32_t truncated = static_cast<int32_t>(f * 10);
|
||||
@@ -1680,10 +1680,10 @@ std::string HWC2On1Adapter::Display::Config::toString(bool splitLine) const {
|
||||
if (mAttributes.count(HWC2::Attribute::DpiX) != 0 &&
|
||||
mAttributes.at(HWC2::Attribute::DpiX) != -1) {
|
||||
std::memset(buffer, 0, BUFFER_SIZE);
|
||||
writtenBytes = snprintf(buffer, BUFFER_SIZE,
|
||||
", DPI: %.1f x %.1f",
|
||||
mAttributes.at(HWC2::Attribute::DpiX) / 1000.0f,
|
||||
mAttributes.at(HWC2::Attribute::DpiY) / 1000.0f);
|
||||
writtenBytes =
|
||||
snprintf(buffer, BUFFER_SIZE, ", DPI: %.1f x %.1f",
|
||||
static_cast<float>(mAttributes.at(HWC2::Attribute::DpiX)) / 1000.0f,
|
||||
static_cast<float>(mAttributes.at(HWC2::Attribute::DpiY)) / 1000.0f);
|
||||
output.append(buffer, writtenBytes);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user