summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibEDID
diff options
context:
space:
mode:
authorLiav A <liavalb@gmail.com>2022-03-05 22:08:10 +0200
committerAndreas Kling <kling@serenityos.org>2022-03-08 22:07:59 +0100
commitdf5fa20beed27b18d31a018af2113a3870dda926 (patch)
treea8aa1c9e71814f2c0b619e90315a9142df2c3b38 /Userland/Libraries/LibEDID
parentebbf977be5df3dcfa23aadb1e1704e31fc424754 (diff)
downloadserenity-df5fa20beed27b18d31a018af2113a3870dda926.zip
LibEDID: Fix DetailedTiming::pixel_clock_khz result
The stored value is in units of 10 kHz, which means that to get the value in kHz, we need to multiply it by 10 and not 10000.
Diffstat (limited to 'Userland/Libraries/LibEDID')
-rw-r--r--Userland/Libraries/LibEDID/EDID.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/Userland/Libraries/LibEDID/EDID.cpp b/Userland/Libraries/LibEDID/EDID.cpp
index 6f7319095b..599df45a45 100644
--- a/Userland/Libraries/LibEDID/EDID.cpp
+++ b/Userland/Libraries/LibEDID/EDID.cpp
@@ -665,7 +665,9 @@ Optional<FixedPoint<16>> Parser::gamma() const
u32 Parser::DetailedTiming::pixel_clock_khz() const
{
- return (u32)m_edid.read_le(&m_detailed_timings.pixel_clock) * 10000;
+ // Note: The stored value is in units of 10 kHz, which means that to get the
+ // value in kHz, we need to multiply it by 10.
+ return (u32)m_edid.read_le(&m_detailed_timings.pixel_clock) * 10;
}
u16 Parser::DetailedTiming::horizontal_addressable_pixels() const
@@ -768,7 +770,8 @@ FixedPoint<16, u32> Parser::DetailedTiming::refresh_rate() const
if (total_pixels == 0)
return {};
// Use a bigger fixed point representation due to the large numbers involved and then downcast
- return FixedPoint<32, u64>(pixel_clock_khz()) / total_pixels;
+ // Note: We need to convert the pixel clock from kHz to Hertz to actually calculate this correctly.
+ return FixedPoint<32, u64>(pixel_clock_khz() * 1000) / total_pixels;
}
ErrorOr<IterationDecision> Parser::for_each_established_timing(Function<IterationDecision(EstablishedTiming const&)> callback) const