jdk/src/java.desktop/share/classes/sun/java2d/opengl/OGLBlitLoops.java
changeset 27283 99c4cb470573
parent 27264 aa300ebffd04
child 31155 272c0790761f
--- a/jdk/src/java.desktop/share/classes/sun/java2d/opengl/OGLBlitLoops.java	Mon Oct 20 12:04:12 2014 -0700
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/opengl/OGLBlitLoops.java	Wed Oct 22 12:33:28 2014 +0400
@@ -869,7 +869,7 @@
     }
 }
 
-class OGLAnyCompositeBlit extends Blit {
+final class OGLAnyCompositeBlit extends Blit {
     private WeakReference<SurfaceData> dstTmp;
 
     OGLAnyCompositeBlit() {
@@ -895,11 +895,12 @@
         // convert destination to IntArgbPre
         SurfaceData dstBuffer = convertFrom(convertdst, dst, dx, dy, w, h,
                           cachedDst, BufferedImage.TYPE_INT_ARGB_PRE);
+        Region bufferClip =
+                clip == null ? null : clip.getTranslatedRegion(-dx, -dy);
 
         Blit performop = Blit.getFromCache(src.getSurfaceType(),
                 CompositeType.Any, dstBuffer.getSurfaceType());
-
-        performop.Blit(src, dstBuffer, comp, clip, sx, sy, 0, 0, w, h);
+        performop.Blit(src, dstBuffer, comp, bufferClip, sx, sy, 0, 0, w, h);
 
         if (dstBuffer != cachedDst) {
             // cache the intermediate surface