summaryrefslogtreecommitdiff
path: root/src/protocols/PresentationTime.cpp
diff options
context:
space:
mode:
authorTom Englund <tomenglund26@gmail.com>2024-08-26 14:08:30 +0200
committerGitHub <noreply@github.com>2024-08-26 14:08:30 +0200
commit9c5a37a797ea1f1829859ab5b07016b2f27f739c (patch)
tree709cd6abe37debb1970081a4466188f7084e975b /src/protocols/PresentationTime.cpp
parentca85455a8ed5dbe920a47c1a48de1dd993446481 (diff)
build: fix 32bit builds (#7510)
ensure the correct type is passed to std::clamp and std::max int64_t is different on 64bit compared to 32bit, also in presentationtime tv_sec is __time_t and on 32bit its a 32bit type so right shift count >= width of type. so only bit shift on 64bit. and avoid potential nullptr deref in the for loops, check for .end() before *it <= endID.
Diffstat (limited to 'src/protocols/PresentationTime.cpp')
-rw-r--r--src/protocols/PresentationTime.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/protocols/PresentationTime.cpp b/src/protocols/PresentationTime.cpp
index 335cf557..638435c7 100644
--- a/src/protocols/PresentationTime.cpp
+++ b/src/protocols/PresentationTime.cpp
@@ -58,8 +58,12 @@ void CPresentationFeedback::sendQueued(SP<CQueuedPresentationData> data, timespe
if (reportedFlags & Aquamarine::IOutput::AQ_OUTPUT_PRESENT_HW_COMPLETION)
flags |= WP_PRESENTATION_FEEDBACK_KIND_HW_COMPLETION;
+ __time_t tv_sec = 0;
+ if (sizeof(__time_t) > 4)
+ tv_sec = when->tv_sec >> 32;
+
if (data->wasPresented)
- resource->sendPresented((uint32_t)(when->tv_sec >> 32), (uint32_t)(when->tv_sec & 0xFFFFFFFF), (uint32_t)(when->tv_nsec), untilRefreshNs, (uint32_t)(seq >> 32),
+ resource->sendPresented((uint32_t)tv_sec, (uint32_t)(when->tv_sec & 0xFFFFFFFF), (uint32_t)(when->tv_nsec), untilRefreshNs, (uint32_t)(seq >> 32),
(uint32_t)(seq & 0xFFFFFFFF), (wpPresentationFeedbackKind)flags);
else
resource->sendDiscarded();