Hi George,
The attached patch should fix two issues (including this one) I
recently noticed with the last commit. Sorry for the regression.
These and a few other changes will be in CVS shortly (perhaps
tonight, or over the weekend).
George Armhold wrote:
Hi,
I am finally getting around to updating my Batik CVS and testing
Thomas' recent fixes
(http://koala.ilog.fr/batik/mlists/batik-dev/archives/msg04022.html)
and I found something that seems to have broken. My batik build is
the absolute latest from CVS.
My code does the following, which used to work prior to the new batik
changes: I install a doc in a JSVGComponent, allow the user to
interactively modify the doc. Then I load a new doc, and when I get a
managerStopped event, I know it's "safe" to access the old doc, using
the ImageTranscoder to rasterize it. When I do this, I get the
following stack trace:
java.lang.NullPointerException
at
org.apache.batik.bridge.SVGImageElementBridge.dispose(SVGImageElementBridge.java:716)
at
org.apache.batik.bridge.AbstractGraphicsNodeBridge.disposeTree(AbstractGraphicsNodeBridge.java:276)
at
org.apache.batik.bridge.AbstractGraphicsNodeBridge.disposeTree(AbstractGraphicsNodeBridge.java:279)
at
org.apache.batik.bridge.SVGUseElementBridge.buildCompositeGraphicsNode(SVGUseElementBridge.java:215)
at
org.apache.batik.bridge.SVGUseElementBridge.createGraphicsNode(SVGUseElementBridge.java:121)
at
org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:220)
at
org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:186)
at
org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:226)
at
org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:186)
at
org.apache.batik.bridge.GVTBuilder.buildGraphicsNode(GVTBuilder.java:226)
at
org.apache.batik.bridge.GVTBuilder.buildComposite(GVTBuilder.java:186)
at org.apache.batik.bridge.GVTBuilder.build(GVTBuilder.java:108)
at
org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:238)
at
org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:122)
at
org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:174)
at
org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:188)
at
edu.rutgers.elearning.util.SVGRasterizer.rasterizeSVG(SVGRasterizer.java:80)
at
edu.rutgers.elearning.presenter.DisplaySlideHelper._saveSlide(DisplaySlideHelper.java:240)
at
edu.rutgers.elearning.presenter.DisplaySlideHelper.access$200(DisplaySlideHelper.java:27)
at
edu.rutgers.elearning.presenter.DisplaySlideHelper$2.managerStopped(DisplaySlideHelper.java:122)
at
org.apache.batik.swing.svg.JSVGComponent$9.run(JSVGComponent.java:1702)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)
at
java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
Could this be related to the recent memory leak fix in the
BridgeContext? Is watching for "managerStopped" no longer the
recommended way to determine when it's safe to access an unloaded doc?
Thanks.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Index: sources/org/apache/batik/bridge/SVGImageElementBridge.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGImageElementBridge.java,v
retrieving revision 1.65
diff -w -u -r1.65 SVGImageElementBridge.java
--- sources/org/apache/batik/bridge/SVGImageElementBridge.java 25 Jun 2004 01:41:51
-0000 1.65
+++ sources/org/apache/batik/bridge/SVGImageElementBridge.java 30 Jul 2004 09:43:42
-0000
@@ -713,7 +713,10 @@
tgt.removeEventListener(SVG_EVENT_MOUSEUP, listener, false);
listener = null;
}
+ if (subCtx != null) {
subCtx.removeUIEventListeners(imgDocument);
+ }
+
imgDocument = null;
subCtx = null;
}
Index: sources/org/apache/batik/bridge/SVGUseElementBridge.java
===================================================================
RCS file:
/home/cvs/xml-batik/sources/org/apache/batik/bridge/SVGUseElementBridge.java,v
retrieving revision 1.41
diff -w -u -r1.41 SVGUseElementBridge.java
--- sources/org/apache/batik/bridge/SVGUseElementBridge.java 25 Jun 2004 01:41:51
-0000 1.41
+++ sources/org/apache/batik/bridge/SVGUseElementBridge.java 30 Jul 2004 09:43:42
-0000
@@ -222,21 +223,16 @@
CSSUtilities.computeStyleAndURIs(refElement, localRefElement, uri);
GVTBuilder builder = ctx.getGVTBuilder();
- GraphicsNode refNode = builder.build(theCtx, g);
+ GraphicsNode refNode = builder.build(ctx, g);
///////////////////////////////////////////////////////////////////////
- boolean update = true;
if (gn == null) {
gn = new CompositeGraphicsNode();
- update = false;
- }
-
- if (update) {
+ } else {
int s = gn.size();
- for (int i=0; i<s; i++) {
+ for (int i=0; i<s; i++)
gn.remove(0);
}
- }
gn.getChildren().add(refNode);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]