diff --git a/tools/winscope/src/mixins/Timeline.js b/tools/winscope/src/mixins/Timeline.js index d938bcbb0..444d52568 100644 --- a/tools/winscope/src/mixins/Timeline.js +++ b/tools/winscope/src/mixins/Timeline.js @@ -173,21 +173,26 @@ export default { //compare each transition to the ones that came before for (let curr=0; curr0 - && transitions[curr].overlap === Math.max(overlapStore) - ) transitions[curr].overlap++; + let overlapStore = processedTransitions.map(transition => transition.overlap); + + if (transitions[curr].overlap === Math.max(...overlapStore)) { + let previousTransition = processedTransitions.find(transition => { + return transition.overlap===transitions[curr].overlap; + }); + if (this.isSimultaneousTransition(transitions[curr], previousTransition)) { + transitions[curr].overlap++; + } + } } return Object.freeze(transitions); @@ -247,6 +252,12 @@ export default { return this.position(endTs) - this.position(startTs) + this.pointWidth; }, + isSimultaneousTransition(currTransition, prevTransition) { + return prevTransition.startPos <= currTransition.startPos + && currTransition.startPos <= prevTransition.startPos+prevTransition.width + && currTransition.overlap === prevTransition.overlap; + }, + /** * Converts a position as a percentage of the timeline width to a timestamp. * @param {number} position - target position as a percentage of the