Hi Thomas,
thomas.deweese wrote: > > Yes, the best way to do that is to override the > 'computeRenderingTransform()' > method on the JSVGComponent. Some care should be taken to emulate the > behavior of the baseclass (in particular the initalTransform should > probably > still be set to the identity transform but I would suggest using your > desired > rendering transform in the initialTransform's place for the rest of the > function). > > The whole purpose of the computeRenderingTransform function is to > establish the inital rendering transform when a document is loaded. > Are you sure that computeRenderingTransform is really the right place? I checked and it is not called at all during the loading, processing and showing of my SVG. When I looked into the code I found that it is called only from the following places (none of them seems to be normal processing): AbstractJSVGComponent: -> BridgeUserAgent.openLink -> setFragmentIdentifier SVGListener: -> gvtBuildFailed -> svgLoadEventDispatchFailed Maybe I'm wrong but I can't see how the computeRenderingTransform could help? Nevertheless, I came to another fix for my problem. I changed AbstractJGVTComponent.renderingStopped() in a way that the event dispatching is not re-enabled if we schedule another rendering so the event handling will not interfere with the renderer. Could you have a look below to check you agree to such a fix? If yes would you consider applying it to Batik sources? Existing code: private void renderingStopped() { haltProgressivePaintThread(); if (doubleBufferedRendering) { suspendInteractions = false; } gvtTreeRenderer = null; if (needRender) { renderGVTTree(); needRender = false; } else { immediateRepaint(); } if (eventDispatcher != null) { eventDispatcher.setEventDispatchEnabled(true); } } changed to: private void renderingStopped() { haltProgressivePaintThread(); if (doubleBufferedRendering) { suspendInteractions = false; } gvtTreeRenderer = null; if (needRender) { renderGVTTree(); needRender = false; } else { immediateRepaint(); // moved here //-- if (eventDispatcher != null) { eventDispatcher.setEventDispatchEnabled(true); } //-- } // moved up // if (eventDispatcher != null) { // eventDispatcher.setEventDispatchEnabled(true); // } } Thanks a lot! Lukasz -- View this message in context: http://www.nabble.com/Threading-problem-when-using-JSVGCanvas.setSVGDocument-tp20147098p20185115.html Sent from the Batik - Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]