[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: Id30edce2cd29c0f9c24cd52ba5fb33f7c56a3100 Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
This commit is contained in:
parent
ca255c29ce
commit
de2a5dcd48
1 changed files with 5 additions and 5 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue