Skip to content

Commit

Permalink
perf(timeline): manual painting
Browse files Browse the repository at this point in the history
  • Loading branch information
Akryum committed Nov 29, 2021
1 parent 33ab23c commit d480fe4
Showing 1 changed file with 44 additions and 7 deletions.
51 changes: 44 additions & 7 deletions packages/app-frontend/src/features/timeline/TimelineView.vue
Expand Up @@ -90,6 +90,9 @@ export default defineComponent({
let app: PIXI.Application
let mainRenderTexture: PIXI.RenderTexture
let mainRenderContainer: PIXI.Container
let verticalScrollingContainer: PIXI.Container
let horizontalScrollingContainer: PIXI.Container
Expand All @@ -109,13 +112,37 @@ export default defineComponent({
app.view.style.opacity = '1'
})
mainRenderTexture = PIXI.RenderTexture.create({
width: app.view.width,
height: app.view.height,
resolution: window.devicePixelRatio,
})
const mainRenderSprite = new PIXI.Sprite(mainRenderTexture)
app.stage.addChild(mainRenderSprite)
mainRenderContainer = new PIXI.Container()
verticalScrollingContainer = new PIXI.Container()
app.stage.addChild(verticalScrollingContainer)
mainRenderContainer.addChild(verticalScrollingContainer)
horizontalScrollingContainer = new PIXI.Container()
verticalScrollingContainer.addChild(horizontalScrollingContainer)
})
let drawScheduled = false
function draw () {
if (!drawScheduled) {
drawScheduled = true
Vue.nextTick(() => {
app.renderer.render(mainRenderContainer, {
renderTexture: mainRenderTexture,
})
drawScheduled = false
})
}
}
onUnmounted(() => {
app.destroy()
})
Expand Down Expand Up @@ -276,6 +303,7 @@ export default defineComponent({
} else {
layerHoverEffect.visible = false
}
draw()
}
function drawLayerBackground (layerId: Layer['id'], alpha = 1) {
Expand Down Expand Up @@ -376,6 +404,7 @@ export default defineComponent({
while ((event = updateEventVerticalPositionQueue.shift())) {
computeEventVerticalPosition(event)
}
draw()
}
function isEventIgnored (event: TimelineEvent) {
Expand Down Expand Up @@ -622,6 +651,7 @@ export default defineComponent({
drawEventGroup(event)
}
}
draw()
}
watch(startTime, () => queueEventsUpdate())
Expand Down Expand Up @@ -834,12 +864,8 @@ export default defineComponent({
text.push(`Group: ${event.group.duration}ms (${event.group.events.length} event${event.group.events.length > 1 ? 's' : ''})`)
}
if (hoverEvent?.container && hoverEvent !== event) {
hoverEvent.container.alpha = 1
}
hoverEvent = event
if (hoverEvent?.container) {
hoverEvent.container.alpha = 0.5
if (event?.container) {
event.container.alpha = 0.5
}
} else {
// Marker tooltip
Expand All @@ -850,6 +876,13 @@ export default defineComponent({
text.push('(marker)')
}
}
if (event !== hoverEvent) {
if (hoverEvent?.container) {
hoverEvent.container.alpha = 1
}
draw()
}
hoverEvent = event
if (text.length) {
// Draw tooltip
Expand Down Expand Up @@ -1035,6 +1068,7 @@ export default defineComponent({
drawLayerBackgroundEffects()
drawTimeGrid()
drawMarkers()
draw()
}
watch(startTime, () => queueCameraUpdate())
Expand Down Expand Up @@ -1110,6 +1144,7 @@ export default defineComponent({
function updateVScroll () {
if (verticalScrollingContainer) {
verticalScrollingContainer.y = -vScroll.value
draw()
}
}
Expand Down Expand Up @@ -1181,10 +1216,12 @@ export default defineComponent({
app.view.style.opacity = '0'
// @ts-expect-error PIXI type is missing queueResize
app.queueResize()
mainRenderTexture.resize(app.view.width, app.view.height)
queueEventsUpdate()
drawLayerBackgroundEffects()
drawTimeCursor()
drawTimeGrid()
draw()
}
// Events
Expand Down

0 comments on commit d480fe4

Please sign in to comment.