On Tue, Feb 9, 2016 at 5:29 AM, Gregor Best <g...@unobtanium.de> wrote:
> On Tue, Feb 09, 2016 at 02:43:32AM +0000, Stuart Henderson wrote: > > I just noticed xstatbar using "quite a lot" more memory than I was > > expecting. Does anyone fancy trying to track down the leak? It doesn't > > look like any flags are needed to trigger the leak, but using "-s 0" > > to avoid sleeping between updates makes it very easy to spot. > > [...] > > I've attached a patch to fix that. The problem is that XCopyArea > generates either a GraphicsExpose or a NoExpose event after it's done. > Since xstatbar doesn't have the traditional X event loop, the events > just accumulate in the queue. I'll talk to upstream to integrate the > patch there, since I assume this doesn't only affect Xenocara. > > -- > Gregor > > Index: Makefile > =================================================================== > RCS file: /mnt/media/cvs/ports/sysutils/xstatbar/Makefile,v > retrieving revision 1.16 > diff -u -p -r1.16 Makefile > --- Makefile 3 Jul 2015 08:42:19 -0000 1.16 > +++ Makefile 9 Feb 2016 10:20:42 -0000 > @@ -5,7 +5,7 @@ ONLY_FOR_ARCHS= ${APM_ARCHS} > COMMENT= simple system monitor bar > > DISTNAME= xstatbar-0.5 > -REVISION= 7 > +REVISION= 8 > > CATEGORIES= sysutils x11 > > Index: patches/patch-xstatbar_c > =================================================================== > RCS file: patches/patch-xstatbar_c > diff -N patches/patch-xstatbar_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-xstatbar_c 9 Feb 2016 10:20:24 -0000 > @@ -0,0 +1,18 @@ > +--- xstatbar.c.orig Tue Feb 9 11:18:02 2016 > ++++ xstatbar.c Tue Feb 9 11:19:05 2016 > +@@ -297,6 +297,7 @@ > + void > + draw() > + { > ++ XEvent dummy; > + static int spacing = 10; > + int x, y; > + int cpu; > +@@ -323,6 +324,7 @@ > + /* copy the buffer to the window and flush */ > + XCopyArea(XINFO.disp, XINFO.buf, XINFO.win, XINFO.gc, > + 0, 0, XINFO.width, XINFO.height, 0, 0); > ++ XNextEvent(XINFO.disp, &dummy); > + XFlush(XINFO.disp); > + } > + > > Thanks! Pushed to the upstream/github repo.