> This fixes a race condition between application and 'Print Job Thread' > threads when printing. > > The race condition occurs when application thread calls `endJob()`, which in > effect sets the `jobDone` flag to true, > and when the 'Print Job Thread' thread was in the `synchronized` block in > `waitForNextPage()` at that time. > The 'Print Job Thread' thread checks `jobDone` flag after exiting the > `synchronized` block and, if it is true, skips the last page. > > In this fix, not only the `jobDone` is checked, but also that there is no > other page to be printed. > It was also needed to introduce a new flag 'jobCanceled', to skip the page if > the printing was canceled by 'cancelJob()'.
eduardsdv has updated the pull request incrementally with two additional commits since the last revision: - 8295324: Fix skipping of pages when printing This occurs in print(Graphics, PageFormat, int) if the 'jobDone' flag was previously set by the 'endJob()' method. - 8295324: Adjust the J2DPrinterJobTest The test now also checks for the second race condition around 'jobDone' flag, which is in the print(Graphics, PageFormat, int) method. ------------- Changes: - all: https://git.openjdk.org/jfx/pull/916/files - new: https://git.openjdk.org/jfx/pull/916/files/fdec73d8..acd4825b Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=916&range=02 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=916&range=01-02 Stats: 85 lines in 2 files changed: 47 ins; 18 del; 20 mod Patch: https://git.openjdk.org/jfx/pull/916.diff Fetch: git fetch https://git.openjdk.org/jfx pull/916/head:pull/916 PR: https://git.openjdk.org/jfx/pull/916