On Tue, 21 Oct 2025 17:29:28 GMT, Sergey Bylokhov <[email protected]> wrote:

>> macOS printing uses a Quartz surface. It is the SurfaceData for a 
>> CPrinterGraphics.
>> That Surface is not disconnected from the graphics unless Graphics.dispose() 
>> is called.
>> If the application uses Graphics.create() then the implementation will not 
>> Graphics.dispose() it.
>> If it is used after printing is complete and the CGContext is no longer 
>> valid a crash will occur.
>> We need to invalidate the surface as soon as printing to a page is done.
>> Note: this is Graphics.dispose(), and is unrelated to disposal of an object 
>> when it becomes unreachable.
>
> src/java.desktop/macosx/classes/sun/lwawt/macosx/CPrinterJob.java line 833:
> 
>> 831:                 }
>> 832:                 painter.print(pathGraphics, 
>> FlipPageFormat.getOriginal(page), pageIndex);
>> 833:                 delegate.surfaceData.invalidate();
> 
> how this code synchronized? is it always executed on EDT?

I don't know where you are headed. All it does is set a boolean variable and 
there's no reason to be on the EDT.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27905#discussion_r2449292645

Reply via email to