[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: RFR: 8295324: JavaFX: Blank pages when printing [v3]
From: eduardsdv <duke () openjdk ! org>
Date: 2022-10-28 14:26:45
Message-ID: B81mSExw_Kr6cgervKQ-aBWU4eFtfW7Zef6byyjn4lE=.30f43263-40c6-445f-aa8e-4378a8c48de7 () github ! com
[Download RAW message or body]
On Fri, 28 Oct 2022 13:54:40 GMT, eduardsdv <duke@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.
I found the second place with the race condition. It was in the print(Graphics g, \
PageFormat pf, int pageIndex) method. Also here "jobDone" was checked without \
checking if a page was pending.
Please review.
-------------
PR: https://git.openjdk.org/jfx/pull/916
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic