Running xdbedizzy through valgrind (with no arguments to xdbedizzy) and no 'matching double buffer capable visual' produced "definitely lost: 800 bytes in 2 blocks." "still reachable: 41,240 bytes in 30 blocks." This patch reduces this to "definitely lost: 0 bytes in 0 blocks." "still reachable: 35 bytes in 2 blocks."
Signed-off-by: Jeff Smith <[email protected]> --- xdbedizzy.c | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/xdbedizzy.c b/xdbedizzy.c index aadcf82..09c9ee4 100644 --- a/xdbedizzy.c +++ b/xdbedizzy.c @@ -124,6 +124,7 @@ unsigned long getColor(Colormap cmap, const char *color_name) status = XAllocNamedColor(dpy, cmap, color_name, &color, &exact); if (status == 0) { fprintf(stderr, "%s: Couldn't get color: %s\n", ProgramName, color_name); + XCloseDisplay(dpy); exit(EXIT_FAILURE); } return (color.pixel); @@ -263,8 +264,11 @@ choose_DB_visual( /* Input */ Display *dpy, Bool listVis, int visclass, } } } + XFree(XvisInfo); } + XdbeFreeVisualInfo(DBEvisInfo); + if (chosenVisual) { if (listVis) { printf("\n"); @@ -528,11 +532,13 @@ int main(int argc, char *argv[]) if (!XdbeQueryExtension (dpy, &dbeMajorVersion, &dbeMinorVersion)) { fprintf(stderr, "%s: XdbeQueryExtension() failed.\n", ProgramName); + XCloseDisplay(dpy); exit(EXIT_FAILURE); } if ((visual = choose_DB_visual(dpy, listVis, visclass, &depth)) == NULL) { fprintf(stderr, "%s: Failed to find matching double buffer capable visual.\n", ProgramName); + XCloseDisplay(dpy); exit(EXIT_FAILURE); } fprintf(stdout, "%s: Chose visual ID: %#4x depth: %d\n\n", @@ -559,6 +565,7 @@ int main(int argc, char *argv[]) CWBorderPixel | CWColormap | CWBackPixel, &attrs); if (win == None) { fprintf(stderr, "%s: Couldn't window.\n", ProgramName); + XCloseDisplay(dpy); exit(EXIT_FAILURE); } @@ -572,6 +579,8 @@ int main(int argc, char *argv[]) buf = XdbeAllocateBackBufferName (dpy, win, swapInfo.swap_action); if (buf == None) { fprintf(stderr, "%s: Couldn't create buffers\n", ProgramName); + XDestroyWindow(dpy, win); + XCloseDisplay(dpy); exit(EXIT_FAILURE); } else { @@ -600,6 +609,14 @@ int main(int argc, char *argv[]) main_loop(); + XUnmapWindow(dpy, win); + + XFreeGC(dpy, gc_black); + XFreeGC(dpy, gc_pink); + XFreeGC(dpy, gc_green); + XFreeGC(dpy, gc_orange); + XFreeGC(dpy, gc_blue); + XDestroyWindow(dpy, win); XCloseDisplay(dpy); -- 1.6.0.6 __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
