Opened 16 years ago

Closed 16 years ago

#86 closed defect (fixed)

Fix org.eclipse.swt.SWTError: No more handles bug

Reported by: Stefanos Papadopoulos Owned by: Fabian Rohn
Priority: major Milestone: MS1: First release (1.0.0)
Component: ui Version: pre-1.0
Keywords: Cc:

Description (last modified by Henrik Heimbuerger)

To reproduce this exception, you have to build a big digital track in the editor. after a couple of times adding or deleting tiles you get this exception.

org.eclipse.swt.SWTError: No more handles
	at org.eclipse.swt.SWT.error(SWT.java:3803)
	at org.eclipse.swt.SWT.error(SWT.java:3695)
	at org.eclipse.swt.SWT.error(SWT.java:3666)
	at org.eclipse.swt.internal.ImageList.copyWithAlpha(ImageList.java:175)
	at org.eclipse.swt.internal.ImageList.set(ImageList.java:405)
	at org.eclipse.swt.internal.ImageList.add(ImageList.java:66)
	at org.eclipse.swt.widgets.Table.imageIndex(Table.java:2682)
	at org.eclipse.swt.widgets.TableItem.setImage(TableItem.java:1099)
	at org.eclipse.jface.viewers.TableViewerRow.setImage(TableViewerRow.java:134)
	at org.eclipse.jface.viewers.ViewerCell.setImage(ViewerCell.java:170)
	at org.eclipse.jface.viewers.WrappedViewerLabelProvider.update(WrappedViewerLabelProvider.java:166)
	at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:145)
	at org.eclipse.jface.viewers.AbstractTableViewer.doUpdateItem(AbstractTableViewer.java:386)
	at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:466)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.core.runtime.Platform.run(Platform.java:880)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2041)
	at org.eclipse.jface.viewers.AbstractTableViewer.internalRefreshAll(AbstractTableViewer.java:695)
	at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:633)
	at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:620)
	at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1430)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1365)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1328)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1428)
	at org.eclipse.jface.viewers.ColumnViewer.refresh(ColumnViewer.java:537)
	at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1387)
	at de.jacavi.rcp.views.TrackOutline.refresh(TrackOutline.java:171)
	at de.jacavi.rcp.views.TrackOutline.propertyChanged(TrackOutline.java:155)
	at org.eclipse.ui.part.WorkbenchPart.firePropertyChange(WorkbenchPart.java:129)
	at de.jacavi.rcp.editors.TrackDesigner.fireTrackModified(TrackDesigner.java:175)
	at de.jacavi.rcp.editors.TrackDesigner.handleAppendage(TrackDesigner.java:151)
	at de.jacavi.rcp.views.TileExplorer.invokeInsertion(TileExplorer.java:178)
	at de.jacavi.rcp.views.TileExplorer.access$0(TileExplorer.java:173)
	at de.jacavi.rcp.views.TileExplorer$1.widgetSelected(TileExplorer.java:105)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at de.jacavi.rcp.Application.start(Application.java:25)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:382)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1212)

Change History (4)

comment:1 Changed 16 years ago by Henrik Heimbuerger

Component: trackui
Description: modified (diff)
Owner: changed from Henrik Heimbuerger to Fabian Rohn
Status: newassigned

comment:2 Changed 16 years ago by Fabian Rohn

Status: assignedaccepted

comment:3 Changed 16 years ago by SVN

New commit by frohn (revision [266]):
[Fix for ticket #86] Fixed "No more handles bug"

When I created this view I was very tolerant with the instantiation of SWT Images. How we/I have learned, SWT Images are huge resource devourer. Thus its important to dispose every single image or better - to cache them with an jface ImageRegistry?, like I do.

Finally I could denote a remarable performance raise in the Track Designer.

comment:4 Changed 16 years ago by Fabian Rohn

Resolution: fixed
Status: acceptedclosed
Note: See TracTickets for help on using tickets.