Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Endless switching of trace viewer tabs and selected traces after trace server start #238

Closed
bhufmann opened this issue Apr 11, 2024 · 1 comment · Fixed by #250
Closed
Labels
bug Something isn't working

Comments

@bhufmann
Copy link
Collaborator

Having multiple traces open, then stop and start trace server, plus selecting tabs and traces after the trace server is finished starting, the view gets into the state that the tabs seems to be selected continuously. This can only be stopped by closing all traces but one. After that the available views are still updated for a while.

It's looks like that there are signals sent internally in the trace viewer and they never stop being sent.

vscode-samba-dancing

@bhufmann bhufmann added the bug Something isn't working label Apr 11, 2024
@marcdumais-work
Copy link
Contributor

I think maybe I have stumbled on an even simpler way to reproduce this issue. I will confirm and if so, capture a video.

bhufmann added a commit to bhufmann/vscode-trace-extension that referenced this issue Jun 10, 2024
This happens when opening multiple traces and manually switching
newly opened panels.

- The main fix is to avoid calling panel.reveal() when the
trace-viewer-webview-panel is processing the EXPERIMENT_SELECTED signal.
This call is not only unecessary but will also interfere with ongoing
propagation of TRACEVIEWERTAB_ACTIVATED and EXPERIMENT_SELECTED signals.

- Only call setExepriment() on the panel instance if it was created new,
hence it was reopened, and don't call on the panel if the panel is
already open. For that a new public static method getExistingPanel was
added to the TraceViewerPanel class.

- Only call fireExperimentSelectedSignal() right after calling
fireTraceViewerTabActivatedSignal() if the open-traces webview is
not visible. If this webview is visible, then the webview component
ReactOpenTracesWidget will send it to update the available-views view.
This is now done in a central place where the
TraceExplorerOpenedTracesViewProvider handles the
TRACEVIEWERTAB_ACTIVATED signal. This avoids unnecessary sending and
processing of the EXPERIMENT_SELECTED signal.

Fixes eclipse-cdt-cloud#238

Signed-off-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
bhufmann added a commit to bhufmann/vscode-trace-extension that referenced this issue Jun 10, 2024
This happens when opening multiple traces and manually switching
newly opened panels.

- The main fix is to avoid calling panel.reveal() when the
trace-viewer-webview-panel is processing the EXPERIMENT_SELECTED signal.
This call is not only unecessary but will also interfere with ongoing
propagation of TRACEVIEWERTAB_ACTIVATED and EXPERIMENT_SELECTED signals.

- Only call setExepriment() on the panel instance if it was created new,
hence it was reopened, and don't call on the panel if the panel is
already open. For that a new public static method getExistingPanel was
added to the TraceViewerPanel class.

- Only call fireExperimentSelectedSignal() right after calling
fireTraceViewerTabActivatedSignal() if the open-traces webview is
not visible. If this webview is visible, then the webview component
ReactOpenTracesWidget will send it to update the available-views view.
This is now done in a central place where the
TraceExplorerOpenedTracesViewProvider handles the
TRACEVIEWERTAB_ACTIVATED signal. This avoids unnecessary sending and
processing of the EXPERIMENT_SELECTED signal.

Fixes eclipse-cdt-cloud#238

Signed-off-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
bhufmann added a commit that referenced this issue Jun 10, 2024
This happens when opening multiple traces and manually switching
newly opened panels.

- The main fix is to avoid calling panel.reveal() when the
trace-viewer-webview-panel is processing the EXPERIMENT_SELECTED signal.
This call is not only unecessary but will also interfere with ongoing
propagation of TRACEVIEWERTAB_ACTIVATED and EXPERIMENT_SELECTED signals.

- Only call setExepriment() on the panel instance if it was created new,
hence it was reopened, and don't call on the panel if the panel is
already open. For that a new public static method getExistingPanel was
added to the TraceViewerPanel class.

- Only call fireExperimentSelectedSignal() right after calling
fireTraceViewerTabActivatedSignal() if the open-traces webview is
not visible. If this webview is visible, then the webview component
ReactOpenTracesWidget will send it to update the available-views view.
This is now done in a central place where the
TraceExplorerOpenedTracesViewProvider handles the
TRACEVIEWERTAB_ACTIVATED signal. This avoids unnecessary sending and
processing of the EXPERIMENT_SELECTED signal.

Fixes #238

Signed-off-by: Bernd Hufmann <bernd.hufmann@ericsson.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants