Update InputFrameMailbox.cpp
All checks were successful
CI / React UI Build (push) Successful in 11s
CI / Native Windows Build And Tests (push) Successful in 2m59s
CI / Windows Release Package (push) Has been skipped

This commit is contained in:
Aiden
2026-05-12 20:30:19 +10:00
parent fd4b70ec9c
commit 3e45bba54b

View File

@@ -90,11 +90,22 @@ bool InputFrameMailbox::SubmitFrame(const void* bytes, unsigned rowBytes, uint64
Slot& slot = mSlots[slotIndex]; Slot& slot = mSlots[slotIndex];
const std::size_t destinationRowBytes = mConfig.rowBytes; const std::size_t destinationRowBytes = mConfig.rowBytes;
const std::size_t copyRowBytes = (std::min)(static_cast<std::size_t>(rowBytes), destinationRowBytes); const std::size_t sourceRowBytes = static_cast<std::size_t>(rowBytes);
const unsigned char* source = static_cast<const unsigned char*>(bytes); const unsigned char* source = static_cast<const unsigned char*>(bytes);
if (sourceRowBytes == destinationRowBytes)
{
std::memcpy(slot.bytes.data(), source, destinationRowBytes * static_cast<std::size_t>(mConfig.height));
}
else
{
const std::size_t copyRowBytes = (std::min)(sourceRowBytes, destinationRowBytes);
for (unsigned y = 0; y < mConfig.height; ++y) for (unsigned y = 0; y < mConfig.height; ++y)
{ {
std::memcpy(slot.bytes.data() + static_cast<std::size_t>(y) * destinationRowBytes, source + static_cast<std::size_t>(y) * rowBytes, copyRowBytes); std::memcpy(
slot.bytes.data() + static_cast<std::size_t>(y) * destinationRowBytes,
source + static_cast<std::size_t>(y) * sourceRowBytes,
copyRowBytes);
}
} }
slot.state = InputFrameSlotState::Ready; slot.state = InputFrameSlotState::Ready;