| Summary: | SWT dispose exception on thumbnail | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Modeling] Graphiti | Reporter: | Ronald Krijgsheld <rkrijgsheld> | ||||
| Component: | Core | Assignee: | Tim Kaiser <tim.kaiser> | ||||
| Status: | CLOSED FIXED | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | michael.wenz | ||||
| Version: | 0.8.0 | Flags: | tim.kaiser:
indigo+
|
||||
| Target Milestone: | 0.8.0 | ||||||
| Hardware: | All | ||||||
| OS: | All | ||||||
| Whiteboard: | Indigo RC4 theme_bugs | ||||||
| Attachments: |
|
||||||
I have seen this sporadically in test runs, but not yet during normal work with an editor. Where do you get this exception? Michael I could reproduce your issue and since disposing of the graphics can depend on having a GC the order should be changed, (also since the GC is created first it should be disposed of last). Thanks for the hint! Created attachment 197401 [details]
mylyn/context/zip
Part of Graphiti Indigo 0.8.0 |
Build Identifier: 20110301-1815 I sometimes see the following exception in my eclipse log: Caused by: org.eclipse.swt.SWTException: Graphic is disposed at org.eclipse.swt.SWT.error(SWT.java:4083) at org.eclipse.swt.SWT.error(SWT.java:3998) at org.eclipse.swt.SWT.error(SWT.java:3969) at org.eclipse.swt.graphics.GC.getAdvanced(GC.java:3207) at org.eclipse.draw2d.SWTGraphics.restoreState(SWTGraphics.java:928) at org.eclipse.draw2d.SWTGraphics.popState(SWTGraphics.java:828) at org.eclipse.draw2d.ScaledGraphics.popState(ScaledGraphics.java:657) at org.eclipse.draw2d.ScaledGraphics.dispose(ScaledGraphics.java:277) at org.eclipse.graphiti.ui.internal.fixed.FixedThumbnail$ThumbnailUpdater.stop(FixedThumbnail.java:308) at org.eclipse.graphiti.ui.internal.fixed.FixedThumbnail$ThumbnailUpdater.run(FixedThumbnail.java:202) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) ... 22 more I was looking at the FixedThumbnail.java at line 308 and was wondering whether the dispose of the thumbnailGC should be after the dispose of the thumbnailGraphics instead of before. see copied code snipped: public void stop() { isRunning = false; if (thumbnailGC != null) { thumbnailGC.dispose(); thumbnailGC = null; } if (thumbnailGraphics != null) { thumbnailGraphics.dispose(); thumbnailGraphics = null; } } Reproducible: Sometimes