So it looks like someone is modifing the document outside of the update manager thread. The exception is happening in the dirty region management - the repaint is trying to collect the dirty regions (from the update manager thread) and someone has undoubtably added a new dirty region to the 'list' - which means that someone modified the rendering tree outside of the update manager thread.
Unfortunately the thread that has the exception is the 'good thread' not the 'bad thread'. You might try adding code to the UpdateTracker to print a stack trace if it is called from outside the UpdateManager thread (specifcally the changeStarted method).
George Armhold wrote:
Thomas DeWeese wrote:
Can you provide stack traces? I'm surprised to see this as the UpdateManager is supposed to be thread safe.
Sure, here's my jws.log. Sorry for all the extraneous junk, but I didn't want to remove anything potentially useful from the output. Note that this is with invokeLater. Also the later exceptions can probably be ignored- after the ConcurrentModificationException the app is hopelessly confused.
Thanks again for your continued assistance with this.
Presenter starting...
tmpDir: C:\DOCUME~1\armhold\LOCALS~1\Temp\elearn.dir
mixer: Java Sound Audio Engine, version 1.0
line: interface SourceDataLine supporting 8 audio formats
format: PCM_SIGNED, 44100.0 Hz, 16 bit, stereo, little-endian, audio data
line: interface Clip supporting 8 audio formats, and buffers of 0 to 4194304 bytes
format: PCM_SIGNED, 44100.0 Hz, 16 bit, stereo, little-endian, audio data
mixer: Microsoft Sound Mapper, version Unknown Version
mixer: YAMAHA AC-XG WDM Audio, version Unknown Version
mixer: YAMAHA AC-XG WDM Audio, version 5.10
line: Mono Mix source port
line: Stereo Mix source port
line: COMPACT_DISC source port
line: LINE_IN source port
line: MICROPHONE source port
target format: PCM_SIGNED, 11025.0 Hz, 16 bit, mono, little-endian, audio data
bytesPerSample: 2
bytesPerSecond: 22050
Supported target types: au aif wav
getXMLParserClassName=org.apache.xerces.parsers.SAXParser
recordingProfile.type: whiteboard
getScribbleGroup(): calling newScribbleGroup()
TableOfContents: rendering file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/page1.svg9284
rasterizing URL: file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/page1.svg9284
img data len: 206
loading: file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/page1.svg9284
ScribbleComponent.beginRecording()
controls:
WavFile::createNewFile(): open wavFile=C:\Documents and Settings\armhold\Desktop\timing tests\New Folder\audio.wav, wavFileLen=0
lineBufferSize: 11024
buf size: 44096
svgLoadEventDispatchStarted
managerStarted
beginRecording
mousePressed: edu.rutgers.elearning.scribble.ScribbleComponent[,115,0,809x500,alignmentX=null,alignmentY=null,border=,flags=0,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=768,height=480]]
mouseReleased: edu.rutgers.elearning.scribble.ScribbleComponent[,115,0,809x500,alignmentX=null,alignmentY=null,border=,flags=0,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=768,height=480]]
next button pressed: java.awt.event.ActionEvent[ACTION_PERFORMED,cmd=Next,when=1063929293658,modifiers=Button1] on javax.swing.JButton[,75,0,55x23,layout=javax.swing.OverlayLayout,alignmentX=0.0,alignmentY=0.5,[EMAIL PROTECTED],flags=296,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Next,defaultCapable=true]
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$KeyIterator.next(Unknown Source)
at org.apache.batik.gvt.UpdateTracker.getDirtyAreas(Unknown Source)
at org.apache.batik.bridge.UpdateManager.repaint(Unknown Source)
at org.apache.batik.bridge.UpdateManager.runnableInvoked(Unknown Source)
at org.apache.batik.util.RunnableQueue.runnableInvoked(Unknown Source)
at org.apache.batik.util.RunnableQueue.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
getScribbleGroup(): calling newScribbleGroup()
loading: file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/slide2.svg
TableOfContents: rendering file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/slide2.svg
rasterizing URL: file:/C:/DOCUME~1/armhold/LOCALS~1/Temp/elearn.dir/slide2.svg
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]