import org.eclipse.linuxtools.internal.gdbtrace.core.event.GdbTraceEvent;
import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
+import org.eclipse.linuxtools.tmf.core.signal.TmfTraceUpdatedSignal;
import org.eclipse.linuxtools.tmf.core.timestamp.ITmfTimestamp;
import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
import org.eclipse.linuxtools.tmf.core.trace.ITmfEventParser;
IGDBLaunchConfigurationConstants.DEBUGGER_DEBUG_NAME_DEFAULT, null);
fGdbTpRef = new DsfGdbAdaptor(this, defaultGdbCommand, path, tracedExecutable);
- fNbFrames = fGdbTpRef.getNumberOfFrames();
+ fNbFrames = getNbFrames();
} catch (CoreException e) {
throw new TmfTraceException(Messages.GdbTrace_FailedToInitializeTrace, e);
}
/**
* @return the number of frames in current tp session
*/
- public long getNbFrames() {
+ public synchronized long getNbFrames() {
fNbFrames = fGdbTpRef.getNumberOfFrames();
return fNbFrames;
}
import org.eclipse.linuxtools.tmf.core.event.TmfEventField;
import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
import org.eclipse.linuxtools.tmf.core.signal.TmfTimeSynchSignal;
+import org.eclipse.linuxtools.tmf.core.signal.TmfTraceUpdatedSignal;
import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
import org.eclipse.linuxtools.tmf.ui.viewers.events.TmfEventsTable;
}
}
- @Override
- protected void populateCompleted() {
- if (fSelectedTrace != null) {
- selectFrame(fSelectedTrace, fSelectedFrame);
- }
- }
-
@Override
protected ITmfEventField[] extractItemFields(ITmfEvent event) {
ITmfEventField[] fields = EMPTY_FIELD_ARRAY;
b.setSystem(true);
b.schedule();
}
+
+ @Override
+ @TmfSignalHandler
+ public void traceUpdated(TmfTraceUpdatedSignal signal) {
+ super.traceUpdated(signal);
+ if (fSelectedTrace.getNbFrames() == fSelectedTrace.getNbEvents()) {
+ selectFrame(fSelectedTrace, fSelectedFrame);
+ }
+ }
}