summaryrefslogtreecommitdiff
path: root/src/protocols/Screencopy.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-24 20:01:38 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-24 20:01:44 +0100
commiteb570c88e65171eaf3a25d278640d80e42c3af9a (patch)
treed7faff5e32885e6ff7c43010e5f0936ab5f207e1 /src/protocols/Screencopy.cpp
parent1a91c6ee603e3e779f288ad9189992faeda944f8 (diff)
screencopy: clamp damage to framebuffer
Diffstat (limited to 'src/protocols/Screencopy.cpp')
-rw-r--r--src/protocols/Screencopy.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp
index f42fa3a5..eb71b648 100644
--- a/src/protocols/Screencopy.cpp
+++ b/src/protocols/Screencopy.cpp
@@ -409,7 +409,8 @@ void CScreencopyProtocolManager::sendFrameDamage(SScreencopyFrame* frame) {
return;
const auto RECT = pixman_region32_extents(g_pHyprOpenGL->m_RenderData.pDamage);
- zwlr_screencopy_frame_v1_send_damage(frame->resource, RECT->x1, RECT->y1, RECT->x2 - RECT->x1, RECT->y2 - RECT->y1);
+ zwlr_screencopy_frame_v1_send_damage(frame->resource, std::clamp(RECT->x1, 0, frame->buffer->width), std::clamp(RECT->y1, 0, frame->buffer->height),
+ std::clamp(RECT->x2 - RECT->x1, 0, frame->buffer->width - RECT->x1), std::clamp(RECT->y2 - RECT->y1, 0, frame->buffer->height - RECT->y1));
}
bool CScreencopyProtocolManager::copyFrameShm(SScreencopyFrame* frame, timespec* now) {