On Tue, Sep 20, 2011 at 03:54:23PM -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>

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

Cheers,
  Peter

> ---
> Changes from v3:
> 
>  * Corresponds to patch v3 1/7
>  * No changes.
> 
>  tools/xsetwacom.c |   16 ++++++++++------
>  1 files changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c
> index a0056a7..7c5a744 100644
> --- a/tools/xsetwacom.c
> +++ b/tools/xsetwacom.c
> @@ -2005,6 +2005,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;
> @@ -2013,7 +2014,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]);
> @@ -2025,8 +2025,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)
>               {
> @@ -2034,18 +2039,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

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to