Skip to content

ui: Input events overlaps visualization command #4820

Open
gignat-dev wants to merge 3 commits intomainfrom
dev/gignat/input_events_overlap_viz_comm
Open

ui: Input events overlaps visualization command #4820
gignat-dev wants to merge 3 commits intomainfrom
dev/gignat/input_events_overlap_viz_comm

Conversation

@gignat-dev
Copy link
Contributor

@gignat-dev gignat-dev commented Feb 17, 2026

This change adds a new command "Input Events: Visualize event overlaps (over selection)"
to the InputEvents plugin. This allows users to visualize concurrent input processing density over a selected time range.

The input event intervals are measured
from the moment of dispatch until the ACK is received (i.e. dispatch_ts, total_latency_dur).

  • Registers a new visualizeOverlaps command that calculates event concurrency using the intervals_overlap_count logic.
  • Adds a parent "Input Events" counter track showing total concurrency across all channels.
  • Creates sub-tracks for each individual process that received input events.
  • For each process, creates sub-tracks for each individual input event channel.
  • Orders tracks by their peak value (descending).
  • Clips intervals to the selected time window (selection or visible window).

Screenshots:
image

This change adds a new command "Input Events: Visualize event overlaps
(over selection)"
to the InputEvents plugin. This allows users to visualize concurrent
input processing density over a selected time range.

The input event intervals are measured
from the moment of dispatch until the ACK is received (i.e. dispatch_ts, total_latency_dur).

- Registers a new visualizeOverlaps command that calculates event
  concurrency using the intervals_overlap_count logic.
- Adds a parent "Input Events" counter track showing total
  concurrency across all channels.
- Creates sub-tracks for each individual input event channel.
- Orders channel tracks by their peak value (descending) to
  highlight potential input congestion.
- Clips intervals to the selected time window (selection or visible
  window).
@github-actions
Copy link

github-actions bot commented Feb 17, 2026

@gignat-dev gignat-dev marked this pull request as draft February 17, 2026 08:59
@gignat-dev gignat-dev marked this pull request as ready for review February 17, 2026 10:21
@gignat-dev gignat-dev changed the title ui: Add input event overlap visualization to InputEvents plugin ui: Input events overlaps visualization command Feb 17, 2026
async visualizeOverlaps(ctx: Trace): Promise<void> {
const window = await getTimeSpanOfSelectionOrVisibleWindow(ctx);
const rootNode = await this.createRootTrack(ctx, window);
ctx.defaultWorkspace.pinnedTracksNode.addChildLast(rootNode);
Copy link
Member

@stevegolton stevegolton Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding a track directly to the pinned track node is unusual. You usually want to put the track in the normal workspace and the pin it, which means that when the user unpins it then it is still available in the normal track tree. Having said that there's nothing technically wrong with this I don't think, it's just unexpected. What's your intent here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a command and I don't think creating the tracks in the workspace is a good thing to do, considering we can call this command multiple times (over different selections)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants