On Mon, 20 Oct 2025 20:45:47 GMT, Phil Race <[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? ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/27905#discussion_r2449145630
