# HG changeset patch # User dadubrow # Date 1265909913 21600 # Node ID 9eff68f52ec6c04b40cfd0004d8b2b5cb0c45dca # Parent c6f86d0867c23244bb99e471ed57391c42916b49 Fix deadlock when the Select Connection dialog is up, user plugs in a device, and the Remote Connections view is shown diff -r c6f86d0867c2 -r 9eff68f52ec6 debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/status/ConnectionStatusReconciler.java --- a/debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/status/ConnectionStatusReconciler.java Thu Feb 11 11:31:22 2010 -0600 +++ b/debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/status/ConnectionStatusReconciler.java Thu Feb 11 11:38:33 2010 -0600 @@ -20,6 +20,8 @@ import java.util.ArrayList; import java.util.List; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PartInitException; import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator; @@ -128,15 +130,28 @@ } private void showConnectionsView() { - RunRunnableWhenWorkbenchVisibleJob.start(new Runnable() { - public void run() { - // try to show the connections view to start service testers - try { - WorkbenchUtils.getView(CONNECTIONS_VIEW_ID); - } catch (PartInitException e) { + // avoid deadlock if this called as a result of a launch sequence issuing a "select connection" dialog + Shell shell = WorkbenchUtils.getActiveShell(); + if (shell == null || !shell.isVisible()) { + RunRunnableWhenWorkbenchVisibleJob.start(new Runnable() { + public void run() { + // try to show the connections view to start service testers + try { + WorkbenchUtils.getView(CONNECTIONS_VIEW_ID); + } catch (PartInitException e) { + } } - } - }); + }); + } else { + Display.getDefault().asyncExec(new Runnable() { + public void run() { + try { + WorkbenchUtils.getView(CONNECTIONS_VIEW_ID); + } catch (PartInitException e) { + } + } + }); + } } private void reconcileAsCurrent(IConnection connection) {