I'm still having a hard time understanding the problem. Searching the source base the only place
we call setRootNode with 'null' is in JGVTComponent.renderGVTTree(). This method is overridden
by JSVGComponent, and the subclass only calls the baseclass version for documents that are not dynamic,
for documents that are not dynamic (no update manger) suspendProcessing does nothing.
For dynamic documents the eventDispatcher never has it's root set to null once the onload events have
been dispatched (i.e. after the inital rendering - I have verified this) and the updateManager isn't installed
until the first rendering completes (so a simple suspendProcssing() will still do nothing).
Brian Modra wrote:
In my application, I call suspendProcessing when the component is hidden, and resumeProcessing when it is displayed again. Since this application is multi-threaded, and things are happening all the time, causing updates to the graphics ... its quite likely that when suspendProcessing is called it is in the middle of an update. So the updae started, root was set to null, then suspendProcessing was called - so the update was interrupted, and therefore gvtRenderingCompleted does not get called, and the root node is not reset.
.... also - this bugfix to JSVGComponent: (To avoid loss of event handling after calling suspendProcessing().)
public void resumeProcessing() { if (updateManager != null) { updateManager.resume(); setGraphicsNode(getGraphicsNode(), false); } }
... because suspendProcessing is quite likely to get called inside of a GVT rendering call, which first sets the event dispatcher's root node to null.. and then once suspended, gvtRenderingCompleted (which would have reset the node) never gets called.
I don't follow you here. The only place I can find that we call suspendProcessing is in response to the user pressing the 'pause' button. Is the intent to give the users a way to 'restart' event processing when something goes wrong? Pause/UnPause?
It does appear that gvtRenderingCancelled/Failed should set the root
node on the event dispatcher.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]