diff options
Diffstat (limited to 'recordmydesktop/src/get_frame.c')
| -rw-r--r-- | recordmydesktop/src/get_frame.c | 45 | 
1 files changed, 15 insertions, 30 deletions
diff --git a/recordmydesktop/src/get_frame.c b/recordmydesktop/src/get_frame.c index d020f97..d3fb2ab 100644 --- a/recordmydesktop/src/get_frame.c +++ b/recordmydesktop/src/get_frame.c @@ -29,6 +29,8 @@  void *GetFrame(ProgData *pdata){      int tlist_sel=0; +    unsigned char *dtap=NULL;   //pointer switching among shared memory and +                                //normal buffer      pthread_mutex_t pmut,tmut;      uint msk_ret;      WGeometry mouse_pos_abs,mouse_pos_rel,mouse_pos_temp; @@ -76,9 +78,6 @@ void *GetFrame(ProgData *pdata){                  level*=100;                  level/=pixel_total;                  pdata->args.noshared=(level<pdata->args.shared_thres); -//                 if(!pdata->args.noshared){ -//                     fprintf(stderr,"shared screenshot with %d\n",level); -//                 }              }          }          if(pdata->args.xfixes_cursor){ @@ -126,6 +125,10 @@ void *GetFrame(ProgData *pdata){                          pdata->args.noshared,                          pdata->args.no_quick_subsample);          else{ + +            dtap=(((pdata->args.nocondshared)&&(!pdata->args.noshared))? +                 ((unsigned char*)pdata->shimage->data): +                 ((unsigned char*)pdata->image->data));              if(pdata->args.noshared){                  GetZPixmap( pdata->dpy,                              pdata->specs.root, @@ -134,34 +137,16 @@ void *GetFrame(ProgData *pdata){                              pdata->brwin.rgeom.y,                              pdata->brwin.rgeom.width,                              pdata->brwin.rgeom.height); -                pthread_mutex_lock(&pdata->yuv_mutex); -                if(pdata->args.no_quick_subsample){ -                    UPDATE_YUV_BUFFER_IM_AVG((&pdata->enc_data->yuv),((unsigned char*)pdata->image->data), -                    (pdata->enc_data->x_offset),(pdata->enc_data->y_offset), -                    (pdata->brwin.rgeom.width),(pdata->brwin.rgeom.height)); -                } -                else{ -                    UPDATE_YUV_BUFFER_IM((&pdata->enc_data->yuv),((unsigned char*)pdata->image->data), -                    (pdata->enc_data->x_offset),(pdata->enc_data->y_offset), -                    (pdata->brwin.rgeom.width),(pdata->brwin.rgeom.height)); -                } -                pthread_mutex_unlock(&pdata->yuv_mutex); -            } -            else{ -                pthread_mutex_lock(&pdata->yuv_mutex); -                if(pdata->args.no_quick_subsample){ -                    UPDATE_YUV_BUFFER_IM_AVG((&pdata->enc_data->yuv),((unsigned char*)pdata->shimage->data), -                    (pdata->enc_data->x_offset),(pdata->enc_data->y_offset), -                    (pdata->brwin.rgeom.width),(pdata->brwin.rgeom.height)); -                } -                else{ -                    UPDATE_YUV_BUFFER_IM((&pdata->enc_data->yuv),((unsigned char*)pdata->shimage->data), -                    (pdata->enc_data->x_offset),(pdata->enc_data->y_offset), -                    (pdata->brwin.rgeom.width),(pdata->brwin.rgeom.height)); -                } - -                pthread_mutex_unlock(&pdata->yuv_mutex);              } +            pthread_mutex_lock(&pdata->yuv_mutex); +            UPDATE_YUV_BUFFER((&pdata->enc_data->yuv),dtap, +                                (pdata->enc_data->x_offset), +                                (pdata->enc_data->y_offset), +                                (pdata->brwin.rgeom.width), +                                (pdata->brwin.rgeom.height), +                                pdata->args.noshared, +                                pdata->args.no_quick_subsample); +            pthread_mutex_unlock(&pdata->yuv_mutex);          }          if(pdata->args.xfixes_cursor){          //avoid segfaults  | 
