# HG changeset patch # User Ed Swartz # Date 1265906504 21600 # Node ID 657e34ac671f8751e28bf7163e84107dd0b614f8 # Parent 46f36a1495104374c95bcc88aa0e4bb1b8851041 Fix deadlock when the Select Connection dialog is up, user plugs in a device, and the Remote Connections view is shown diff -r 46f36a149510 -r 657e34ac671f 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 Wed Feb 10 13:33:18 2010 -0600 +++ b/debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/status/ConnectionStatusReconciler.java Thu Feb 11 10:41:44 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) {