diff options
Diffstat (limited to 'recordmydesktop')
-rw-r--r-- | recordmydesktop/src/rmd_get_frame.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/recordmydesktop/src/rmd_get_frame.c b/recordmydesktop/src/rmd_get_frame.c index 4018d3d..3983319 100644 --- a/recordmydesktop/src/rmd_get_frame.c +++ b/recordmydesktop/src/rmd_get_frame.c @@ -206,6 +206,14 @@ static void rmdMoveCaptureArea( XRectangle *rect, rect->y = (t_y < 0 ) ? 0 : ((t_y + rect->height > height) ? height - rect->height : t_y); } + +static void rmdBlocksReset(unsigned int blocks_w, unsigned int blocks_h) { + memset(yblocks, 0, blocks_w * blocks_h * sizeof(*yblocks)); + memset(ublocks, 0, blocks_w * blocks_h * sizeof(*ublocks)); + memset(vblocks, 0, blocks_w * blocks_h * sizeof(*vblocks)); +} + + /** * Extract cache blocks from damage list * @@ -225,9 +233,7 @@ static void rmdBlocksFromList( RectArea **root, unsigned int blocknum_x, unsigned int blocknum_y) { - memset(yblocks, 0, blocknum_x * blocknum_y * sizeof(*yblocks)); - memset(ublocks, 0, blocknum_x * blocknum_y * sizeof(*ublocks)); - memset(vblocks, 0, blocknum_x * blocknum_y * sizeof(*vblocks)); + rmdBlocksReset(blocknum_x, blocknum_y); for (RectArea *temp = *root; temp; temp = temp->next) { int row_start, row_end, column_start, column_end; @@ -472,9 +478,7 @@ void *rmdGetFrame(ProgData *pdata) { } pthread_mutex_lock(&pdata->yuv_mutex); - for(int i = 0; i < blocknum_x * blocknum_y; i++) - yblocks[i] = ublocks[i] = vblocks[i] = 0; - + rmdBlocksReset(blocknum_x, blocknum_y); rmdUpdateYuvBuffer( &pdata->enc_data->yuv, front_buff, back_buff, |