On Fri, 28 Oct 2022 13:54:40 GMT, eduardsdv <d...@openjdk.org> wrote:

>> 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.

@prrace Can you review this?

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

PR: https://git.openjdk.org/jfx/pull/916

Reply via email to