Skip to content

Commit 519c0a8

Browse files
committed
Use the equalWidths values in the canvas drawing
1 parent e03a37d commit 519c0a8

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

src/components/stack-chart/Canvas.js

+17-2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import type {
4848
} from '../shared/chart/Canvas';
4949

5050
import type {
51+
StackTimingByDepth,
5152
StackTimingDepth,
5253
IndexIntoStackTiming,
5354
} from '../../profile-logic/stack-timing';
@@ -62,6 +63,7 @@ type OwnProps = {|
6263
+rangeStart: Milliseconds,
6364
+rangeEnd: Milliseconds,
6465
+combinedTimingRows: CombinedTimingRows,
66+
+stackTimingRows: StackTimingByDepth,
6567
+stackFrameHeight: CssPixels,
6668
+updatePreviewSelection: WrapFunctionInDispatch<
6769
typeof updatePreviewSelection,
@@ -77,6 +79,7 @@ type OwnProps = {|
7779
+scrollToSelectionGeneration: number,
7880
+marginLeft: CssPixels,
7981
+displayStackType: boolean,
82+
+stackChartSameWidths: boolean,
8083
|};
8184

8285
type Props = $ReadOnly<{|
@@ -161,12 +164,14 @@ class StackChartCanvasImpl extends React.PureComponent<Props> {
161164
rangeStart,
162165
rangeEnd,
163166
combinedTimingRows,
167+
stackTimingRows,
164168
stackFrameHeight,
165169
selectedCallNodeIndex,
166170
categories,
167171
callNodeInfo,
168172
getMarker,
169173
marginLeft,
174+
stackChartSameWidths,
170175
viewport: {
171176
containerWidth,
172177
containerHeight,
@@ -223,6 +228,11 @@ class StackChartCanvasImpl extends React.PureComponent<Props> {
223228
const rangeLength: Milliseconds = rangeEnd - rangeStart;
224229
const viewportRangeLength: Milliseconds = rangeLength * viewportLength;
225230

231+
const timingAtDepthZero = stackTimingRows[0];
232+
const sameWidthsLength =
233+
timingAtDepthZero.sameWidthsEnd[timingAtDepthZero.length - 1] -
234+
timingAtDepthZero.sameWidthsStart[0];
235+
226236
const innerContainerWidth =
227237
containerWidth - marginLeft - TIMELINE_MARGIN_RIGHT;
228238
const innerDevicePixelsWidth = innerContainerWidth * cssToDeviceScale;
@@ -296,9 +306,13 @@ class StackChartCanvasImpl extends React.PureComponent<Props> {
296306

297307
// First compute the left and right sides of the box.
298308
const viewportAtStartTime: UnitIntervalOfProfileRange =
299-
(stackTiming.start[i] - rangeStart) / rangeLength;
309+
stackChartSameWidths && stackTiming.sameWidthsStart
310+
? stackTiming.sameWidthsStart[i] / sameWidthsLength
311+
: (stackTiming.start[i] - rangeStart) / rangeLength;
300312
const viewportAtEndTime: UnitIntervalOfProfileRange =
301-
(stackTiming.end[i] - rangeStart) / rangeLength;
313+
stackChartSameWidths && stackTiming.sameWidthsEnd
314+
? stackTiming.sameWidthsEnd[i] / sameWidthsLength
315+
: (stackTiming.end[i] - rangeStart) / rangeLength;
302316
const floatX = pixelAtViewportPosition(viewportAtStartTime);
303317
const floatW: DevicePixels =
304318
((viewportAtEndTime - viewportAtStartTime) *
@@ -555,6 +569,7 @@ class StackChartCanvasImpl extends React.PureComponent<Props> {
555569
const {
556570
rangeStart,
557571
rangeEnd,
572+
stackTimingRows,
558573
combinedTimingRows,
559574
marginLeft,
560575
viewport: { viewportLeft, viewportRight, viewportTop, containerWidth },

src/components/stack-chart/index.js

+15-3
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@ import {
1919
getInnerWindowIDToPageMap,
2020
getProfileUsesMultipleStackTypes,
2121
} from '../../selectors/profile';
22-
import { selectedThreadSelectors } from '../../selectors/per-thread';
2322
import {
23+
getStackChartSameWidths,
2424
getShowUserTimings,
2525
getSelectedThreadsKey,
26-
} from '../../selectors/url-state';
26+
} from 'firefox-profiler/selectors/url-state';
27+
import type { StackTimingByDepth } from 'firefox-profiler/profile-logic/stack-timing';
28+
import { selectedThreadSelectors } from '../../selectors/per-thread';
2729
import { getTimelineMarginLeft } from '../../selectors/app';
2830
import { StackChartEmptyReasons } from './StackChartEmptyReasons';
2931
import { ContextMenuTrigger } from '../shared/ContextMenuTrigger';
@@ -70,6 +72,7 @@ type StateProps = {|
7072
+weightType: WeightType,
7173
+innerWindowIDToPageMap: Map<InnerWindowID, Page> | null,
7274
+combinedTimingRows: CombinedTimingRows,
75+
+stackTimingRows: StackTimingByDepth,
7376
+timeRange: StartEndRange,
7477
+interval: Milliseconds,
7578
+previewSelection: PreviewSelection,
@@ -84,6 +87,7 @@ type StateProps = {|
8487
+timelineMarginLeft: CssPixels,
8588
+displayStackType: boolean,
8689
+hasFilteredCtssSamples: boolean,
90+
+stackChartSameWidths: boolean,
8791
|};
8892

8993
type DispatchProps = {|
@@ -205,6 +209,7 @@ class StackChartImpl extends React.PureComponent<Props> {
205209
thread,
206210
threadsKey,
207211
combinedTimingRows,
212+
stackTimingRows,
208213
timeRange,
209214
interval,
210215
previewSelection,
@@ -221,6 +226,7 @@ class StackChartImpl extends React.PureComponent<Props> {
221226
timelineMarginLeft,
222227
displayStackType,
223228
hasFilteredCtssSamples,
229+
stackChartSameWidths,
224230
} = this.props;
225231

226232
const maxViewportHeight = combinedTimingRows.length * STACK_FRAME_HEIGHT;
@@ -262,6 +268,7 @@ class StackChartImpl extends React.PureComponent<Props> {
262268
innerWindowIDToPageMap,
263269
threadsKey,
264270
combinedTimingRows,
271+
stackTimingRows,
265272
getMarker,
266273
// $FlowFixMe Error introduced by upgrading to v0.96.0. See issue #1936.
267274
updatePreviewSelection,
@@ -279,6 +286,7 @@ class StackChartImpl extends React.PureComponent<Props> {
279286
scrollToSelectionGeneration,
280287
marginLeft: timelineMarginLeft,
281288
displayStackType: displayStackType,
289+
stackChartSameWidths,
282290
}}
283291
/>
284292
</div>
@@ -292,14 +300,17 @@ class StackChartImpl extends React.PureComponent<Props> {
292300
export const StackChart = explicitConnect<{||}, StateProps, DispatchProps>({
293301
mapStateToProps: (state) => {
294302
const showUserTimings = getShowUserTimings(state);
303+
const stackTimingRows =
304+
selectedThreadSelectors.getStackTimingByDepth(state);
295305
const combinedTimingRows = showUserTimings
296306
? selectedThreadSelectors.getCombinedTimingRows(state)
297-
: selectedThreadSelectors.getStackTimingByDepth(state);
307+
: stackTimingRows;
298308

299309
return {
300310
thread: selectedThreadSelectors.getFilteredThread(state),
301311
// Use the raw WeightType here, as the stack chart does not use the call tree
302312
weightType: selectedThreadSelectors.getSamplesWeightType(state),
313+
stackTimingRows,
303314
combinedTimingRows,
304315
timeRange: getCommittedRange(state),
305316
interval: getProfileInterval(state),
@@ -319,6 +330,7 @@ export const StackChart = explicitConnect<{||}, StateProps, DispatchProps>({
319330
displayStackType: getProfileUsesMultipleStackTypes(state),
320331
hasFilteredCtssSamples:
321332
selectedThreadSelectors.getHasFilteredCtssSamples(state),
333+
stackChartSameWidths: getStackChartSameWidths(state),
322334
};
323335
},
324336
mapDispatchToProps: {

0 commit comments

Comments
 (0)