mirror of
https://github.com/stablyai/orca.git
synced 2026-10-21 16:03:26 +00:00
fix(terminal): repaint parked frame after layout
This commit is contained in:
@@ -78,14 +78,14 @@ describe('parked terminal viewport frames', () => {
|
||||
expect(local.serialize).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('replays a matching-grid frame and rebuilds WebGL after parsing', async () => {
|
||||
it('replays a matching-grid frame and repaints after reveal layout settles', async () => {
|
||||
const matching = makePane(1, 'matching')
|
||||
const stale = makePane(2, 'stale')
|
||||
const rebuildPaneWebgl = vi.fn()
|
||||
const scheduleRevealRepaint = vi.fn()
|
||||
const manager = {
|
||||
getPanes: () => [matching.pane, stale.pane],
|
||||
hasWebglRenderer: () => true,
|
||||
rebuildPaneWebgl
|
||||
hasWebglRenderer: () => false,
|
||||
scheduleRevealRepaint
|
||||
} as unknown as PaneManager
|
||||
const replayingPanesRef = { current: new Map<number, number>() }
|
||||
|
||||
@@ -113,7 +113,7 @@ describe('parked terminal viewport frames', () => {
|
||||
)
|
||||
expect(mocks.replayIntoTerminalAsync.mock.calls[0]?.[3].shouldReleaseRenderPause()).toBe(true)
|
||||
await Promise.resolve()
|
||||
expect(rebuildPaneWebgl).toHaveBeenCalledWith(1)
|
||||
expect(scheduleRevealRepaint).toHaveBeenCalledOnce()
|
||||
expect(consumeParkedTerminalViewportFrameMarker(matching.pane)).toBe(true)
|
||||
expect(consumeParkedTerminalViewportFrameMarker(matching.pane)).toBe(false)
|
||||
})
|
||||
|
||||
@@ -84,11 +84,10 @@ export function replayParkedTerminalViewportFrames(args: {
|
||||
void replay.then(() => {
|
||||
if (
|
||||
pane.container.dataset[PARKED_VIEWPORT_FRAME_DATASET_KEY] === 'true' &&
|
||||
args.isVisible() &&
|
||||
args.manager.hasWebglRenderer(pane.id)
|
||||
args.isVisible()
|
||||
) {
|
||||
// Why: WebGL attached to the empty remount can retain a blank render model until reactivated after parsing.
|
||||
args.manager.rebuildPaneWebgl(pane.id)
|
||||
// Why: the immediate refresh can precede measurable layout; repaint the parsed frame after reveal settles.
|
||||
args.manager.scheduleRevealRepaint()
|
||||
}
|
||||
})
|
||||
replayed += 1
|
||||
|
||||
Reference in New Issue
Block a user