--- old/modules/graphics/src/main/java/com/sun/javafx/tk/quantum/UploadingPainter.java 2014-10-31 18:19:36.000000000 -0700 +++ new/modules/graphics/src/main/java/com/sun/javafx/tk/quantum/UploadingPainter.java 2014-10-31 18:19:36.000000000 -0700 @@ -26,13 +26,11 @@ package com.sun.javafx.tk.quantum; import java.nio.IntBuffer; -import com.sun.glass.ui.Application; import com.sun.glass.ui.Pixels; import com.sun.prism.Graphics; import com.sun.prism.GraphicsPipeline; import com.sun.prism.RTTexture; import com.sun.prism.Texture.WrapMode; -import com.sun.prism.impl.BufferUtil; import com.sun.prism.impl.Disposer; import com.sun.prism.impl.QueuedPixelSource; @@ -42,13 +40,13 @@ */ final class UploadingPainter extends ViewPainter implements Runnable { - private Application app = Application.GetApplication(); private RTTexture rttexture; // resolveRTT is a temporary render target to "resolve" a msaa render buffer // into a normal color render target. private RTTexture resolveRTT = null; - private QueuedPixelSource pixelSource = new QueuedPixelSource(); + private QueuedPixelSource pixelSource = new QueuedPixelSource(true); + private float penScale; private volatile float pixScaleFactor = 1.0f; UploadingPainter(GlassScene view) { @@ -99,7 +97,7 @@ int bufWidth = Math.round(viewWidth * scale); int bufHeight = Math.round(viewHeight * scale); - boolean needsReset = (pixelSource.validate(bufWidth, bufHeight, scale) || + boolean needsReset = (penScale != scale || penWidth != viewWidth || penHeight != viewHeight || rttexture == null); @@ -120,6 +118,7 @@ if (rttexture == null) { return; } + penScale = scale; penWidth = viewWidth; penHeight = viewHeight; freshBackBuffer = true; @@ -134,14 +133,8 @@ paintImpl(g); freshBackBuffer = false; - Pixels pix = pixelSource.getUnusedPixels(); - IntBuffer bits; - if (pix != null) { - bits = (IntBuffer) pix.getPixels(); - } else { - bits = BufferUtil.newIntBuffer(bufWidth * bufHeight); - pix = app.createPixels(bufWidth, bufHeight, bits, scale); - } + Pixels pix = pixelSource.getUnusedPixels(bufWidth, bufHeight, scale); + IntBuffer bits = (IntBuffer) pix.getPixels(); int rawbits[] = rttexture.getPixels();