This is an archived, read-only instance of the JaCaVi Trac. This site is no longer actively maintained. Registration and login have been disabled. Content is preserved for reference only.

Opened 18 years ago

Closed 18 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 18 years ago by Henrik Heimbuerger

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

comment:2 Changed 18 years ago by Fabian Rohn

Status: assignedaccepted

comment:3 Changed 18 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 18 years ago by Fabian Rohn

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