Community
Participate
Working Groups
Build Identifier: We are using 1.5M2 RAP release. I am getting an error in my application sometimes when using Table and TableItems to update cell background color. org.eclipse.swt.SWTException: Graphic is disposed org.eclipse.swt.SWT.error(SWT.java:3558) org.eclipse.swt.SWT.error(SWT.java:3481) org.eclipse.swt.SWT.error(SWT.java:3452) org.eclipse.swt.graphics.Color.getRGB(Color.java:191) org.eclipse.rwt.lifecycle.JSWriter.getColorValue(JSWriter.java:905) org.eclipse.rwt.lifecycle.JSWriter.createArray(JSWriter.java:874) org.eclipse.rwt.lifecycle.JSWriter.createParamList(JSWriter.java:845) org.eclipse.rwt.lifecycle.JSWriter.createParamList(JSWriter.java:806) org.eclipse.rwt.lifecycle.JSWriter.call(JSWriter.java:576) org.eclipse.rwt.lifecycle.JSWriter.set(JSWriter.java:328) org.eclipse.rwt.lifecycle.JSWriter.set(JSWriter.java:412) org.eclipse.swt.internal.widgets.tableitemkit.TableItemLCA.writeCellBackgrounds(TableItemLCA.java:238) org.eclipse.swt.internal.widgets.tableitemkit.TableItemLCA.writeChanges(TableItemLCA.java:144) org.eclipse.swt.internal.widgets.tableitemkit.TableItemLCA.access$2(TableItemLCA.java:138) org.eclipse.swt.internal.widgets.tableitemkit.TableItemLCA$1.run(TableItemLCA.java:106) org.eclipse.swt.internal.widgets.tableitemkit.TableItemLCA.preservingInitialized(TableItemLCA.java:425) org.eclipse.swt.internal.widgets.tableitemkit.TableItemLCA.renderChanges(TableItemLCA.java:99) org.eclipse.rwt.lifecycle.AbstractWidgetLCA.render(AbstractWidgetLCA.java:36) org.eclipse.swt.internal.widgets.displaykit.DisplayLCA$RenderVisitor.render(DisplayLCA.java:71) org.eclipse.swt.internal.widgets.displaykit.DisplayLCA$RenderVisitor.doVisit(DisplayLCA.java:55) org.eclipse.swt.internal.widgets.WidgetTreeVisitor$AllWidgetTreeVisitor.visit(WidgetTreeVisitor.java:30) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:66) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleItems(WidgetTreeVisitor.java:114) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:52) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:55) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:55) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:55) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:55) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:55) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:55) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:55) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:55) org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:55) org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.renderShells(DisplayLCA.java:173) org.eclipse.swt.internal.widgets.displaykit.DisplayLCA.render(DisplayLCA.java:146) org.eclipse.rwt.internal.lifecycle.Render.execute(Render.java:29) org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.continueLifeCycle(RWTLifeCycle.java:183) org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.sleep(RWTLifeCycle.java:253) org.eclipse.swt.widgets.Display.sleep(Display.java:1174) org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(WorkbenchAdvisor.java:361) org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2734) org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2694) org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2530) org.eclipse.ui.internal.Workbench$5.run(Workbench.java:702) org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:685) org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157) Reproducible: Sometimes Steps to Reproduce: 1. Use Table 2. Try to update the background color of cell on cell selection (say) 3. This error happens sometimes and not always.
Avrajit, please provide a self-running snippet/project to reproduce the issue. Thanks.
How/where did you create the Color used for cell background? Did you dispose this color somewhere after you set it as a cell background?
(In reply to comment #2) > How/where did you create the Color used for cell background? Did you dispose > this color somewhere after you set it as a cell background? Actually we keep a custom ColorRegistry singleton class which keeps a map of all the color objects shared between multiple sessions. So when some requires a color object we check if that has been disposed or not. If not then return and if disposed the create a new color object using the same RGB param and put it in the map and return. Ours is a big code base and its a RCP to RAP migration project. Hence its very hard to find out if some one is disposing the colors after getting hold of them from the registry. But I feel it doesnt as this error does not come up always.
For me it looks like the color object is disposed in one session while it is used in another. If this is the case, this is not a bug in RAP. There was a discussion about similar problem with disposed font (see Bug 321135). Disposing of a resource while it is in use is a programming error and is illegal in SWT.
(In reply to comment #4) > Disposing of a resource while it is in use is a programming error and is illegal in SWT. I will close it as INVALID. Please reopen if you disagree and have a snippet to reproduce it.