diff options
author | iovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2007-06-08 17:13:18 +0000 |
---|---|---|
committer | iovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2007-06-08 17:13:18 +0000 |
commit | 4f503e6e9c824176f29ecebf6b6adb5e24567214 (patch) | |
tree | bd562b4ed6337268686d9ec3d427b5b339fe02ae | |
parent | 9fbea91679d7f77b2da88a09d6a77afc5498132f (diff) |
get_frame.c: calculate x and y offset of the cursor so that it will appear
correctly.
git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@346 f606c939-3180-4ac9-a4b8-4b8779d57d0a
-rw-r--r-- | recordmydesktop/src/get_frame.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/recordmydesktop/src/get_frame.c b/recordmydesktop/src/get_frame.c index 7021dde..9cdfc6a 100644 --- a/recordmydesktop/src/get_frame.c +++ b/recordmydesktop/src/get_frame.c @@ -280,9 +280,18 @@ void *GetFrame(ProgData *pdata){ pthread_mutex_unlock(&pdata->yuv_mutex); } if(pdata->args.xfixes_cursor){ + int mouse_xoffset, + mouse_yoffset; //avoid segfaults CLIP_DUMMY_POINTER_AREA(mouse_pos_abs,&pdata->brwin, &mouse_pos_temp); + mouse_xoffset=mouse_pos_temp.x-mouse_pos_abs.x; + mouse_yoffset=mouse_pos_temp.y-mouse_pos_abs.y; + if((mouse_xoffset<0) || (mouse_xoffset>mouse_pos_abs.width)) + mouse_xoffset=0; + if((mouse_yoffset<0) || (mouse_yoffset>mouse_pos_abs.height)) + mouse_yoffset=0; + //draw the cursor if((mouse_pos_temp.x>=0)&& (mouse_pos_temp.y>=0)&& @@ -298,6 +307,8 @@ void *GetFrame(ProgData *pdata){ pdata->enc_data->y_offset), mouse_pos_temp.width, mouse_pos_temp.height, + mouse_xoffset, + mouse_yoffset, (xcim->width-mouse_pos_temp.width)); } XFree(xcim); @@ -305,9 +316,17 @@ void *GetFrame(ProgData *pdata){ } if(pdata->args.have_dummy_cursor){ + int mouse_xoffset, + mouse_yoffset; //avoid segfaults CLIP_DUMMY_POINTER_AREA(mouse_pos_abs,&pdata->brwin, &mouse_pos_temp); + mouse_xoffset=mouse_pos_temp.x-mouse_pos_abs.x; + mouse_yoffset=mouse_pos_temp.y-mouse_pos_abs.y; + if((mouse_xoffset<0) || (mouse_xoffset>mouse_pos_abs.width)) + mouse_xoffset=0; + if((mouse_yoffset<0) || (mouse_yoffset>mouse_pos_abs.height)) + mouse_yoffset=0; //draw the cursor if((mouse_pos_temp.x>=0)&& (mouse_pos_temp.y>=0)&& @@ -323,6 +342,8 @@ void *GetFrame(ProgData *pdata){ pdata->enc_data->y_offset), mouse_pos_temp.width, mouse_pos_temp.height, + mouse_xoffset, + mouse_yoffset, pdata->npxl); } } |