on 13.11.07 21.34 Greg Haerr wrote:
This reduced the amount of memory not deallocated by windows but there
is still something not being deallocated.

Put a printf() in the other XSetClip function to see whether
this might be the other leak, or whether we should still look
hard at ChProperties.c


Some long time ago I had that problem with XSetClip() and FLTK too and made a modification that solved the problem for me.

Hermann


int XSetClipMask(Display *display, GC gc, Pixmap mask)
{
        static GR_GC_ID     last_gc_gid = 0;
        static GR_REGION_ID last_region = 0;
        
        GR_REGION_ID    r;
        GR_WINDOW_INFO  info;

        // to avoid a memory leak, delete region if last region hasn't been 
deleted before
        if ( (last_gc_gid == gc->gid) && (last_region != 0) )
        {
          GrDestroyRegion(last_region);
//printf("XSetClipMask remove %d %d %d\n", mask, last_gc_gid, last_region);
          last_region = 0;
          last_gc_gid = 0;
        }
        else
        {
//printf("XSetClipMask NO remove %d %d %d\n", mask, last_gc_gid, last_region);
        }
        
        if (mask == None) {
                GrSetGCRegion(gc->gid, 0);
                return 1;
        }

        GrGetWindowInfo(mask, &info);
        r = GrNewRegionFromPixmap(mask, 0, 0, info.width, info.height);
        GrSetGCRegion(gc->gid, r);

        last_region = r;
        last_gc_gid = gc->gid;
//printf("XSetClipMask crate  %d %d %d\n", mask, last_gc_gid, last_region);

        /*GrDestroyRegion(r);*/ /* FIXME: LEAK: can't destroy region here...*/
        return 1;
}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to