# HG changeset patch # User bagiras # Date 1322689157 28800 # Node ID f32cfb330272d59f6955fa53d9612fa98d90213d # Parent 760fdca6137fc0341570e5e3aa0e1d54891b82d6 7112642: Incorrect checking for graphics rendering object Reviewed-by: art, bae, flar, prr diff -r 760fdca6137f -r f32cfb330272 src/share/classes/sun/java2d/SunGraphics2D.java --- a/src/share/classes/sun/java2d/SunGraphics2D.java Wed Nov 23 17:58:19 2011 +0400 +++ b/src/share/classes/sun/java2d/SunGraphics2D.java Wed Nov 30 13:39:17 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -370,6 +370,17 @@ } public void validatePipe() { + /* This workaround is for the situation when we update the Pipelines + * for invalid SurfaceData and run further code when the current + * pipeline doesn't support the type of new SurfaceData created during + * the current pipeline's work (in place of the invalid SurfaceData). + * Usually SurfaceData and Pipelines are repaired (through revalidateAll) + * and called again in the exception handlers */ + + if (!surfaceData.isValid()) { + throw new InvalidPipeException("attempt to validate Pipe with invalid SurfaceData"); + } + surfaceData.validatePipe(this); } diff -r 760fdca6137f -r f32cfb330272 src/share/classes/sun/java2d/opengl/OGLRenderer.java --- a/src/share/classes/sun/java2d/opengl/OGLRenderer.java Wed Nov 23 17:58:19 2011 +0400 +++ b/src/share/classes/sun/java2d/opengl/OGLRenderer.java Wed Nov 30 13:39:17 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.awt.Transparency; import java.awt.geom.Path2D; +import sun.java2d.InvalidPipeException; import sun.java2d.SunGraphics2D; import sun.java2d.loops.GraphicsPrimitive; import sun.java2d.pipe.BufferedRenderPipe; @@ -46,7 +47,12 @@ int ctxflags = sg2d.paint.getTransparency() == Transparency.OPAQUE ? OGLContext.SRC_IS_OPAQUE : OGLContext.NO_CONTEXT_FLAGS; - OGLSurfaceData dstData = (OGLSurfaceData)sg2d.surfaceData; + OGLSurfaceData dstData; + try { + dstData = (OGLSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } OGLContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, sg2d.paint, sg2d, ctxflags); @@ -55,7 +61,12 @@ @Override protected void validateContextAA(SunGraphics2D sg2d) { int ctxflags = OGLContext.NO_CONTEXT_FLAGS; - OGLSurfaceData dstData = (OGLSurfaceData)sg2d.surfaceData; + OGLSurfaceData dstData; + try { + dstData = (OGLSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } OGLContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, sg2d.paint, sg2d, ctxflags); @@ -69,7 +80,12 @@ int ctxflags = sg2d.surfaceData.getTransparency() == Transparency.OPAQUE ? OGLContext.SRC_IS_OPAQUE : OGLContext.NO_CONTEXT_FLAGS; - OGLSurfaceData dstData = (OGLSurfaceData)sg2d.surfaceData; + OGLSurfaceData dstData; + try { + dstData = (OGLSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } OGLContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, null, null, ctxflags); diff -r 760fdca6137f -r f32cfb330272 src/share/classes/sun/java2d/pipe/BufferedContext.java --- a/src/share/classes/sun/java2d/pipe/BufferedContext.java Wed Nov 23 17:58:19 2011 +0400 +++ b/src/share/classes/sun/java2d/pipe/BufferedContext.java Wed Nov 30 13:39:17 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -111,6 +111,8 @@ * * Note: must be called while the RenderQueue lock is held. * + * It's assumed that the type of surfaces has been checked by the Renderer + * * @throws InvalidPipeException if either src or dest surface is not valid * or lost * @see RenderQueue#lock @@ -135,6 +137,8 @@ * * Note: must be called while the RenderQueue lock is held. * + * It's assumed that the type of surfaces has been checked by the Renderer + * * @throws InvalidPipeException if the surface is not valid * or lost * @see RenderQueue#lock @@ -160,6 +164,8 @@ * * Note: must be called while the RenderQueue lock is held. * + * It's assumed that the type of surfaces has been checked by the Renderer + * * @throws InvalidPipeException if either src or dest surface is not valid * or lost */ diff -r 760fdca6137f -r f32cfb330272 src/windows/classes/sun/java2d/d3d/D3DRenderer.java --- a/src/windows/classes/sun/java2d/d3d/D3DRenderer.java Wed Nov 23 17:58:19 2011 +0400 +++ b/src/windows/classes/sun/java2d/d3d/D3DRenderer.java Wed Nov 30 13:39:17 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ import java.awt.Transparency; import java.awt.geom.Path2D; +import sun.java2d.InvalidPipeException; import sun.java2d.SunGraphics2D; import sun.java2d.loops.GraphicsPrimitive; import sun.java2d.pipe.BufferedPaints; @@ -47,7 +48,12 @@ int ctxflags = sg2d.paint.getTransparency() == Transparency.OPAQUE ? D3DContext.SRC_IS_OPAQUE : D3DContext.NO_CONTEXT_FLAGS; - D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData; + D3DSurfaceData dstData; + try { + dstData = (D3DSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } D3DContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, sg2d.paint, sg2d, ctxflags); @@ -56,7 +62,12 @@ @Override protected void validateContextAA(SunGraphics2D sg2d) { int ctxflags = D3DContext.NO_CONTEXT_FLAGS; - D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData; + D3DSurfaceData dstData; + try { + dstData = (D3DSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } D3DContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, sg2d.paint, sg2d, ctxflags); @@ -70,7 +81,12 @@ int ctxflags = sg2d.surfaceData.getTransparency() == Transparency.OPAQUE ? D3DContext.SRC_IS_OPAQUE : D3DContext.NO_CONTEXT_FLAGS; - D3DSurfaceData dstData = (D3DSurfaceData)sg2d.surfaceData; + D3DSurfaceData dstData; + try { + dstData = (D3DSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } D3DContext.validateContext(dstData, dstData, sg2d.getCompClip(), sg2d.composite, null, null, null, ctxflags); diff -r 760fdca6137f -r f32cfb330272 src/windows/classes/sun/java2d/windows/GDIRenderer.java --- a/src/windows/classes/sun/java2d/windows/GDIRenderer.java Wed Nov 23 17:58:19 2011 +0400 +++ b/src/windows/classes/sun/java2d/windows/GDIRenderer.java Wed Nov 30 13:39:17 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,6 +29,7 @@ import java.awt.Shape; import java.awt.geom.Path2D; import java.awt.geom.PathIterator; +import sun.java2d.InvalidPipeException; import sun.java2d.SunGraphics2D; import sun.java2d.SurfaceData; import sun.java2d.pipe.Region; @@ -45,7 +46,7 @@ PixelFillPipe, ShapeDrawPipe { - native void doDrawLine(SurfaceData sData, + native void doDrawLine(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x1, int y1, int x2, int y2); @@ -54,24 +55,32 @@ { int transx = sg2d.transX; int transy = sg2d.transY; - doDrawLine(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x1+transx, y1+transy, x2+transx, y2+transy); + try { + doDrawLine((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x1+transx, y1+transy, x2+transx, y2+transy); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawRect(SurfaceData sData, + native void doDrawRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h); public void drawRect(SunGraphics2D sg2d, int x, int y, int width, int height) { - doDrawRect(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height); + try { + doDrawRect((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawRoundRect(SurfaceData sData, + native void doDrawRoundRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int arcW, int arcH); @@ -80,25 +89,33 @@ int x, int y, int width, int height, int arcWidth, int arcHeight) { - doDrawRoundRect(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height, - arcWidth, arcHeight); + try { + doDrawRoundRect((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height, + arcWidth, arcHeight); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawOval(SurfaceData sData, + native void doDrawOval(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h); public void drawOval(SunGraphics2D sg2d, int x, int y, int width, int height) { - doDrawOval(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height); + try { + doDrawOval((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawArc(SurfaceData sData, + native void doDrawArc(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int angleStart, int angleExtent); @@ -107,13 +124,17 @@ int x, int y, int width, int height, int startAngle, int arcAngle) { - doDrawArc(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height, - startAngle, arcAngle); + try { + doDrawArc((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height, + startAngle, arcAngle); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doDrawPoly(SurfaceData sData, + native void doDrawPoly(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transx, int transy, int[] xpoints, int[] ypoints, @@ -123,33 +144,45 @@ int xpoints[], int ypoints[], int npoints) { - doDrawPoly(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - sg2d.transX, sg2d.transY, xpoints, ypoints, npoints, false); + try { + doDrawPoly((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + sg2d.transX, sg2d.transY, xpoints, ypoints, npoints, false); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } public void drawPolygon(SunGraphics2D sg2d, int xpoints[], int ypoints[], int npoints) { - doDrawPoly(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - sg2d.transX, sg2d.transY, xpoints, ypoints, npoints, true); + try { + doDrawPoly((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + sg2d.transX, sg2d.transY, xpoints, ypoints, npoints, true); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillRect(SurfaceData sData, + native void doFillRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h); public void fillRect(SunGraphics2D sg2d, int x, int y, int width, int height) { - doFillRect(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height); + try { + doFillRect((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillRoundRect(SurfaceData sData, + native void doFillRoundRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int arcW, int arcH); @@ -158,25 +191,33 @@ int x, int y, int width, int height, int arcWidth, int arcHeight) { - doFillRoundRect(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height, - arcWidth, arcHeight); + try { + doFillRoundRect((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height, + arcWidth, arcHeight); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillOval(SurfaceData sData, + native void doFillOval(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h); public void fillOval(SunGraphics2D sg2d, int x, int y, int width, int height) { - doFillOval(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height); + try { + doFillOval((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillArc(SurfaceData sData, + native void doFillArc(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int angleStart, int angleExtent); @@ -185,13 +226,17 @@ int x, int y, int width, int height, int startAngle, int arcAngle) { - doFillArc(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - x+sg2d.transX, y+sg2d.transY, width, height, - startAngle, arcAngle); + try { + doFillArc((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + x+sg2d.transX, y+sg2d.transY, width, height, + startAngle, arcAngle); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doFillPoly(SurfaceData sData, + native void doFillPoly(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transx, int transy, int[] xpoints, int[] ypoints, @@ -201,12 +246,16 @@ int xpoints[], int ypoints[], int npoints) { - doFillPoly(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - sg2d.transX, sg2d.transY, xpoints, ypoints, npoints); + try { + doFillPoly((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + sg2d.transX, sg2d.transY, xpoints, ypoints, npoints); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } - native void doShape(SurfaceData sData, + native void doShape(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transX, int transY, Path2D.Float p2df, boolean isfill); @@ -228,9 +277,13 @@ transX = 0; transY = 0; } - doShape(sg2d.surfaceData, - sg2d.getCompClip(), sg2d.composite, sg2d.eargb, - transX, transY, p2df, isfill); + try { + doShape((GDIWindowSurfaceData)sg2d.surfaceData, + sg2d.getCompClip(), sg2d.composite, sg2d.eargb, + transX, transY, p2df, isfill); + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } } // REMIND: This is just a hack to get WIDE lines to honor the @@ -239,7 +292,12 @@ // method that could be filled by the doShape method more quickly. public void doFillSpans(SunGraphics2D sg2d, SpanIterator si) { int box[] = new int[4]; - SurfaceData sd = sg2d.surfaceData; + GDIWindowSurfaceData sd; + try { + sd = (GDIWindowSurfaceData)sg2d.surfaceData; + } catch (ClassCastException e) { + throw new InvalidPipeException("wrong surface data type: " + sg2d.surfaceData); + } Region clip = sg2d.getCompClip(); Composite comp = sg2d.composite; int eargb = sg2d.eargb; @@ -268,7 +326,7 @@ doShape(sg2d, s, true); } - public native void devCopyArea(SurfaceData sData, + public native void devCopyArea(GDIWindowSurfaceData sData, int srcx, int srcy, int dx, int dy, int w, int h); @@ -278,21 +336,21 @@ } public static class Tracer extends GDIRenderer { - void doDrawLine(SurfaceData sData, + void doDrawLine(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x1, int y1, int x2, int y2) { GraphicsPrimitive.tracePrimitive("GDIDrawLine"); super.doDrawLine(sData, clip, comp, color, x1, y1, x2, y2); } - void doDrawRect(SurfaceData sData, + void doDrawRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h) { GraphicsPrimitive.tracePrimitive("GDIDrawRect"); super.doDrawRect(sData, clip, comp, color, x, y, w, h); } - void doDrawRoundRect(SurfaceData sData, + void doDrawRoundRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int arcW, int arcH) @@ -301,14 +359,14 @@ super.doDrawRoundRect(sData, clip, comp, color, x, y, w, h, arcW, arcH); } - void doDrawOval(SurfaceData sData, + void doDrawOval(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h) { GraphicsPrimitive.tracePrimitive("GDIDrawOval"); super.doDrawOval(sData, clip, comp, color, x, y, w, h); } - void doDrawArc(SurfaceData sData, + void doDrawArc(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int angleStart, int angleExtent) @@ -317,7 +375,7 @@ super.doDrawArc(sData, clip, comp, color, x, y, w, h, angleStart, angleExtent); } - void doDrawPoly(SurfaceData sData, + void doDrawPoly(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transx, int transy, int[] xpoints, int[] ypoints, @@ -327,14 +385,14 @@ super.doDrawPoly(sData, clip, comp, color, transx, transy, xpoints, ypoints, npoints, isclosed); } - void doFillRect(SurfaceData sData, + void doFillRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h) { GraphicsPrimitive.tracePrimitive("GDIFillRect"); super.doFillRect(sData, clip, comp, color, x, y, w, h); } - void doFillRoundRect(SurfaceData sData, + void doFillRoundRect(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int arcW, int arcH) @@ -343,14 +401,14 @@ super.doFillRoundRect(sData, clip, comp, color, x, y, w, h, arcW, arcH); } - void doFillOval(SurfaceData sData, + void doFillOval(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h) { GraphicsPrimitive.tracePrimitive("GDIFillOval"); super.doFillOval(sData, clip, comp, color, x, y, w, h); } - void doFillArc(SurfaceData sData, + void doFillArc(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int x, int y, int w, int h, int angleStart, int angleExtent) @@ -359,7 +417,7 @@ super.doFillArc(sData, clip, comp, color, x, y, w, h, angleStart, angleExtent); } - void doFillPoly(SurfaceData sData, + void doFillPoly(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transx, int transy, int[] xpoints, int[] ypoints, @@ -369,7 +427,7 @@ super.doFillPoly(sData, clip, comp, color, transx, transy, xpoints, ypoints, npoints); } - void doShape(SurfaceData sData, + void doShape(GDIWindowSurfaceData sData, Region clip, Composite comp, int color, int transX, int transY, Path2D.Float p2df, boolean isfill) @@ -380,7 +438,7 @@ super.doShape(sData, clip, comp, color, transX, transY, p2df, isfill); } - public void devCopyArea(SurfaceData sData, + public void devCopyArea(GDIWindowSurfaceData sData, int srcx, int srcy, int dx, int dy, int w, int h) diff -r 760fdca6137f -r f32cfb330272 src/windows/native/sun/java2d/windows/GDIRenderer.cpp --- a/src/windows/native/sun/java2d/windows/GDIRenderer.cpp Wed Nov 23 17:58:19 2011 +0400 +++ b/src/windows/native/sun/java2d/windows/GDIRenderer.cpp Wed Nov 30 13:39:17 2011 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -117,7 +117,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawLine - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawLine @@ -164,7 +164,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawRect - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawRect @@ -209,7 +209,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawRoundRect - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawRoundRect @@ -253,7 +253,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawOval - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawOval @@ -291,7 +291,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawArc - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawArc @@ -347,7 +347,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doDrawPoly - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;III[I[IIZ)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;III[I[IIZ)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doDrawPoly @@ -412,7 +412,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillRect - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillRect @@ -445,7 +445,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillRoundRect - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillRoundRect @@ -488,7 +488,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillOval - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillOval @@ -555,7 +555,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillArc - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;IIIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillArc @@ -615,7 +615,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doFillPoly - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;III[I[II)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region;Ljava/awt/Composite;III[I[II)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_doFillPoly @@ -680,7 +680,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: doShape - * Signature: (Lsun/java2d/SurfaceData;Lsun/java2d/pipe/Region; + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;Lsun/java2d/pipe/Region; * Ljava/awt/Composite;IIILjava/awt/geom/Path2D.Float;Z)V */ JNIEXPORT void JNICALL @@ -863,7 +863,7 @@ /* * Class: sun_java2d_windows_GDIRenderer * Method: devCopyArea - * Signature: (Lsun/awt/windows/SurfaceData;IIIIII)V + * Signature: (Lsun/java2d/windows/GDIWindowSurfaceData;IIIIII)V */ JNIEXPORT void JNICALL Java_sun_java2d_windows_GDIRenderer_devCopyArea