[OpenJDK 2D-Dev] Request for review: JDK-7159455 : Nimbus scrollbar rendering glitch with xrender enabled on i945GM

Clemens Eisserer linuxhippy at gmail.com
Thu Aug 29 19:19:59 UTC 2013


Hi,

Please review my fix for: JDK-7159455 : Nimbus scrollbar rendering
glitch with xrender enabled on i945GM
available at: http://cr.openjdk.java.net/~ceisserer/7159455/webrev.00/

Problem description:
Because of low coordinate precision on intel 945GM (gen3), nimbus
scrollbares where rendered with glitches.

Fix description:
Because Java2D doesn't interpolate image-borders, the xrender pipeline
has to set sampling outside of source destinations to REPEAT_PAD
(extend with pixel value at border color) and use a mask. Currently,
for performance reasons, it uses a smaller mask and scales it, which
causes glitches on i945GM due to low coordinate precision.
This is a seperate issue I will work on.

Luckily, those code-paths are not really needed for Nimbus:
When image-borders are axis aligned, we don't need a mask and can use
the composite region as "mask".
The blits generated by Nimbus fall into this category, however the
logic to detect axis-aligned blits (isMaskOmmitable() in old code) was
completely broken.
I moved the detection logic to adjustCompositeBounds(), which also
calculates the destination composite area size.
By transforming outline points or the destination area it checks for
axis alignment.
I also reordered things a bit, to make it more readable.

Thanks, Clemens

PS: Is it ok to keep the line-width of 120 chars?



More information about the 2d-dev mailing list