gdbtrace: Fix table scrolling back to beginning
authorMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Mon, 10 Mar 2014 19:56:27 +0000 (15:56 -0400)
committerMarc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tue, 11 Mar 2014 14:20:21 +0000 (10:20 -0400)
Instead of selecting the frame at the end of the populate cache,
select the frame at the end of indexing.

Change-Id: I1974ed4fc3a0c07ca2447f72f3888ea9d58505ff
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/23151
Tested-by: Hudson CI
Reviewed-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
IP-Clean: Bernd Hufmann <bernd.hufmann@ericsson.com>
Tested-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
org.eclipse.linuxtools.gdbtrace.core/src/org/eclipse/linuxtools/internal/gdbtrace/core/trace/GdbTrace.java
org.eclipse.linuxtools.gdbtrace.ui/src/org/eclipse/linuxtools/internal/gdbtrace/ui/views/events/GdbEventsTable.java

index 7e4175ecf5a4decfb2a87c82403cb01f72af0b1f..d3dd7f9e64800af3dfcc3e6ef1a6b8248e571619 100644 (file)
@@ -32,6 +32,7 @@ import org.eclipse.linuxtools.internal.gdbtrace.core.GdbTraceCorePlugin;
 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;
@@ -110,7 +111,7 @@ public class GdbTrace extends TmfTrace implements 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);
         }
@@ -136,7 +137,7 @@ public class GdbTrace extends TmfTrace implements ITmfEventParser {
     /**
      * @return the number of frames in current tp session
      */
-    public long getNbFrames() {
+    public synchronized long getNbFrames() {
         fNbFrames = fGdbTpRef.getNumberOfFrames();
         return fNbFrames;
     }
index 7f7835501f1f6b75c0bb2a423d224f9c450efd69..6628a2fe0e59e2db4e032a5a838fe11cd80d1f40 100644 (file)
@@ -26,6 +26,7 @@ import org.eclipse.linuxtools.tmf.core.event.ITmfEventField;
 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;
@@ -104,13 +105,6 @@ public class GdbEventsTable extends TmfEventsTable {
         }
     }
 
-    @Override
-    protected void populateCompleted() {
-        if (fSelectedTrace != null) {
-            selectFrame(fSelectedTrace, fSelectedFrame);
-        }
-    }
-
     @Override
     protected ITmfEventField[] extractItemFields(ITmfEvent event) {
         ITmfEventField[] fields = EMPTY_FIELD_ARRAY;
@@ -148,4 +142,13 @@ public class GdbEventsTable extends TmfEventsTable {
         b.setSystem(true);
         b.schedule();
     }
+
+    @Override
+    @TmfSignalHandler
+    public void traceUpdated(TmfTraceUpdatedSignal signal) {
+        super.traceUpdated(signal);
+        if (fSelectedTrace.getNbFrames() == fSelectedTrace.getNbEvents()) {
+            selectFrame(fSelectedTrace, fSelectedFrame);
+        }
+    }
 }
This page took 0.029506 seconds and 5 git commands to generate.