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