It is intended that our draw machinery works only on specific image formats 
that we know we support.
But the user still able to create some image subclasses for their purpose and 
according to our spec of
Graphics2D.drawImage() we should not throw any exceptions.

I suggest handling this situation in a similar way as we handle some errors 
during rendering when
the pipeline is in the wrong state, or the ToolkitImage is not loaded yet, just 
ignore the request and
return false.

All our pipelines have a special meaning of InvalidPipeException, if the 
pipeline found that it cannot complete the draw
operation throws this exception which is handled by all methods in the 
SunGraphics2D class.

So as a fix I suggest changing the IllegalArgumentException to the 
InvalidPipeException.
Also, we need to add a try/catch block to the drawHiDPIImage(it uses the 
SurfaceManager.getManager method directly)


Old review request:
https://mail.openjdk.java.net/pipermail/2d-dev/2020-August/010995.html

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

Commit messages:
 - 7183828: Invalid Image Variant when using anything other than BufferedImage

Changes: https://git.openjdk.java.net/jdk/pull/85/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=85&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-7183828
  Stats: 413 lines in 3 files changed: 268 ins; 100 del; 45 mod
  Patch: https://git.openjdk.java.net/jdk/pull/85.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/85/head:pull/85

PR: https://git.openjdk.java.net/jdk/pull/85

Reply via email to