On Wed, 14 Dec 2022 08:20:31 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:

> This is the next iteration of fixing the issue of rendering "broken" image. 
> The fix for [JDK-7183828](https://bugs.openjdk.org/browse/JDK-7183828) 
> changed the possible IllegalArgumentException during rendering to the 
> InvalidPipeException in assumtion that the new exception will be catched by 
> the java2d machinery and the current-accelerated pipeline will be invalidated 
> and software-pipeline will take care about that image.
> 
> But that change uncover another bug, the accelerated-pipeline invalidation by 
> the InvalidPipeException works in D3D pipeline only, other pipelines start to 
> use software based surfaces, but do not report about that the client code, as 
> a result the next code does not work as expected, since contentsLost alwys 
> return false:
> 
>         do {
>             vi.validate(gc);
>             Graphics2D g = vi.createGraphics();
>             g.fillRect(0, 0, vi.getWidth(), vi.getHeight());
>             g.dispose();
>         } while (vi.contentsLost());
> 
> After this change the correct value will be reported by the contentsLost(), 
> so the RepaintManager will be able to catch that.
> But this fix uncovered another bug. That fallback code path in the 
> RepaintManager was not tested on HiDPI screen and does not work well. I'll 
> file a separate bug about that.

test/jdk/java/awt/image/VolatileImage/ReportRenderingError.java line 91:

> 89:             Graphics2D g = vi.createGraphics();
> 90:             g.setColor(Color.RED);
> 91:             g.drawImage(image, 0, 0, null); // <- can cause 
> InvalidPipeException

This drawImage call is expected to through InvalidPipeException all the times 
or is it intermittent?
If it is intermittent why so? Please explain.

It looks like after https://github.com/openjdk/jdk/commit/8da6c8d6 we will 
through InvalidPipeException for all cases of custom images and not 
intermittently.

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

PR: https://git.openjdk.org/jdk/pull/11664

Reply via email to