From 3e45bba54b9eb04baa661bc380da7334d4a74fe7 Mon Sep 17 00:00:00 2001 From: Aiden <68633820+awils27@users.noreply.github.com> Date: Tue, 12 May 2026 20:30:19 +1000 Subject: [PATCH] Update InputFrameMailbox.cpp --- .../frames/InputFrameMailbox.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/RenderCadenceCompositor/frames/InputFrameMailbox.cpp b/apps/RenderCadenceCompositor/frames/InputFrameMailbox.cpp index 52baa15..b8b9f75 100644 --- a/apps/RenderCadenceCompositor/frames/InputFrameMailbox.cpp +++ b/apps/RenderCadenceCompositor/frames/InputFrameMailbox.cpp @@ -90,11 +90,22 @@ bool InputFrameMailbox::SubmitFrame(const void* bytes, unsigned rowBytes, uint64 Slot& slot = mSlots[slotIndex]; const std::size_t destinationRowBytes = mConfig.rowBytes; - const std::size_t copyRowBytes = (std::min)(static_cast(rowBytes), destinationRowBytes); + const std::size_t sourceRowBytes = static_cast(rowBytes); const unsigned char* source = static_cast(bytes); - for (unsigned y = 0; y < mConfig.height; ++y) + if (sourceRowBytes == destinationRowBytes) { - std::memcpy(slot.bytes.data() + static_cast(y) * destinationRowBytes, source + static_cast(y) * rowBytes, copyRowBytes); + std::memcpy(slot.bytes.data(), source, destinationRowBytes * static_cast(mConfig.height)); + } + else + { + const std::size_t copyRowBytes = (std::min)(sourceRowBytes, destinationRowBytes); + for (unsigned y = 0; y < mConfig.height; ++y) + { + std::memcpy( + slot.bytes.data() + static_cast(y) * destinationRowBytes, + source + static_cast(y) * sourceRowBytes, + copyRowBytes); + } } slot.state = InputFrameSlotState::Ready;