File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 66
77import { BlockSvg } from './block_svg.js' ;
88import { 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. */
1112const rootBlocks = new Set < BlockSvg > ( ) ;
@@ -42,6 +43,12 @@ let animationRequestId = 0;
4243 */
4344export 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.
You can’t perform that action at this time.
0 commit comments