On Sat, 23 Oct 2021 19:40:59 GMT, Sergey Bylokhov <[email protected]> wrote:
>> Masanori Yano has updated the pull request incrementally with one additional
>> commit since the last revision:
>>
>> 8275715: D3D pipeline processes multiple PaintEvent at initial drawing
>
> src/java.desktop/windows/classes/sun/java2d/d3d/D3DScreenUpdateManager.java
> line 455:
>
>> 453: rq.unlock();
>> 454: }
>> 455: } else if (!validate(sd, true)) {
>
> The comment below says that "the surface will also trigger a repaint", will
> it be possible we will trigger it inside validate here and then later inside
> "replaceSurfaceDataLater"?
Yes, this run() is called on "D3D Screen Updater" thread. It is reasonable that
a new PaintEvent is posted when SurfaceData is replaced on this thread. I would
limit posting new PaintEvent via createGraphics() only.
> test/jdk/sun/java2d/DirectX/MultiPaintEventTest/MultiPaintEventTest.java line
> 36:
>
>> 34: public class MultiPaintEventTest extends Canvas {
>> 35:
>> 36: private int count = 0;
>
> Some synchronization is needed, the field is updated on EDT and checked on
> the main thread.
I fixed a test as it was pointed out to me.
> test/jdk/sun/java2d/DirectX/MultiPaintEventTest/MultiPaintEventTest.java line
> 75:
>
>> 73: throw new RuntimeException("Processed unnecessary
>> paint().");
>> 74: }
>> 75: } catch (InterruptedException ex) {
>
> Do not ignore an exception
I fixed a test as it was pointed out to me.
-------------
PR: https://git.openjdk.java.net/jdk/pull/6064