diff options
author | iovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2007-07-17 23:29:52 +0000 |
---|---|---|
committer | iovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2007-07-17 23:29:52 +0000 |
commit | 427b2689f88f6b07b6f74fc24b9073bc7de1bc4b (patch) | |
tree | 9e3729c84a4be51bc45a412342be9385c0056441 | |
parent | de076487197495a590080cbe8367295dffd1324d (diff) |
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
-rw-r--r-- | recordmydesktop/src/get_frame.c | 2 | ||||
-rw-r--r-- | recordmydesktop/src/initialize_data.c | 3 | ||||
-rw-r--r-- | 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<row_end+1;i++){ for(j=column_start;j<column_end+1;j++){ blockno=i*blocknum_x+j; |