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. --- Changes from v1: * Free crtc_info
tools/xsetwacom.c | 13 +++++++++---- 1 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c index 9d47ea6..dd0a3e5 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,6 +2040,7 @@ 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) @@ -2046,7 +2052,6 @@ static void set_output_xrandr(Display *dpy, XDevice *dev, param_t *param, int ar printf("Unable to find output '%s'. " "Output may not be connected.\n", output_name); - XRRFreeScreenResources(res); } /** -- 1.7.6 ------------------------------------------------------------------------------ Get a FREE DOWNLOAD! and learn more about uberSVN rich system, user administration capabilities and model configuration. Take the hassle out of deploying and managing Subversion and the tools developers use with it. http://p.sf.net/sfu/wandisco-d2d-2 _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel