1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 14:15:23 +02:00

[300586] - Error logged by DsfSuspendTrigger

This commit is contained in:
Pawel Piech 2010-01-23 00:59:09 +00:00
parent 5862d4025c
commit 52945d7704
3 changed files with 71 additions and 3 deletions

View file

@ -22,6 +22,7 @@ import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
import org.eclipse.cdt.dsf.concurrent.DsfRunnable;
import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
import org.eclipse.cdt.dsf.concurrent.ImmediateExecutor;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.concurrent.Sequence;
import org.eclipse.cdt.dsf.datamodel.AbstractDMEvent;
@ -419,7 +420,7 @@ public class GDBControl extends AbstractMIControl implements IGDBControl {
IGdbDebugPreferenceConstants.PREF_AUTO_TERMINATE_GDB,
true, null)) {
// If the inferior finishes, let's terminate GDB
terminate(new RequestMonitor(getExecutor(), null));
terminate(new RequestMonitor(ImmediateExecutor.getInstance(), null));
}
}

View file

@ -115,8 +115,8 @@ public class CountingRequestMonitor extends RequestMonitor {
@Override
public synchronized void setStatus(IStatus status) {
if ((getStatus() instanceof MultiStatus)) {
((MultiStatus)getStatus()).add(status);
if ((getStatus() instanceof DsfMultiStatus)) {
((DsfMultiStatus)getStatus()).add(status);
}
};
}

View file

@ -0,0 +1,67 @@
/*******************************************************************************
* Copyright (c) 2008 Wind River Systems 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.dsf.concurrent;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
/**
* Multi-status that calculates the maximum error code for all children.
*
* @since 2.1
*/
public class DsfMultiStatus extends MultiStatus {
/**
* Creates and returns a new multi-status object with the given children.
*
* @param pluginId the unique identifier of the relevant plug-in
* @param code the plug-in-specific status code
* @param newChildren the list of children status objects
* @param message a human-readable message, localized to the
* current locale
* @param exception a low-level exception, or <code>null</code> if not
* applicable
*/
public DsfMultiStatus(String pluginId, int code, IStatus[] newChildren, String message, Throwable exception) {
super(pluginId, code, newChildren, message, exception);
}
/**
* Creates and returns a new multi-status object with no children.
*
* @param pluginId the unique identifier of the relevant plug-in
* @param code the plug-in-specific status code
* @param message a human-readable message, localized to the
* current locale
* @param exception a low-level exception, or <code>null</code> if not
* applicable
*/
public DsfMultiStatus(String pluginId, int code, String message, Throwable exception) {
super(pluginId, code, message, exception);
}
@Override
public int getCode() {
IStatus[] children = getChildren();
if (children.length != 0) {
int maxCode = Integer.MIN_VALUE;
for (IStatus status : children) {
if (status.getCode() > maxCode) {
maxCode = status.getCode();
}
}
return maxCode;
} else {
return super.getCode();
}
}
}