src/macosx/classes/sun/lwawt/LWWindowPeer.java

Print this page

        

*** 578,598 **** } // First, update peer's bounds setBounds(x, y, w, h, SET_BOUNDS, false, false); // Second, update the graphics config and surface data ! checkIfOnNewScreen(); ! if (resized) { replaceSurfaceData(); - flushOnscreenGraphics(); } // Third, COMPONENT_MOVED/COMPONENT_RESIZED/PAINT events if (moved || invalid) { handleMove(x, y, true); } ! if (resized || invalid) { handleResize(w, h, true); repaintPeer(); } } --- 578,597 ---- } // First, update peer's bounds setBounds(x, y, w, h, SET_BOUNDS, false, false); // Second, update the graphics config and surface data ! final boolean isNewDevice = updateGraphicsDevice(); ! if (resized || isNewDevice) { replaceSurfaceData(); } // Third, COMPONENT_MOVED/COMPONENT_RESIZED/PAINT events if (moved || invalid) { handleMove(x, y, true); } ! if (resized || invalid || isNewDevice) { handleResize(w, h, true); repaintPeer(); } }
*** 608,618 **** g.setColor(nonOpaqueBackground); g.fillRect(0, 0, w, h); } if (!isTextured()) { if (g instanceof SunGraphics2D) { ! SG2DConstraint((SunGraphics2D) g, getRegion()); } g.setColor(getBackground()); g.fillRect(0, 0, w, h); } } finally { --- 607,617 ---- g.setColor(nonOpaqueBackground); g.fillRect(0, 0, w, h); } if (!isTextured()) { if (g instanceof SunGraphics2D) { ! ((SunGraphics2D) g).constrain(0, 0, w, h, getRegion()); } g.setColor(getBackground()); g.fillRect(0, 0, w, h); } } finally {
*** 920,956 **** if (graphicsConfig == gc) { return false; } // If window's graphics config is changed from the app code, the // config correspond to the same device as before; when the window ! // is moved by user, graphicsDevice is updated in checkIfOnNewScreen(). // In either case, there's nothing to do with screenOn here graphicsConfig = gc; } // SurfaceData is replaced later in updateGraphicsData() return true; } ! private void checkIfOnNewScreen() { GraphicsDevice newGraphicsDevice = platformWindow.getGraphicsDevice(); synchronized (getStateLock()) { if (graphicsDevice == newGraphicsDevice) { ! return; } graphicsDevice = newGraphicsDevice; } // TODO: DisplayChangedListener stuff final GraphicsConfiguration newGC = newGraphicsDevice.getDefaultConfiguration(); ! if (!setGraphicsConfig(newGC)) return; SunToolkit.executeOnEventHandlerThread(getTarget(), new Runnable() { public void run() { AWTAccessor.getComponentAccessor().setGraphicsConfiguration(getTarget(), newGC); } }); } /* * May be called by delegate to provide SD to Java2D code. */ --- 919,959 ---- if (graphicsConfig == gc) { return false; } // If window's graphics config is changed from the app code, the // config correspond to the same device as before; when the window ! // is moved by user, graphicsDevice is updated in notifyReshape(). // In either case, there's nothing to do with screenOn here graphicsConfig = gc; } // SurfaceData is replaced later in updateGraphicsData() return true; } ! /** ! * Returns true if the GraphicsDevice has been changed, false otherwise. ! */ ! public boolean updateGraphicsDevice() { GraphicsDevice newGraphicsDevice = platformWindow.getGraphicsDevice(); synchronized (getStateLock()) { if (graphicsDevice == newGraphicsDevice) { ! return false; } graphicsDevice = newGraphicsDevice; } // TODO: DisplayChangedListener stuff final GraphicsConfiguration newGC = newGraphicsDevice.getDefaultConfiguration(); ! if (!setGraphicsConfig(newGC)) return false; SunToolkit.executeOnEventHandlerThread(getTarget(), new Runnable() { public void run() { AWTAccessor.getComponentAccessor().setGraphicsConfiguration(getTarget(), newGC); } }); + return true; } /* * May be called by delegate to provide SD to Java2D code. */
*** 981,1005 **** // TODO: drop oldData for D3D/WGL pipelines // This can only happen when this peer is being created oldData.flush(); } } } private void blitSurfaceData(final SurfaceData src, final SurfaceData dst) { //TODO blit. proof-of-concept if (src != dst && src != null && dst != null && !(dst instanceof NullSurfaceData) && !(src instanceof NullSurfaceData) ! && src.getSurfaceType().equals(dst.getSurfaceType())) { ! final Rectangle size = getSize(); final Blit blit = Blit.locate(src.getSurfaceType(), CompositeType.Src, dst.getSurfaceType()); if (blit != null) { ! blit.Blit(src, dst, AlphaComposite.Src, ! getRegion(), 0, 0, 0, 0, size.width, size.height); } } } /** --- 984,1010 ---- // TODO: drop oldData for D3D/WGL pipelines // This can only happen when this peer is being created oldData.flush(); } } + flushOnscreenGraphics(); } private void blitSurfaceData(final SurfaceData src, final SurfaceData dst) { //TODO blit. proof-of-concept if (src != dst && src != null && dst != null && !(dst instanceof NullSurfaceData) && !(src instanceof NullSurfaceData) ! && src.getSurfaceType().equals(dst.getSurfaceType()) ! && src.getDefaultScale() == dst.getDefaultScale()) { ! final Rectangle size = src.getBounds(); final Blit blit = Blit.locate(src.getSurfaceType(), CompositeType.Src, dst.getSurfaceType()); if (blit != null) { ! blit.Blit(src, dst, AlphaComposite.Src, null, 0, 0, 0, 0, ! size.width, size.height); } } } /**