[host] capture: add damage rectangles to capture interface

This commit is contained in:
Quantum 2021-07-10 18:39:40 -04:00 committed by Geoffrey McRae
parent 69b20aee05
commit 80ab4b5393
2 changed files with 6 additions and 0 deletions

View File

@ -23,6 +23,7 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdint.h> #include <stdint.h>
#include "common/framebuffer.h" #include "common/framebuffer.h"
#include "common/KVMFR.h"
typedef enum CaptureResult typedef enum CaptureResult
{ {
@ -69,6 +70,8 @@ typedef struct CaptureFrame
unsigned int stride; unsigned int stride;
CaptureFormat format; CaptureFormat format;
CaptureRotation rotation; CaptureRotation rotation;
uint32_t damageRectsCount;
FrameDamageRect damageRects[KVMFR_MAX_DAMAGE_RECTS];
} }
CaptureFrame; CaptureFrame;

View File

@ -239,6 +239,9 @@ static bool sendFrame(void)
fi->blockScreensaver = os_blockScreensaver(); fi->blockScreensaver = os_blockScreensaver();
app.frameValid = true; app.frameValid = true;
fi->damageRectsCount = frame.damageRectsCount;
memcpy(fi->damageRects, frame.damageRects, frame.damageRectsCount * sizeof(FrameDamageRect));
// put the framebuffer on the border of the next page // put the framebuffer on the border of the next page
// this is to allow for aligned DMA transfers by the receiver // this is to allow for aligned DMA transfers by the receiver
FrameBuffer * fb = (FrameBuffer *)(((uint8_t*)fi) + fi->offset); FrameBuffer * fb = (FrameBuffer *)(((uint8_t*)fi) + fi->offset);