Thank you for your quick reply. I had already tried this (and just double checked it again) but the mutex apparently never gets notified, the thread waits indefinitely. That was why I was asking about how the GVTTreeBuilder thread is related to the main thread. I have even tried spawning a thread from the main thread and locking on the mutex from it, but it hangs also.
Without the wait/notify the renderingCompleted() returns OK and I can see the main thread wait()ing in my debugger. So it seems that the trouble is from the GVTTreeBuilder event handler end. > -----Original Message----- > From: Thomas DeWeese [mailto:[EMAIL PROTECTED] > Sent: Tuesday, September 09, 2003 4:50 PM > To: Batik Users > Subject: Re: Waiting for RenderingCompleted > > > Grant Mc Auley wrote: > > I need to ensure that the UpdateManager and all SVG element > are not null > > and available before an Applet's init() method returns in the code > > below. In other words, I need to delay init() from returning until > > gvtRendingCompleted() is called. > > > > Does anybody have any suggestions on how I might accomplish this? I > > have tried many approaches but to no avail. I am unclear about the > > relationship between the GVTTreeBuilder thread and the main > thread. Any > > help with this would be much appreciated as I am facing a deadline. > > You need to setup a mutex and wait on it, you probably also want > to check for failed/interrupted conditions: > > Object mutext = new Object; > canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() { > public void gvtRenderingCompleted(GVTTreeRendererEvent e) { > // . . . > > synchronized (mutext) { > mutex.notifyAll(); > } > } > > synchronized (mutext) { > canvas.setDocument(doc); > try { > mutext.wait(); > catch(InterruptedException ie) { > ie.printStackTrace(); > } > } > > > > > > > > //---------------------------------------------------------------- > > > > init() { > > > > File f = new File("file.svg"); > > canvas = new JSVGCanvas(); > > canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() { > > > > public void gvtRenderingCompleted(GVTTreeRendererEvent e) { > > > > um = canvas.getUpdateManager(); > > element = doc.getElementByID("name"); > > . . . > > > > } > > > > }); > > canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC); > > String parser = XMLResourceDescriptor.getXMLParserClassName(); > > SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser); > > doc = factory.createDocument(f.toURL().toString()); > > canvas.setDocument(doc); > > > > // delay goes here > > > > } > > > > //---------------------------------------------------------------- > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]