Community
Participate
Working Groups
BuildId: HEAD from 2010/06/09 AM I'm porting the e4rover code to HEAD. It makes use of the @UIEventTopic annotation. On shutdown, I get dozens of SWTExceptions like the the following: ***WARNING: Display must be created on main thread due to Cocoa restrictions. 2010-06-09 15:11:28.399 Log ErrorException while dispatching event org.osgi.service.event.Event [topic=org/eclipsecon/e4rover/robot] to handler org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler@6a581b90 org.eclipse.swt.SWTException: Invalid thread access 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.widgets.Display.error(Display.java:1027) at org.eclipse.swt.widgets.Display.createDisplay(Display.java:794) at org.eclipse.swt.widgets.Display.create(Display.java:777) at org.eclipse.swt.graphics.Device.<init>(Device.java:130) at org.eclipse.swt.widgets.Display.<init>(Display.java:668) at org.eclipse.swt.widgets.Display.<init>(Display.java:659) at org.eclipse.swt.widgets.Display.getDefault(Display.java:1303) at org.eclipse.e4.ui.internal.di.UIEventObjectSupplier$UIEventHandler.handleEvent(UIEventObjectSupplier.java:38) at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:188) at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:198) at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227) at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149) at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:139) at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78) at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39) at org.eclipsecon.e4rover.core.ContestPlatform.fireRobotUpdated(ContestPlatform.java:262) at org.eclipsecon.e4rover.core.ContestPlatform.access$7(ContestPlatform.java:260) at org.eclipsecon.e4rover.core.ContestPlatform$1.run(ContestPlatform.java:172)
Created attachment 171851 [details] Patch I am unable to duplicate the problem, but from the call stack it looks like we attempting to create a Display after its instance has been released. The patch places the initial Display instance in the context for "pure" e4 apps and compatibility. The UI event processing code has been modified to create a warning whenever it receives UI message, but there is no Display available.
Patch applied to CVS Head.