On Wed, Sep 07, 2011 at 04:36:50PM -0700, Jason Gerecke wrote:
> We now call XRRFreeScreenResources as soon as practical to allow the
> now-following logic to return at its leisure. Additionally, we also
> copy the data from 'crtc_info' locally and free it ASAP.
> 
> Signed-off-by: Jason Gerecke <killert...@gmail.com>
> ---
>  Changes from v2:
>   * Don't use crtc_info after free
> 

Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net>

Cheers,
  Peter

>  tools/xsetwacom.c |   16 ++++++++++------
>  1 files changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c
> index 9d47ea6..7bc5b54 100644
> --- a/tools/xsetwacom.c
> +++ b/tools/xsetwacom.c
> @@ -2006,6 +2006,7 @@ static void _set_matrix(Display *dpy, XDevice *dev,
>  static void set_output_xrandr(Display *dpy, XDevice *dev, param_t *param, 
> int argc, char **argv)
>  {
>       int i, found = 0;
> +     int x, y, width, height;
>       char *output_name;
>       XRRScreenResources *res;
>       XRROutputInfo *output_info;
> @@ -2014,7 +2015,6 @@ static void set_output_xrandr(Display *dpy, XDevice 
> *dev, param_t *param, int ar
>       output_name = argv[0];
>  
>       res = XRRGetScreenResources(dpy, DefaultRootWindow(dpy));
> -
>       for (i = 0; i < res->noutput && !found; i++)
>       {
>               output_info = XRRGetOutputInfo(dpy, res, res->outputs[i]);
> @@ -2026,8 +2026,13 @@ static void set_output_xrandr(Display *dpy, XDevice 
> *dev, param_t *param, int ar
>                       continue;
>  
>               crtc_info = XRRGetCrtcInfo (dpy, res, output_info->crtc);
> -             TRACE("CRTC (%dx%d) %dx%d\n", crtc_info->x, crtc_info->y,
> -                     crtc_info->width, crtc_info->height);
> +             x = crtc_info->x;
> +             y = crtc_info->y;
> +             width = crtc_info->width;
> +             height = crtc_info->height;
> +             XRRFreeCrtcInfo(crtc_info);
> +
> +             TRACE("CRTC (%dx%d) %dx%d\n", x, y, width, height);
>  
>               if (strcmp(output_info->name, output_name) == 0)
>               {
> @@ -2035,18 +2040,17 @@ static void set_output_xrandr(Display *dpy, XDevice 
> *dev, param_t *param, int ar
>                       break;
>               }
>       }
> +     XRRFreeScreenResources(res);
>  
>       /* crtc holds our screen info, need to compare to actual screen size */
>       if (found)
>       {
>               TRACE("Setting CRTC %s\n", output_name);
> -             _set_matrix(dpy, dev, crtc_info->x, crtc_info->y,
> -                         crtc_info->width, crtc_info->height);
> +             _set_matrix(dpy, dev, x, y, width, height);
>       } else
>               printf("Unable to find output '%s'. "
>                       "Output may not be connected.\n", output_name);
>  
> -     XRRFreeScreenResources(res);
>  }
>  
>  /**
> -- 
> 1.7.6
> 

------------------------------------------------------------------------------
Doing More with Less: The Next Generation Virtual Desktop 
What are the key obstacles that have prevented many mid-market businesses
from deploying virtual desktops?   How do next-generation virtual desktops
provide companies an easier-to-deploy, easier-to-manage and more affordable
virtual desktop model.http://www.accelacomm.com/jaw/sfnl/114/51426474/
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to