--- old/modules/graphics/src/main/java/com/sun/prism/sw/SWGraphics.java 2014-07-23 16:08:54.000000000 -0700 +++ new/modules/graphics/src/main/java/com/sun/prism/sw/SWGraphics.java 2014-07-23 16:08:54.000000000 -0700 @@ -63,6 +63,10 @@ final class SWGraphics implements ReadbackGraphics { + private static final BasicStroke DEFAULT_STROKE = + new BasicStroke(1.0f, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER, 10.0f); + private static final Paint DEFAULT_PAINT = Color.WHITE; + private final PiscesRenderer pr; private final SWContext context; private final SWRTTexture target; @@ -78,8 +82,8 @@ private int clipRectIndex; - private Paint paint; - private BasicStroke stroke; + private Paint paint = DEFAULT_PAINT; + private BasicStroke stroke = DEFAULT_STROKE; private Ellipse2D ellipse2d; private Line2D line2d; --- old/modules/graphics/src/main/native-prism-sw/PiscesRenderer.h 2014-07-23 16:08:55.000000000 -0700 +++ new/modules/graphics/src/main/native-prism-sw/PiscesRenderer.h 2014-07-23 16:08:55.000000000 -0700 @@ -199,6 +199,8 @@ jint _paintMode; jint _prevPaintMode; + // Current (user set) color + jint _ured, _ugreen, _ublue, _ualpha; // Current (internal) color jint _cred, _cgreen, _cblue, _calpha; --- old/modules/graphics/src/main/native-prism-sw/PiscesRenderer.inl 2014-07-23 16:08:56.000000000 -0700 +++ new/modules/graphics/src/main/native-prism-sw/PiscesRenderer.inl 2014-07-23 16:08:56.000000000 -0700 @@ -168,21 +168,21 @@ static INLINE void renderer_setColor(Renderer* rdr, jint red, jint green, jint blue, jint alpha) { - if ((rdr->_cred != red) || - (rdr->_cgreen != green) || - (rdr->_cblue != blue) || - (rdr->_calpha != alpha)) + if ((rdr->_ured != red) || + (rdr->_ugreen != green) || + (rdr->_ublue != blue) || + (rdr->_ualpha != alpha)) { rdr->_rendererState |= INVALID_INTERNAL_COLOR; - if (rdr->_calpha != alpha) { + if (rdr->_ualpha != alpha) { rdr->_rendererState |= INVALID_COLOR_ALPHA_MAP | INVALID_PAINT_ALPHA_MAP; } - rdr->_cred = red; - rdr->_cgreen = green; - rdr->_cblue = blue; - rdr->_calpha = alpha; + rdr->_ured = red; + rdr->_ugreen = green; + rdr->_ublue = blue; + rdr->_ualpha = alpha; } setPaintMode(rdr, PAINT_FLAT_COLOR); @@ -477,6 +477,11 @@ rdr->_cgreen = 0; rdr->_cblue = 0; rdr->_calpha = 0; + } else { + rdr->_cred = rdr->_ured; + rdr->_cgreen = rdr->_ugreen; + rdr->_cblue = rdr->_ublue; + rdr->_calpha = rdr->_ualpha; } rdr->_rendererState &= ~INVALID_INTERNAL_COLOR; } @@ -622,6 +627,8 @@ case COMPOSITE_CLEAR: rdr->_bl = rdr->_bl_Clear; rdr->_bl_PT = rdr->_bl_PT_Clear; + rdr->_el = rdr->_el_Source; + rdr->_el_PT = rdr->_el_Source; break; default: // unsupported!