On Mon, 9 Jun 2025 21:15:08 GMT, Kevin Rushforth <k...@openjdk.org> wrote:

> > Multi-threaded access in the sense of the not being used concurrently by 
> > different threads ? What FFM means is that the thread that creates the 
> > Arena is the only thread ever allowed to use the Arena or any memory 
> > allocated by it. I don't quite see how you guarantee a static field of a 
> > class is never accessed by another thread. And all it takes is for some 
> > other thread to have initialize the class and boom
> > And how in fact is Marlin ensuring only one thread is ever used to run 
> > Marlin ? I didn't think it did anything of the kind. Is this just a case of 
> > the FX thread always runs it ?
> 
> The QuantumRenderer thread uses Marlin during rendering and the JavaFX 
> application thread uses it during picking.
> 
> @bourgesl can provide a more complete answer, but from what I see, all 
> accesses to OffHeapArray are done via an instance of the RendererContext 
> class. Marlin ensures that a RendererContext instance is created and accessed 
> on the same thread by using thread local state and using the rendering 
> context for the thread in question (or creating it if it is the first time). 
> See 
> [DMarlinRenderingEngine::getRendererContext](https://github.com/openjdk/jfx/blob/b22ed6d202f7bb3765fa402a748d455f6316f7c9/modules/javafx.graphics/src/main/java/com/sun/marlin/DMarlinRenderingEngine.java#L254).

I'd looked at that but it was not obvious. And it definitely is not obvious 
that it will be the same thread that initialises the 
MaskMarlinAlphaConsumer.java class

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1814#issuecomment-2957070973

Reply via email to