From 427b2689f88f6b07b6f74fc24b9073bc7de1bc4b Mon Sep 17 00:00:00 2001 From: iovar Date: Tue, 17 Jul 2007 23:29:52 +0000 Subject: get_frame.c: extra parameters pdata->brwind.rgeom.x and pdata->brwind.rgeom.y in BlocksFromList rectinsert.c: added x_offset, y_offset arguments in BlocksFromList to fix segfaults when recording an area instead of the whole desktop. initialize_data.c: initialize dummy_p_size on all cases git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@391 f606c939-3180-4ac9-a4b8-4b8779d57d0a --- recordmydesktop/src/get_frame.c | 2 ++ recordmydesktop/src/initialize_data.c | 3 ++- recordmydesktop/src/rectinsert.c | 10 ++++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/recordmydesktop/src/get_frame.c b/recordmydesktop/src/get_frame.c index 16eef83..0f934b8 100644 --- a/recordmydesktop/src/get_frame.c +++ b/recordmydesktop/src/get_frame.c @@ -245,6 +245,8 @@ void *GetFrame(ProgData *pdata){ pdata->shm_opcode, pdata->args.no_quick_subsample); BlocksFromList(&pdata->rect_root[tlist_sel], + pdata->brwin.rgeom.x, + pdata->brwin.rgeom.y, pdata->enc_data->yuv.y_width/Y_UNIT_WIDTH, pdata->enc_data->yuv.y_height/Y_UNIT_WIDTH); pthread_mutex_unlock(&pdata->yuv_mutex); diff --git a/recordmydesktop/src/initialize_data.c b/recordmydesktop/src/initialize_data.c index 2ceb026..69cfad0 100644 --- a/recordmydesktop/src/initialize_data.c +++ b/recordmydesktop/src/initialize_data.c @@ -58,7 +58,8 @@ int InitializeData(ProgData *pdata, &pdata->npxl); pdata->dummy_p_size=16; } - + else + pdata->dummy_p_size=0; pdata->rect_root[0]=pdata->rect_root[1]=NULL; diff --git a/recordmydesktop/src/rectinsert.c b/recordmydesktop/src/rectinsert.c index b46ec1f..10d9841 100644 --- a/recordmydesktop/src/rectinsert.c +++ b/recordmydesktop/src/rectinsert.c @@ -512,6 +512,8 @@ void ClearList(RectArea **root){ } void BlocksFromList(RectArea **root, + unsigned int x_offset, + unsigned int y_offset, unsigned int blocknum_x, unsigned int blocknum_y){ @@ -529,10 +531,10 @@ void BlocksFromList(RectArea **root, } while(temp!=NULL){ - column_start=temp->geom.x/Y_UNIT_WIDTH; - column_end=(temp->geom.x+temp->geom.width)/Y_UNIT_WIDTH; - row_start=temp->geom.y/Y_UNIT_WIDTH; - row_end=(temp->geom.y+temp->geom.height)/Y_UNIT_WIDTH; + column_start=(temp->geom.x-x_offset)/Y_UNIT_WIDTH; + column_end=(temp->geom.x+temp->geom.width-x_offset)/Y_UNIT_WIDTH; + row_start=(temp->geom.y-y_offset)/Y_UNIT_WIDTH; + row_end=(temp->geom.y+temp->geom.height-y_offset)/Y_UNIT_WIDTH; for(i=row_start;i