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