Skip to content

Commit f8a134c

Browse files
authored
fix: immediately render for JavaFX (#7502)
1 parent c3b7d42 commit f8a134c

1 file changed

Lines changed: 16 additions & 0 deletions

File tree

core/render_management.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import {BlockSvg} from './block_svg.js';
88
import {Coordinate} from './utils/coordinate.js';
9+
import * as userAgent from './utils/useragent.js';
910

1011
/** The set of all blocks in need of rendering which don't have parents. */
1112
const rootBlocks = new Set<BlockSvg>();
@@ -42,6 +43,12 @@ let animationRequestId = 0;
4243
*/
4344
export function queueRender(block: BlockSvg): Promise<void> {
4445
queueBlock(block);
46+
47+
if (alwaysImmediatelyRender()) {
48+
doRenders();
49+
return Promise.resolve();
50+
}
51+
4552
if (!afterRendersPromise) {
4653
afterRendersPromise = new Promise((resolve) => {
4754
afterRendersResolver = resolve;
@@ -77,6 +84,15 @@ export function triggerQueuedRenders() {
7784
if (afterRendersResolver) afterRendersResolver();
7885
}
7986

87+
/**
88+
* @returns True if we should always trigger an immediate render.
89+
* Some platforms don't properly support `requestAnimationFrame`, so to
90+
* avoid glitchiness, we give up the performance improvements.
91+
*/
92+
function alwaysImmediatelyRender() {
93+
return userAgent.JavaFx;
94+
}
95+
8096
/**
8197
* Adds the given block and its parents to the render queue. Adds the root block
8298
* to the list of root blocks.

0 commit comments

Comments
 (0)