diff --git a/gapic/src/main/com/google/gapid/models/AtomStream.java b/gapic/src/main/com/google/gapid/models/AtomStream.java index 810388a17c..813e5b9ba8 100644 --- a/gapic/src/main/com/google/gapid/models/AtomStream.java +++ b/gapic/src/main/com/google/gapid/models/AtomStream.java @@ -75,6 +75,7 @@ public void onCaptureLoadingStart(boolean maintainState) { if (!maintainState) { selection = null; } + reset(); } @Override diff --git a/gapic/src/main/com/google/gapid/models/Timeline.java b/gapic/src/main/com/google/gapid/models/Timeline.java index 2d7760589e..3e80004659 100644 --- a/gapic/src/main/com/google/gapid/models/Timeline.java +++ b/gapic/src/main/com/google/gapid/models/Timeline.java @@ -31,7 +31,7 @@ import java.util.List; import java.util.logging.Logger; -public class Timeline extends ModelBase.ForPath, Void, Timeline.Listener> +public class Timeline extends CaptureDependentModel, Timeline.Listener> implements ApiContext.Listener { private static final Logger LOG = Logger.getLogger(Timeline.class.getName()); @@ -39,7 +39,7 @@ public class Timeline extends ModelBase.ForPath, Void, Timel private final ApiContext context; public Timeline(Shell shell, Client client, Capture capture, ApiContext context) { - super(LOG, shell, client, Listener.class); + super(LOG, shell, client, Listener.class, capture); this.capture = capture; this.context = context; @@ -53,7 +53,13 @@ public void onContextsLoaded() { @Override public void onContextSelected(FilteringContext ctx) { - load(events(capture.getData(), ctx), false); + load(getPath(capture.getData()), false); + } + + @Override + protected Path.Any getPath(Path.Capture capturePath) { + FilteringContext ctx = context.isLoaded() ? context.getSelectedContext() : null; + return (ctx == null) ? null : events(capturePath, ctx); } @Override diff --git a/gapic/src/main/com/google/gapid/views/ShaderView.java b/gapic/src/main/com/google/gapid/views/ShaderView.java index 24c1ffeb66..c563ba1a28 100644 --- a/gapic/src/main/com/google/gapid/views/ShaderView.java +++ b/gapic/src/main/com/google/gapid/views/ShaderView.java @@ -399,6 +399,7 @@ public void setSource(Source[] sources) { @Override public void onResourcesLoaded() { + lastUpdateContainedAllShaders = false; updateShaders(); } @@ -426,12 +427,16 @@ public String toString() { } newShaders.add(new Data(info)); } else { + // This shader has not been created yet at this point in the trace, so we don't + // show it. Remember that we've skipped a shader and the UI list is incomplete. skippedAnyShaders = true; } } } } + // If we previously had created the dropdown with all the shaders and didn't skip any + // this time, the dropdown does not need to change. if (!lastUpdateContainedAllShaders || skippedAnyShaders) { shaders = newShaders; lastUpdateContainedAllShaders = !skippedAnyShaders;