Hi,
The XRender pipeline was leaking GCs which are generated on the java-side.
Instead of trying to clean it up at the java-level, I now simply use
Java_sun_java2d_x11_XSurfaceData_XCreateGC which sets the javaGC field
in xsdo,
which is already freed automatically at surface-dispose time.
Thanks, Clemens
--- old/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java 2010-10-22 19:59:12.530975783 +0200
+++ new/src/solaris/classes/sun/java2d/xr/XRSurfaceData.java 2010-10-22 19:59:12.020734687 +0200
@@ -479,8 +485,7 @@
if (xrpipe == null) {
try {
SunToolkit.awtLock();
- xgc = renderQueue.createGC(xid); // TODO: GC leak? where to
- // clean up?
+ xgc = XCreateGC(getNativeOps());
xrpipe = new XRRenderer(maskBuffer.getMaskBuffer());
xrtxpipe = new PixelToShapeConverter(xrpipe);