summaryrefslogtreecommitdiff
path: root/src/protocols/Screencopy.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-07-10 13:17:21 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-07-10 13:17:21 +0200
commitfe54dcb4eb80496ba377efb21eb3edf1ee20ee62 (patch)
tree66c0b9f470c4a97800752e14e1ccb2e0bb07d193 /src/protocols/Screencopy.cpp
parent42f46aeac5e9d73b664f3dd8e8476f1d3c8a2827 (diff)
screencopy: send original damage, avoid extents
Diffstat (limited to 'src/protocols/Screencopy.cpp')
-rw-r--r--src/protocols/Screencopy.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/protocols/Screencopy.cpp b/src/protocols/Screencopy.cpp
index 60b1273e..d79a3473 100644
--- a/src/protocols/Screencopy.cpp
+++ b/src/protocols/Screencopy.cpp
@@ -407,9 +407,11 @@ void CScreencopyProtocolManager::sendFrameDamage(SScreencopyFrame* frame) {
if (!frame->withDamage)
return;
- const auto RECT = pixman_region32_extents(g_pHyprOpenGL->m_RenderData.pDamage);
- zwlr_screencopy_frame_v1_send_damage(frame->resource, std::clamp(RECT->x1, 0, frame->buffer->width), std::clamp(RECT->y1, 0, frame->buffer->height),
+ PIXMAN_DAMAGE_FOREACH(&g_pHyprOpenGL->m_rOriginalDamageRegion) {
+ const auto RECT = &RECTSARR[i];
+ 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) {