From 2cf6b41bd226ac862925b6a61c72ae9e2a867050 Mon Sep 17 00:00:00 2001 From: Martin Schreiber Date: Mon, 21 Sep 2015 15:30:21 +0200 Subject: [PATCH] Bug 474946 - Initialization Code must be run asynchronously Do the initialization asynchronously. If the service was initialized during this class gets instantiated, it was re-instantiated and so a StackOverflowException was produced. Now the initialization is done asynchronously. Bug: 474946 Change-Id: I15356c5f6e450d825d4f8615e2fba177409f5894 Signed-off-by: Martin Schreiber --- .../commands/ReverseToggleCommandHandler.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java index 5d27c7b516a..c12741aa415 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/commands/ReverseToggleCommandHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2011 Ericsson and others. + * Copyright (c) 2010, 2015 Ericsson and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -63,18 +63,24 @@ public class ReverseToggleCommandHandler extends DebugCommandHandler implements private IDebugContextService fContextService = null; public ReverseToggleCommandHandler() { - IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (window != null) { - fContextService = DebugUITools.getDebugContextManager().getContextService(window); - if (fContextService != null) { - fContextService.addPostDebugContextListener(this); + window.getShell().getDisplay().asyncExec(new Runnable() { - // This constructor might be called after the launch, so we must refresh here too. - // This can happen if we activate the action set after the launch. - refresh(fContextService.getActiveContext()); - } - } - } + @Override + public void run() { + fContextService = DebugUITools.getDebugContextManager().getContextService(window); + if (fContextService != null) { + fContextService.addPostDebugContextListener(ReverseToggleCommandHandler.this); + + // This constructor might be called after the launch, so we must refresh here too. + // This can happen if we activate the action set after the launch. + refresh(fContextService.getActiveContext()); + } + } + }); + } + } @Override public void dispose() {