From 7a6855c42f705aa05358d9bd9b051666121165cd Mon Sep 17 00:00:00 2001 From: doursse Date: Sun, 18 Dec 2005 11:25:09 +0000 Subject: [PATCH] fix memory leaks and update to new XCB API SVN revision: 19110 --- legacy/evas/src/bin/evas_software_xcb_main.c | 22 ++++++++++++++++--- .../src/bin/evas_software_xcb_perf_load.c | 19 ++++++++++++++-- .../src/bin/evas_software_xcb_perf_test.c | 19 ++++++++++++++-- .../lib/engines/software_xcb/evas_outbuf.c | 5 +++-- 4 files changed, 56 insertions(+), 9 deletions(-) diff --git a/legacy/evas/src/bin/evas_software_xcb_main.c b/legacy/evas/src/bin/evas_software_xcb_main.c index 7677bb1da2..69aa3658b6 100644 --- a/legacy/evas/src/bin/evas_software_xcb_main.c +++ b/legacy/evas/src/bin/evas_software_xcb_main.c @@ -8,6 +8,20 @@ +XCBSCREEN * +get_screen (XCBConnection *c, + int screen) +{ + XCBSCREENIter i; + + i = XCBConnSetupSuccessRepRootsIter(XCBGetSetup(c)); + for (; i.rem; --screen, XCBSCREENNext(&i)) + if (screen == 0) + return i.data; + + return NULL; +} + XCBVISUALTYPE * get_visual(XCBConnection *conn, XCBSCREEN *root) @@ -62,15 +76,16 @@ main(int argc, char **argv) CARD32 value[6]; /* XClassHint chint; */ SizeHints *szhints; + int screen_nbr; - conn = XCBConnectBasic (); + conn = XCBConnect (NULL, &screen_nbr); if (!conn) { printf("Error: cannot open a connection.\n"); exit(-1); } - screen = XCBConnSetupSuccessRepRootsIter (XCBGetSetup(conn)).data; + screen = get_screen (conn, screen_nbr); mask = XCBCWBackingStore | XCBCWColormap | @@ -244,10 +259,11 @@ main(int argc, char **argv) case XCBButtonPress: { XCBButtonPressEvent *ev = (XCBButtonPressEvent *)e; - if (ev->button.id == 3) + if (ev->detail.id == 3) { setdown(); evas_free(evas); + free(e); XCBDisconnect(conn); evas_shutdown(); exit(0); diff --git a/legacy/evas/src/bin/evas_software_xcb_perf_load.c b/legacy/evas/src/bin/evas_software_xcb_perf_load.c index 112c109207..9afbcd5286 100644 --- a/legacy/evas/src/bin/evas_software_xcb_perf_load.c +++ b/legacy/evas/src/bin/evas_software_xcb_perf_load.c @@ -19,6 +19,20 @@ Evas *evas = NULL; int win_w = 240; int win_h = 240; +XCBSCREEN * +get_screen (XCBConnection *c, + int screen) +{ + XCBSCREENIter i; + + i = XCBConnSetupSuccessRepRootsIter(XCBGetSetup(c)); + for (; i.rem; --screen, XCBSCREENNext(&i)) + if (screen == 0) + return i.data; + + return NULL; +} + XCBVISUALTYPE * get_visual(XCBConnection *conn, XCBSCREEN *root) @@ -72,15 +86,16 @@ main(int argc, char **argv) CARD32 value[6]; /* XClassHint chint; */ SizeHints *szhints; + int screen_nbr; - c = XCBConnectBasic (); + c = XCBConnect (NULL, &screen_nbr); if (!c) { printf("Error: cannot open a connection.\n"); exit(-1); } - screen = XCBConnSetupSuccessRepRootsIter (XCBGetSetup(c)).data; + screen = get_screen (c, screen_nbr); mask = CWBackingStore | CWColormap | CWBackPixmap | CWBorderPixel | diff --git a/legacy/evas/src/bin/evas_software_xcb_perf_test.c b/legacy/evas/src/bin/evas_software_xcb_perf_test.c index 5bda13ee81..b98aad283d 100644 --- a/legacy/evas/src/bin/evas_software_xcb_perf_test.c +++ b/legacy/evas/src/bin/evas_software_xcb_perf_test.c @@ -19,6 +19,20 @@ Evas *evas = NULL; int win_w = 240; int win_h = 240; +XCBSCREEN * +get_screen (XCBConnection *c, + int screen) +{ + XCBSCREENIter i; + + i = XCBConnSetupSuccessRepRootsIter(XCBGetSetup(c)); + for (; i.rem; --screen, XCBSCREENNext(&i)) + if (screen == 0) + return i.data; + + return NULL; +} + XCBVISUALTYPE * get_visual(XCBConnection *conn, XCBSCREEN *root) @@ -72,15 +86,16 @@ main(int argc, char **argv) CARD32 value[6]; /* XClassHint chint; */ SizeHints *szhints; + int screen_nbr; - c = XCBConnectBasic (); + c = XCBConnect (NULL, &screen_nbr); if (!c) { printf("Error: cannot open a connection.\n"); exit(-1); } - screen = XCBConnSetupSuccessRepRootsIter (XCBGetSetup(c)).data; + screen = get_screen (c, screen_nbr); mask = CWBackingStore | CWColormap | CWBackPixmap | CWBorderPixel | diff --git a/legacy/evas/src/lib/engines/software_xcb/evas_outbuf.c b/legacy/evas/src/lib/engines/software_xcb/evas_outbuf.c index 0db0aa2a32..75701b4ecc 100644 --- a/legacy/evas/src/lib/engines/software_xcb/evas_outbuf.c +++ b/legacy/evas/src/lib/engines/software_xcb/evas_outbuf.c @@ -921,6 +921,7 @@ evas_software_xcb_outbuf_perf_restore_x(XCBConnection *conn, type = type_rep->atom; format = STRING; retval = NULL; + free(type_rep); cookie = XCBGetProperty(conn, 0, perf->x.root.window, type, format, @@ -942,9 +943,9 @@ evas_software_xcb_outbuf_perf_restore_x(XCBConnection *conn, evas_software_xcb_outbuf_perf_deserialize_x(perf, s); free(s); } - /* FIXME: doesn't seem to be need (from valgrind) */ -/* free(retval); */ } + free(prop_rep); + return perf; }