Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Tasse2012-11-22 21:02:49 +0000
committerPatrick Tasse2012-11-23 21:15:19 +0000
commit568928280c5c0d5711e791418c92e57ff30bf5f8 (patch)
tree2a13a5ee62cefb69e529348483e3c8893e189eef
parent2f3c1b761d999b8d5e19c98617bc28b08b504d09 (diff)
downloadorg.eclipse.linuxtools-568928280c5c0d5711e791418c92e57ff30bf5f8.tar.gz
org.eclipse.linuxtools-568928280c5c0d5711e791418c92e57ff30bf5f8.tar.xz
org.eclipse.linuxtools-568928280c5c0d5711e791418c92e57ff30bf5f8.zip
Save and restore current time and range when switching traces
- ITmfTrace augmented with methods to return current time and current range. - TmfTrace implements the new interface. - TmfTrace provides a method to return the default initial range offset that can be overridden. - TmfTrace initializes the time range when the first event is parsed. - TmfTrace updates the current time and range on time and range synch signals. The current time and range are only updated if they intersect with the trace range. - ControlFlowView uses the trace's current time and range when a trace is selected. - ResourcesView uses the trace's current time and range when a trace is selected. - HistogramView uses the trace's current time and range when a trace is selected. - TmfStatisticsViewer uses the trace's current range when a trace is selected. - TmfUml2SDSyncLoader uses the trace's current range when moving to a new page. - TimeChartView uses the trace's current time when a trace is selected. - Reading of the first event to initialize the start time if moved from TmfTrace.traceOpened() to TmfEventsEditor.createPartControl(), to ensure that this always occurs before any signal handler is called regardless of the order in which TmfTraceOpenedSignal is broadcast. Change-Id: I82b5222521842fcbda28892f6e07c68a05dd8e2f Reviewed-on: https://git.eclipse.org/r/8802 Tested-by: Hudson CI Reviewed-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im> IP-Clean: Alexandre Montplaisir <alexmonthy@voxpopuli.im> Tested-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im> Reviewed-by: Bernd Hufmann <bhufmann@gmail.com> IP-Clean: Bernd Hufmann <bhufmann@gmail.com> Tested-by: Bernd Hufmann <bhufmann@gmail.com> Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com> Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
-rw-r--r--lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java27
-rw-r--r--lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java26
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfTrace.java15
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java87
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java7
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/statistics/TmfStatisticsViewer.java14
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java46
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/timechart/TimeChartView.java1
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java14
9 files changed, 151 insertions, 86 deletions
diff --git a/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java b/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java
index e1b8c25a05..07867a0d55 100644
--- a/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java
+++ b/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java
@@ -86,11 +86,6 @@ public class ControlFlowView extends TmfView {
*/
public static final String ID = "org.eclipse.linuxtools.lttng2.kernel.ui.views.controlflow"; //$NON-NLS-1$
- /**
- * Initial time range
- */
- private static final long INITIAL_WINDOW_OFFSET = (1L * 100 * 1000 * 1000); // .1sec
-
private static final String PROCESS_COLUMN = Messages.ControlFlowView_processColumn;
private static final String TID_COLUMN = Messages.ControlFlowView_tidColumn;
private static final String PTID_COLUMN = Messages.ControlFlowView_ptidColumn;
@@ -454,7 +449,7 @@ public class ControlFlowView extends TmfView {
} else {
fStartTime = fTrace.getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
fEndTime = fTrace.getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
- refresh(INITIAL_WINDOW_OFFSET);
+ refresh();
}
}
}
@@ -482,7 +477,7 @@ public class ControlFlowView extends TmfView {
if (fZoomThread != null) {
fZoomThread.cancel();
}
- refresh(INITIAL_WINDOW_OFFSET);
+ refresh();
}
}
@@ -692,7 +687,7 @@ public class ControlFlowView extends TmfView {
fEntryListMap.put(trace, (ArrayList<ControlFlowEntry>) rootList.clone());
}
if (trace == fTrace) {
- refresh(INITIAL_WINDOW_OFFSET);
+ refresh();
}
}
for (ControlFlowEntry entry : rootList) {
@@ -788,7 +783,7 @@ public class ControlFlowView extends TmfView {
return eventList;
}
- private void refresh(final long windowRange) {
+ private void refresh() {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
@@ -807,17 +802,19 @@ public class ControlFlowView extends TmfView {
fTimeGraphCombo.setInput(entries);
fTimeGraphCombo.getTimeGraphViewer().setTimeBounds(fStartTime, fEndTime);
- long endTime = fStartTime + windowRange;
+ long timestamp = fTrace == null ? 0 : fTrace.getCurrentTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ long startTime = fTrace == null ? 0 : fTrace.getCurrentRange().getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ long endTime = fTrace == null ? 0 : fTrace.getCurrentRange().getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ startTime = Math.max(startTime, fStartTime);
+ endTime = Math.min(endTime, fEndTime);
+ fTimeGraphCombo.getTimeGraphViewer().setSelectedTime(timestamp, false);
+ fTimeGraphCombo.getTimeGraphViewer().setStartFinishTime(startTime, endTime);
- if (fEndTime < endTime) {
- endTime = fEndTime;
- }
- fTimeGraphCombo.getTimeGraphViewer().setStartFinishTime(fStartTime, endTime);
for (TreeColumn column : fTimeGraphCombo.getTreeViewer().getTree().getColumns()) {
column.pack();
}
- startZoomThread(fStartTime, endTime);
+ startZoomThread(startTime, endTime);
}
});
}
diff --git a/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java b/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java
index ac6fd5932d..031c6b73c8 100644
--- a/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java
+++ b/lttng/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java
@@ -75,9 +75,6 @@ public class ResourcesView extends TmfView {
/** View ID. */
public static final String ID = "org.eclipse.linuxtools.lttng2.kernel.ui.views.resources"; //$NON-NLS-1$
- /** Initial time range */
- private static final long INITIAL_WINDOW_OFFSET = (1L * 100 * 1000 * 1000); // .1sec
-
/**
* Redraw state enum
*/
@@ -393,7 +390,7 @@ public class ResourcesView extends TmfView {
} else {
fStartTime = fTrace.getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
fEndTime = fTrace.getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
- refresh(INITIAL_WINDOW_OFFSET);
+ refresh();
}
}
}
@@ -421,7 +418,7 @@ public class ResourcesView extends TmfView {
if (fZoomThread != null) {
fZoomThread.cancel();
}
- refresh(INITIAL_WINDOW_OFFSET);
+ refresh();
}
}
@@ -540,7 +537,7 @@ public class ResourcesView extends TmfView {
fEntryListMap.put(trace, (ArrayList<TraceEntry>) entryList.clone());
}
if (trace == fTrace) {
- refresh(INITIAL_WINDOW_OFFSET);
+ refresh();
}
for (TraceEntry traceEntry : entryList) {
if (monitor.isCanceled()) {
@@ -659,7 +656,7 @@ public class ResourcesView extends TmfView {
return eventList;
}
- private void refresh(final long windowRange) {
+ private void refresh() {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
@@ -679,14 +676,15 @@ public class ResourcesView extends TmfView {
fTimeGraphViewer.setInput(entries);
fTimeGraphViewer.setTimeBounds(fStartTime, fEndTime);
- long endTime = fStartTime + windowRange;
-
- if (fEndTime < endTime) {
- endTime = fEndTime;
- }
- fTimeGraphViewer.setStartFinishTime(fStartTime, endTime);
+ long timestamp = fTrace == null ? 0 : fTrace.getCurrentTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ long startTime = fTrace == null ? 0 : fTrace.getCurrentRange().getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ long endTime = fTrace == null ? 0 : fTrace.getCurrentRange().getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ startTime = Math.max(startTime, fStartTime);
+ endTime = Math.min(endTime, fEndTime);
+ fTimeGraphViewer.setSelectedTime(timestamp, false);
+ fTimeGraphViewer.setStartFinishTime(startTime, endTime);
- startZoomThread(fStartTime, endTime);
+ startZoomThread(startTime, endTime);
}
}
});
diff --git a/lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfTrace.java b/lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfTrace.java
index 72f89aff00..5cdf5d1d60 100644
--- a/lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfTrace.java
+++ b/lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfTrace.java
@@ -292,4 +292,19 @@ public interface ITmfTrace extends ITmfDataProvider {
*/
public ITmfContext seekEvent(double ratio);
+ /**
+ * Return the current selected time.
+ *
+ * @return the current time stamp
+ * @since 2.0
+ */
+ public ITmfTimestamp getCurrentTime();
+
+ /**
+ * Return the current selected range.
+ *
+ * @return the current time range
+ * @since 2.0
+ */
+ public TmfTimeRange getCurrentRange();
}
diff --git a/lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java b/lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java
index ccd81109b3..0c317c45bb 100644
--- a/lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java
+++ b/lttng/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java
@@ -26,7 +26,9 @@ import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
+import org.eclipse.linuxtools.tmf.core.signal.TmfRangeSynchSignal;
import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
+import org.eclipse.linuxtools.tmf.core.signal.TmfTimeSynchSignal;
import org.eclipse.linuxtools.tmf.core.signal.TmfTraceOpenedSignal;
import org.eclipse.linuxtools.tmf.core.signal.TmfTraceRangeUpdatedSignal;
import org.eclipse.linuxtools.tmf.core.statesystem.ITmfStateSystem;
@@ -94,6 +96,12 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
// The trace's statistics
private ITmfStatistics fStatistics;
+ // The current selected time
+ private ITmfTimestamp fCurrentTime = TmfTimestamp.ZERO;
+
+ // The current selected range
+ private TmfTimeRange fCurrentRange = TmfTimeRange.NULL_RANGE;
+
// ------------------------------------------------------------------------
// Construction
// ------------------------------------------------------------------------
@@ -421,8 +429,41 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
return fEndTime;
}
+ /* (non-Javadoc)
+ * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getCurrentTime()
+ */
+ /**
+ * @since 2.0
+ */
+ @Override
+ public ITmfTimestamp getCurrentTime() {
+ return fCurrentTime;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getCurrentRange()
+ */
+ /**
+ * @since 2.0
+ */
+ @Override
+ public TmfTimeRange getCurrentRange() {
+ return fCurrentRange;
+ }
+
+ /**
+ * Returns the initial range offset
+ *
+ * @return the initial range offset
+ * @since 2.0
+ */
+ protected TmfTimestamp getInitialRangeOffset() {
+ final long DEFAULT_INITIAL_OFFSET_VALUE = (1L * 100 * 1000 * 1000); // .1sec
+ return new TmfTimestamp(DEFAULT_INITIAL_OFFSET_VALUE, ITmfTimestamp.NANOSECOND_SCALE);
+ }
+
// ------------------------------------------------------------------------
- // Convenience setters/getters
+ // Convenience setters
// ------------------------------------------------------------------------
/**
@@ -605,6 +646,13 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
if (fEndTime.equals(TmfTimestamp.BIG_CRUNCH) || (fEndTime.compareTo(timestamp, false) < 0)) {
fEndTime = timestamp;
}
+ if (fCurrentRange == TmfTimeRange.NULL_RANGE) {
+ fCurrentTime = timestamp;
+ ITmfTimestamp initialOffset = getInitialRangeOffset();
+ long endValue = timestamp.getValue() + initialOffset.normalize(0, timestamp.getScale()).getValue();
+ ITmfTimestamp endTimestamp = new TmfTimestamp(endValue, timestamp.getScale());
+ fCurrentRange = new TmfTimeRange(timestamp, endTimestamp);
+ }
if (context.hasValidRank()) {
long rank = context.getRank();
if (fNbEvents <= rank) {
@@ -663,14 +711,6 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
}
}
}
- if (signal.getTrace() == this || trace == this) {
- /* the signal is for this trace or experiment or for an experiment containing this trace */
-
- /* ensure start time is set */
- final ITmfContext context = seekEvent(0);
- getNext(context);
- context.dispose();
- }
if (trace == this) {
/* the signal is for this trace or for an experiment containing this trace */
try {
@@ -726,6 +766,35 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
}
}
+ /**
+ * Signal handler for the TmfTimeSynchSignal signal
+ *
+ * @param signal The incoming signal
+ * @since 2.0
+ */
+ @TmfSignalHandler
+ public void synchToTime(final TmfTimeSynchSignal signal) {
+ if (signal.getCurrentTime().compareTo(fStartTime) >= 0 && signal.getCurrentTime().compareTo(fEndTime) <= 0) {
+ fCurrentTime = signal.getCurrentTime();
+ }
+ }
+
+ /**
+ * Signal handler for the TmfRangeSynchSignal signal
+ *
+ * @param signal The incoming signal
+ * @since 2.0
+ */
+ @TmfSignalHandler
+ public void synchToRange(final TmfRangeSynchSignal signal) {
+ if (signal.getCurrentTime().compareTo(fStartTime) >= 0 && signal.getCurrentTime().compareTo(fEndTime) <= 0) {
+ fCurrentTime = signal.getCurrentTime();
+ }
+ if (signal.getCurrentRange().getIntersection(getTimeRange()) != null) {
+ fCurrentRange = signal.getCurrentRange().getIntersection(getTimeRange());
+ }
+ }
+
// ------------------------------------------------------------------------
// toString
// ------------------------------------------------------------------------
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java
index bb2d1e2e13..2204b9a858 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java
@@ -49,6 +49,7 @@ import org.eclipse.linuxtools.tmf.core.signal.TmfTimestampFormatUpdateSignal;
import org.eclipse.linuxtools.tmf.core.signal.TmfTraceClosedSignal;
import org.eclipse.linuxtools.tmf.core.signal.TmfTraceOpenedSignal;
import org.eclipse.linuxtools.tmf.core.signal.TmfTraceSelectedSignal;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
import org.eclipse.linuxtools.tmf.core.trace.TmfTrace;
@@ -274,6 +275,12 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
fEventsTable.addSelectionChangedListener(this);
fEventsTable.setTrace(fTrace, true);
fEventsTable.refreshBookmarks(fFile);
+
+ /* ensure start time is set */
+ final ITmfContext context = fTrace.seekEvent(0);
+ fTrace.getNext(context);
+ context.dispose();
+
broadcast(new TmfTraceOpenedSignal(this, fTrace, fFile));
} else {
setPartName(getEditorInput().getName());
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/statistics/TmfStatisticsViewer.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/statistics/TmfStatisticsViewer.java
index 2c0df664c8..1739078b12 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/statistics/TmfStatisticsViewer.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/statistics/TmfStatisticsViewer.java
@@ -23,7 +23,6 @@ import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.linuxtools.tmf.core.component.TmfComponent;
import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
import org.eclipse.linuxtools.tmf.core.signal.TmfRangeSynchSignal;
import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
@@ -63,11 +62,6 @@ import org.eclipse.swt.widgets.Listener;
public class TmfStatisticsViewer extends TmfViewer {
/**
- * The initial window span (in nanoseconds)
- */
- public static final long INITIAL_WINDOW_SPAN = (1L * 100 * 1000 * 1000); // .1sec
-
- /**
* Timestamp scale (nanosecond)
*/
public static final byte TIME_SCALE = ITmfTimestamp.NANOSECOND_SCALE;
@@ -248,13 +242,7 @@ public class TmfStatisticsViewer extends TmfViewer {
// Sends the time range request only once from this method.
if (fSendRangeRequest) {
fSendRangeRequest = false;
- // Calculate the selected time range to request
- long startTime = signal.getRange().getStartTime().normalize(0, TIME_SCALE).getValue();
- TmfTimestamp startTS = new TmfTimestamp(startTime, TIME_SCALE);
- TmfTimestamp endTS = new TmfTimestamp(startTime + INITIAL_WINDOW_SPAN, TIME_SCALE);
- TmfTimeRange timeRange = new TmfTimeRange(startTS, endTS);
-
- requestTimeRangeData(trace, timeRange);
+ requestTimeRangeData(trace, fTrace.getCurrentRange());
}
}
requestData(trace, signal.getRange());
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java
index f0cf9f98a4..9f094e3e92 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java
@@ -67,11 +67,6 @@ public class HistogramView extends TmfView {
*/
public static final String ID = "org.eclipse.linuxtools.tmf.ui.views.histogram"; //$NON-NLS-1$
- /**
- * The initial window span (in nanoseconds)
- */
- public static final long INITIAL_WINDOW_SPAN = (1L * 100 * 1000 * 1000); // .1sec
-
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
@@ -87,7 +82,7 @@ public class HistogramView extends TmfView {
private long fTraceEndTime;
private long fWindowStartTime;
private long fWindowEndTime;
- private long fWindowSpan = INITIAL_WINDOW_SPAN;
+ private long fWindowSpan;
private long fCurrentTimestamp;
// Time controls
@@ -425,7 +420,7 @@ public class HistogramView extends TmfView {
fTraceEndTime = 0L;
fWindowStartTime = 0L;
fWindowEndTime = 0L;
- fWindowSpan = INITIAL_WINDOW_SPAN;
+ fWindowSpan = 0L;
fCurrentTimestamp = 0L;
// Clear the UI widgets
@@ -461,11 +456,14 @@ public class HistogramView extends TmfView {
fTimeRangeHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
if (drawTimeRangeHistogram) {
- fCurrentTimestamp = fTraceStartTime;
+ long startTime = fTrace.getCurrentRange().getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ long duration = fTrace.getCurrentRange().getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue() - startTime;
+ fCurrentTimestamp = fTrace.getCurrentTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
fCurrentEventTimeControl.setValue(fCurrentTimestamp);
- fFullTraceHistogram.setTimeRange(fTraceStartTime, INITIAL_WINDOW_SPAN);
- fTimeRangeHistogram.setTimeRange(fTraceStartTime, INITIAL_WINDOW_SPAN);
- sendTimeRangeRequest(fTraceStartTime, fTraceStartTime + INITIAL_WINDOW_SPAN);
+ fTimeSpanControl.setValue(duration);
+ fFullTraceHistogram.setTimeRange(startTime, duration);
+ fTimeRangeHistogram.setTimeRange(startTime, duration);
+ sendTimeRangeRequest(startTime, startTime + duration);
}
sendFullRangeRequest(fullRange);
@@ -545,33 +543,37 @@ public class HistogramView extends TmfView {
private void initializeHistograms() {
TmfTimeRange fullRange = updateTraceTimeRange();
+ long timestamp = fTrace.getCurrentTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ long startTime = fTrace.getCurrentRange().getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ long duration = fTrace.getCurrentRange().getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue() - startTime;
if ((fTimeRangeRequest != null) && !fTimeRangeRequest.isCompleted()) {
fTimeRangeRequest.cancel();
}
fTimeRangeHistogram.clear();
fTimeRangeHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
- fTimeRangeHistogram.setTimeRange(fTraceStartTime, INITIAL_WINDOW_SPAN);
- fTimeRangeHistogram.setCurrentEvent(fTraceStartTime);
+ fTimeRangeHistogram.setTimeRange(startTime, duration);
+ fTimeRangeHistogram.setCurrentEvent(timestamp);
if ((fFullTraceRequest != null) && !fFullTraceRequest.isCompleted()) {
fFullTraceRequest.cancel();
}
fFullTraceHistogram.clear();
fFullTraceHistogram.setFullRange(fTraceStartTime, fTraceEndTime);
- fFullTraceHistogram.setTimeRange(fTraceStartTime, INITIAL_WINDOW_SPAN);
- fFullTraceHistogram.setCurrentEvent(fTraceStartTime);
+ fFullTraceHistogram.setTimeRange(startTime, duration);
+ fFullTraceHistogram.setCurrentEvent(timestamp);
- fWindowStartTime = fTraceStartTime;
- fWindowSpan = INITIAL_WINDOW_SPAN;
- fWindowEndTime = fWindowStartTime + fWindowSpan;
+ fWindowStartTime = startTime;
+ fWindowSpan = duration;
+ fWindowEndTime = startTime + duration;
- fCurrentEventTimeControl.setValue(fTraceStartTime);
+ fCurrentTimestamp = timestamp;
+ fCurrentEventTimeControl.setValue(fCurrentTimestamp);
- fTimeSpanControl.setValue(fWindowSpan);
+ fTimeSpanControl.setValue(duration);
if (!fullRange.equals(TmfTimeRange.NULL_RANGE)) {
- sendTimeRangeRequest(fTraceStartTime, fTraceStartTime + fWindowSpan);
+ sendTimeRangeRequest(startTime, startTime + duration);
sendFullRangeRequest(fullRange);
}
}
@@ -579,13 +581,11 @@ public class HistogramView extends TmfView {
private TmfTimeRange updateTraceTimeRange() {
fTraceStartTime = 0L;
fTraceEndTime = 0L;
- fCurrentTimestamp = 0L;
TmfTimeRange timeRange = fTrace.getTimeRange();
if (!timeRange.equals(TmfTimeRange.NULL_RANGE)) {
fTraceStartTime = timeRange.getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
fTraceEndTime = timeRange.getEndTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
- fCurrentTimestamp = fTraceStartTime;
}
return timeRange;
}
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/timechart/TimeChartView.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/timechart/TimeChartView.java
index 3647a46e1f..01340a46d1 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/timechart/TimeChartView.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/timechart/TimeChartView.java
@@ -653,6 +653,7 @@ public class TimeChartView extends TmfView implements ITimeGraphRangeListener, I
break;
}
}
+ fViewer.setSelectedTime(trace.getCurrentTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue(), false);
}
}
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java
index ca3dd3a55e..1977c59225 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java
@@ -115,10 +115,6 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
* Maximum number of messages per page.
*/
protected final static int MAX_NUM_OF_MSG = 10000;
- /**
- * Initial time range window.
- */
- protected final static long INITIAL_WINDOW_OFFSET = (1L * 100 * 1000 * 1000); // .1sec
// ------------------------------------------------------------------------
// Attributes
@@ -142,10 +138,6 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
* Flag whether the time range signal was sent by this loader class or not
*/
volatile protected boolean fIsSignalSent = false;
- /**
- * The initial request window size.
- */
- volatile protected long fInitialWindow = INITIAL_WINDOW_OFFSET;
// The view and event attributes
/**
@@ -468,8 +460,6 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
try {
if ((signal.getSource() != this) && (fFrame != null) && !fIsSignalSent && (fCheckPoints.size() > 0)) {
TmfTimeRange newTimeRange = signal.getCurrentRange();
- ITmfTimestamp delta = newTimeRange.getEndTime().getDelta(newTimeRange.getStartTime());
- fInitialWindow = delta.getValue();
fIsSelect = false;
fCurrentTime = newTimeRange.getStartTime();
@@ -913,7 +903,6 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
fCurrentFindIndex = 0;
fFindCriteria = null;
fFindResults = null;
- fInitialWindow = INITIAL_WINDOW_OFFSET;
fView.setFrameSync(new Frame());
fFrame = null;
}
@@ -1240,7 +1229,8 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
protected TmfTimeRange getSignalTimeRange(ITmfTimestamp startTime) {
fLock.lock();
try {
- TmfTimestamp initialEndOfWindow = new TmfTimestamp(startTime.getValue() + fInitialWindow, startTime.getScale(), startTime.getPrecision());
+ long offset = fTrace == null ? 0 : fTrace.getCurrentRange().getEndTime().getDelta(fTrace.getCurrentRange().getStartTime()).normalize(0, startTime.getScale()).getValue();
+ TmfTimestamp initialEndOfWindow = new TmfTimestamp(startTime.getValue() + offset, startTime.getScale(), startTime.getPrecision());
return new TmfTimeRange(startTime, initialEndOfWindow);
}
finally {

Back to the top