--- a/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/com/apple/laf/AquaPainter.java Wed Apr 17 21:32:11 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
@@ -41,15 +41,15 @@
abstract class AquaPainter <T extends JRSUIState> {
static <T extends JRSUIState> AquaPainter<T> create(final T state) {
- return new AquaSingleImagePainter<T>(state);
+ return new AquaSingleImagePainter<>(state);
}
static <T extends JRSUIState> AquaPainter<T> create(final T state, final int minWidth, final int minHeight, final int westCut, final int eastCut, final int northCut, final int southCut) {
- return AquaPainter.create(state, minWidth, minHeight, westCut, eastCut, northCut, southCut, true);
+ return create(state, minWidth, minHeight, westCut, eastCut, northCut, southCut, true);
}
static <T extends JRSUIState> AquaPainter<T> create(final T state, final int minWidth, final int minHeight, final int westCut, final int eastCut, final int northCut, final int southCut, final boolean useMiddle) {
- return AquaPainter.create(state, minWidth, minHeight, westCut, eastCut, northCut, southCut, useMiddle, true, true);
+ return create(state, minWidth, minHeight, westCut, eastCut, northCut, southCut, useMiddle, true, true);
}
static <T extends JRSUIState> AquaPainter<T> create(final T state, final int minWidth, final int minHeight, final int westCut, final int eastCut, final int northCut, final int southCut, final boolean useMiddle, final boolean stretchHorizontally, final boolean stretchVertically) {
@@ -65,7 +65,7 @@
return new AquaNineSlicingImagePainter<>(state, metricsProvider);
}
- abstract void paint(final Graphics2D g, final T stateToPaint, final Component c);
+ abstract void paint(Graphics2D g, T stateToPaint);
final Rectangle boundsRect = new Rectangle();
final JRSUIControl control;
@@ -75,23 +75,26 @@
this.state = state;
}
- JRSUIControl getControl() {
- control.set(state = (T)state.derive());
+ final JRSUIControl getControl() {
+ control.set(state = state.derive());
return control;
}
- void paint(final Graphics g, final Component c, final int x, final int y, final int w, final int h) {
+ final void paint(final Graphics g, final Component c, final int x,
+ final int y, final int w, final int h) {
boundsRect.setBounds(x, y, w, h);
- final T nextState = (T)state.derive();
+ final T nextState = state.derive();
final Graphics2D g2d = getGraphics2D(g);
- if (g2d != null) paint(g2d, nextState, c);
+ if (g2d != null) paint(g2d, nextState);
state = nextState;
}
- static class AquaNineSlicingImagePainter<T extends JRSUIState> extends AquaPainter<T> {
- protected final HashMap<T, RecyclableJRSUISlicedImageControl> slicedControlImages;
- protected final NineSliceMetricsProvider metricsProvider;
+ private static class AquaNineSlicingImagePainter<T extends JRSUIState>
+ extends AquaPainter<T> {
+
+ private final HashMap<T, RecyclableJRSUISlicedImageControl> slicedControlImages;
+ private final NineSliceMetricsProvider metricsProvider;
AquaNineSlicingImagePainter(final T state) {
this(state, null);
@@ -104,9 +107,9 @@
}
@Override
- void paint(final Graphics2D g, final T stateToPaint, final Component c) {
+ void paint(final Graphics2D g, final T stateToPaint) {
if (metricsProvider == null) {
- AquaSingleImagePainter.paintFromSingleCachedImage(g, control, stateToPaint, c, boundsRect);
+ AquaSingleImagePainter.paintFromSingleCachedImage(g, control, stateToPaint, boundsRect);
return;
}
@@ -114,7 +117,7 @@
if (slicesRef == null) {
final NineSliceMetrics metrics = metricsProvider.getNineSliceMetricsForState(stateToPaint);
if (metrics == null) {
- AquaSingleImagePainter.paintFromSingleCachedImage(g, control, stateToPaint, c, boundsRect);
+ AquaSingleImagePainter.paintFromSingleCachedImage(g, control, stateToPaint, boundsRect);
return;
}
slicesRef = new RecyclableJRSUISlicedImageControl(control, stateToPaint, metrics);
@@ -125,47 +128,55 @@
}
}
- static class AquaSingleImagePainter<T extends JRSUIState> extends AquaPainter<T> {
+ private static final class AquaSingleImagePainter<T extends JRSUIState>
+ extends AquaPainter<T> {
+
AquaSingleImagePainter(final T state) {
super(new JRSUIControl(false), state);
}
@Override
- void paint(Graphics2D g, T stateToPaint, Component c) {
- paintFromSingleCachedImage(g, control, stateToPaint, c, boundsRect);
+ void paint(final Graphics2D g, final T stateToPaint) {
+ paintFromSingleCachedImage(g, control, stateToPaint, boundsRect);
}
- static void paintFromSingleCachedImage(final Graphics2D g, final JRSUIControl control, final JRSUIState controlState, final Component c, final Rectangle boundsRect) {
- final Rectangle clipRect = g.getClipBounds();
- final Rectangle intersection = boundsRect.intersection(clipRect);
- if (intersection.width <= 0 || intersection.height <= 0) return;
+ static void paintFromSingleCachedImage(final Graphics2D g,
+ final JRSUIControl control, final JRSUIState controlState,
+ final Rectangle bounds) {
+ if (bounds.width <= 0 || bounds.height <= 0) {
+ return;
+ }
- final int imgX1 = intersection.x - boundsRect.x;
- final int imgY1 = intersection.y - boundsRect.y;
-
+ int scale = 1;
+ if (g instanceof SunGraphics2D) {
+ scale = ((SunGraphics2D) g).surfaceData.getDefaultScale();
+ }
final GraphicsConfiguration config = g.getDeviceConfiguration();
final ImageCache cache = ImageCache.getInstance();
- BufferedImage image = (BufferedImage)cache.getImage(config, boundsRect.width, boundsRect.height, controlState);
- if (image == null) {
- image = new BufferedImage(boundsRect.width, boundsRect.height, BufferedImage.TYPE_INT_ARGB_PRE);
- cache.setImage(image, config, boundsRect.width, boundsRect.height, controlState);
- final WritableRaster raster = image.getRaster();
- final DataBufferInt buffer = (DataBufferInt)raster.getDataBuffer();
+ final int imgW = bounds.width * scale;
+ final int imgH = bounds.height * scale;
+ BufferedImage img = (BufferedImage) cache.getImage(config, imgW, imgH, scale, controlState);
+ if (img == null) {
+ img = new BufferedImage(imgW, imgH, BufferedImage.TYPE_INT_ARGB_PRE);
+ cache.setImage(img, config, imgW, imgH, scale, controlState);
+ final WritableRaster raster = img.getRaster();
+ final DataBufferInt buffer = (DataBufferInt) raster.getDataBuffer();
control.set(controlState);
control.paint(SunWritableRaster.stealData(buffer, 0),
- image.getWidth(), image.getHeight(), 0, 0, boundsRect.width, boundsRect.height);
+ imgW, imgH, 0, 0, bounds.width, bounds.height);
SunWritableRaster.markDirty(buffer);
}
- g.drawImage(image, intersection.x, intersection.y, intersection.x + intersection.width, intersection.y + intersection.height,
- imgX1, imgY1, imgX1 + intersection.width, imgY1 + intersection.height, null);
+ g.drawImage(img, bounds.x, bounds.y, bounds.width, bounds.height, null);
}
}
- static class RecyclableJRSUISlicedImageControl extends RecyclableSlicedImageControl {
- final JRSUIControl control;
- final JRSUIState state;
+ private static class RecyclableJRSUISlicedImageControl
+ extends RecyclableSlicedImageControl {
+
+ private final JRSUIControl control;
+ private final JRSUIState state;
RecyclableJRSUISlicedImageControl(final JRSUIControl control, final JRSUIState state, final NineSliceMetrics metrics) {
super(metrics);
@@ -189,17 +200,19 @@
}
}
- protected Graphics2D getGraphics2D(final Graphics g) {
+ private Graphics2D getGraphics2D(final Graphics g) {
try {
return (SunGraphics2D)g; // doing a blind try is faster than checking instanceof
- } catch (Exception e) {
+ } catch (Exception ignored) {
if (g instanceof PeekGraphics) {
// if it is a peek just dirty the region
g.fillRect(boundsRect.x, boundsRect.y, boundsRect.width, boundsRect.height);
} else if (g instanceof ProxyGraphics2D) {
final ProxyGraphics2D pg = (ProxyGraphics2D)g;
final Graphics2D g2d = pg.getDelegate();
- if (g2d instanceof SunGraphics2D) { return (SunGraphics2D)g2d; }
+ if (g2d instanceof SunGraphics2D) {
+ return g2d;
+ }
} else if (g instanceof Graphics2D) {
return (Graphics2D) g;
}
--- a/jdk/src/macosx/classes/com/apple/laf/ImageCache.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/com/apple/laf/ImageCache.java Wed Apr 17 21:32:11 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
@@ -81,16 +81,23 @@
}
}
- public Image getImage(final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
+ public Image getImage(final GraphicsConfiguration config, final int w,
+ final int h, final int scale,
+ final JRSUIState state) {
+ final int hash = hash(config, w, h, scale, state);
+ final PixelCountSoftReference ref;
lock.readLock().lock();
try {
- final PixelCountSoftReference ref = map.get(hash(config, w, h, state));
- // check reference has not been lost and the key truly matches, in case of false positive hash match
- if (ref != null && ref.equals(config, w, h, state)) return ref.get();
- return null;
+ ref = map.get(hash);
} finally {
lock.readLock().unlock();
}
+ // check reference has not been lost and the key truly matches,
+ // in case of false positive hash match
+ if (ref != null && ref.equals(config, w, h, scale, state)) {
+ return ref.get();
+ }
+ return null;
}
/**
@@ -100,14 +107,17 @@
* @param config The graphics configuration, needed if cached image is a Volatile Image. Used as part of cache key
* @param w The image width, used as part of cache key
* @param h The image height, used as part of cache key
+ * @param scale The image scale factor, used as part of cache key
* @return true if the image could be cached, false otherwise.
*/
- public boolean setImage(final Image image, final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
+ public boolean setImage(final Image image,
+ final GraphicsConfiguration config, final int w, final int h,
+ final int scale, final JRSUIState state) {
if (state.is(JRSUIConstants.Animating.YES)) {
return false;
}
- final int hash = hash(config, w, h, state);
+ final int hash = hash(config, w, h, scale, state);
lock.writeLock().lock();
try {
@@ -145,44 +155,60 @@
}
}
// finally put new in map
- map.put(hash, new PixelCountSoftReference(image, referenceQueue, newPixelCount, hash, config, w, h, state));
+ map.put(hash, new PixelCountSoftReference(image, referenceQueue, newPixelCount, hash, config, w, h, scale, state));
return true;
} finally {
lock.writeLock().unlock();
}
}
- private int hash(final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
- int hash = (config != null ? config.hashCode() : 0);
+ private static int hash(final GraphicsConfiguration config, final int w,
+ final int h, final int scale,
+ final JRSUIState state) {
+ int hash = config != null ? config.hashCode() : 0;
hash = 31 * hash + w;
hash = 31 * hash + h;
+ hash = 31 * hash + scale;
hash = 31 * hash + state.hashCode();
return hash;
}
- /** Extended SoftReference that stores the pixel count even after the image is lost */
+ /**
+ * Extended SoftReference that stores the pixel count even after the image
+ * is lost.
+ */
private static class PixelCountSoftReference extends SoftReference<Image> {
- private final int pixelCount;
- private final int hash;
+
+ // default access, because access to these fields shouldn't be emulated
+ // by a synthetic accessor.
+ final int pixelCount;
+ final int hash;
// key parts
private final GraphicsConfiguration config;
private final int w;
private final int h;
+ private final int scale;
private final JRSUIState state;
- PixelCountSoftReference(final Image referent, final ReferenceQueue<? super Image> q, final int pixelCount, final int hash, final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
+ PixelCountSoftReference(final Image referent,
+ final ReferenceQueue<? super Image> q, final int pixelCount,
+ final int hash, final GraphicsConfiguration config, final int w,
+ final int h, final int scale, final JRSUIState state) {
super(referent, q);
this.pixelCount = pixelCount;
this.hash = hash;
this.config = config;
this.w = w;
this.h = h;
+ this.scale = scale;
this.state = state;
}
- public boolean equals(final GraphicsConfiguration config, final int w, final int h, final JRSUIState state) {
- return config == this.config && w == this.w && h == this.h && state.equals(this.state);
+ boolean equals(final GraphicsConfiguration config, final int w,
+ final int h, final int scale, final JRSUIState state) {
+ return config == this.config && w == this.w && h == this.h
+ && scale == this.scale && state.equals(this.state);
}
}
--- a/jdk/src/macosx/classes/sun/awt/CGraphicsDevice.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/awt/CGraphicsDevice.java Wed Apr 17 21:32:11 2013 -0700
@@ -219,6 +219,12 @@
return nativeGetDisplayModes(displayID);
}
+ public int getScaleFactor() {
+ return (int) nativeGetScaleFactor(displayID);
+ }
+
+ private static native double nativeGetScaleFactor(int displayID);
+
private static native void nativeSetDisplayMode(int displayID, int w, int h, int bpp, int refrate);
private static native DisplayMode nativeGetDisplayMode(int displayID);
--- a/jdk/src/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java Wed Apr 17 21:32:11 2013 -0700
@@ -441,29 +441,37 @@
@Override
public int getMaxTextureWidth() {
- int width;
+ //Temporary disable this logic and use some magic constrain.
+ /*
+ int width;
- synchronized (totalDisplayBounds) {
- if (totalDisplayBounds.width == 0) {
- updateTotalDisplayBounds();
- }
- width = totalDisplayBounds.width;
- }
+ synchronized (totalDisplayBounds) {
+ if (totalDisplayBounds.width == 0) {
+ updateTotalDisplayBounds();
+ }
+ width = totalDisplayBounds.width;
+ }
- return Math.min(width, getMaxTextureSize());
+ return Math.min(width, getMaxTextureSize());
+ */
+ return getMaxTextureSize() / (getDevice().getScaleFactor() * 2);
}
@Override
public int getMaxTextureHeight() {
- int height;
+ //Temporary disable this logic and use some magic constrain.
+ /*
+ int height;
- synchronized (totalDisplayBounds) {
- if (totalDisplayBounds.height == 0) {
- updateTotalDisplayBounds();
- }
- height = totalDisplayBounds.height;
- }
+ synchronized (totalDisplayBounds) {
+ if (totalDisplayBounds.height == 0) {
+ updateTotalDisplayBounds();
+ }
+ height = totalDisplayBounds.height;
+ }
- return Math.min(height, getMaxTextureSize());
+ return Math.min(height, getMaxTextureSize());
+ */
+ return getMaxTextureSize() / (getDevice().getScaleFactor() * 2);
}
}
--- a/jdk/src/macosx/classes/sun/java2d/opengl/CGLLayer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/java2d/opengl/CGLLayer.java Wed Apr 17 21:32:11 2013 -0700
@@ -40,11 +40,12 @@
public class CGLLayer extends CFRetainedResource {
private native long nativeCreateLayer();
-
+ private static native void nativeSetScale(long layerPtr, double scale);
private static native void validate(long layerPtr, CGLSurfaceData cglsd);
private static native void blitTexture(long layerPtr);
private LWWindowPeer peer;
+ private int scale = 1;
private SurfaceData surfaceData; // represents intermediate buffer (texture)
@@ -90,7 +91,7 @@
// and blits the buffer to the layer surface (in drawInCGLContext callback)
CGraphicsConfig gc = (CGraphicsConfig)peer.getGraphicsConfiguration();
surfaceData = gc.createSurfaceData(this);
-
+ setScale(gc.getDevice().getScaleFactor());
// the layer holds a reference to the buffer, which in
// turn has a reference back to this layer
if (surfaceData instanceof CGLSurfaceData) {
@@ -121,6 +122,13 @@
super.dispose();
}
+ private void setScale(final int _scale) {
+ if (scale != _scale) {
+ scale = _scale;
+ nativeSetScale(getPointer(), scale);
+ }
+ }
+
// ----------------------------------------------------------------------
// NATIVE CALLBACKS
// ----------------------------------------------------------------------
--- a/jdk/src/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java Wed Apr 17 21:32:11 2013 -0700
@@ -30,7 +30,6 @@
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
-import java.awt.Insets;
import java.awt.Rectangle;
import java.awt.image.ColorModel;
@@ -41,6 +40,9 @@
public abstract class CGLSurfaceData extends OGLSurfaceData {
+ protected final int scale;
+ protected final int width;
+ protected final int height;
protected CPlatformView pView;
private CGLGraphicsConfig graphicsConfig;
@@ -52,10 +54,19 @@
protected native boolean initPbuffer(long pData, long pConfigInfo,
boolean isOpaque, int width, int height);
+ protected CGLSurfaceData(CGLGraphicsConfig gc, ColorModel cm, int type,
+ int width, int height) {
+ super(gc, cm, type);
+ // TEXTURE shouldn't be scaled, it is used for managed BufferedImages.
+ scale = type == TEXTURE ? 1 : gc.getDevice().getScaleFactor();
+ this.width = width * scale;
+ this.height = height * scale;
+ }
+
protected CGLSurfaceData(CPlatformView pView, CGLGraphicsConfig gc,
- ColorModel cm, int type)
+ ColorModel cm, int type,int width, int height)
{
- super(gc, cm, type);
+ this(gc, cm, type, width, height);
this.pView = pView;
this.graphicsConfig = gc;
@@ -70,9 +81,9 @@
}
protected CGLSurfaceData(CGLLayer layer, CGLGraphicsConfig gc,
- ColorModel cm, int type)
+ ColorModel cm, int type,int width, int height)
{
- super(gc, cm, type);
+ this(gc, cm, type, width, height);
this.graphicsConfig = gc;
long pConfigInfo = gc.getNativeConfigInfo();
@@ -157,13 +168,43 @@
// Overridden in CGLWindowSurfaceData below
}
+ @Override
+ public int getDefaultScale() {
+ return scale;
+ }
+
+ @Override
+ public boolean copyArea(SunGraphics2D sg2d, int x, int y, int w, int h,
+ int dx, int dy) {
+ final int state = sg2d.transformState;
+ if (state > SunGraphics2D.TRANSFORM_TRANSLATESCALE
+ || sg2d.compositeState >= SunGraphics2D.COMP_XOR) {
+ return false;
+ }
+ if (state <= SunGraphics2D.TRANSFORM_ANY_TRANSLATE) {
+ x += sg2d.transX;
+ y += sg2d.transY;
+ } else if (state == SunGraphics2D.TRANSFORM_TRANSLATESCALE) {
+ final double[] coords = {x, y, x + w, y + h, x + dx, y + dy};
+ sg2d.transform.transform(coords, 0, coords, 0, 3);
+ x = (int) Math.ceil(coords[0] - 0.5);
+ y = (int) Math.ceil(coords[1] - 0.5);
+ w = ((int) Math.ceil(coords[2] - 0.5)) - x;
+ h = ((int) Math.ceil(coords[3] - 0.5)) - y;
+ dx = ((int) Math.ceil(coords[4] - 0.5)) - x;
+ dy = ((int) Math.ceil(coords[5] - 0.5)) - y;
+ }
+ oglRenderPipe.copyArea(sg2d, x, y, w, h, dx, dy);
+ return true;
+ }
+
protected native void clearWindow();
public static class CGLWindowSurfaceData extends CGLSurfaceData {
public CGLWindowSurfaceData(CPlatformView pView,
CGLGraphicsConfig gc) {
- super(pView, gc, gc.getColorModel(), WINDOW);
+ super(pView, gc, gc.getColorModel(), WINDOW, 0, 0);
}
@Override
@@ -217,17 +258,12 @@
public static class CGLLayerSurfaceData extends CGLSurfaceData {
private CGLLayer layer;
- private int width, height;
public CGLLayerSurfaceData(CGLLayer layer, CGLGraphicsConfig gc,
int width, int height) {
- super(layer, gc, gc.getColorModel(), FBOBJECT);
-
- this.width = width;
- this.height = height;
+ super(layer, gc, gc.getColorModel(), FBOBJECT, width, height);
this.layer = layer;
-
- initSurface(width, height);
+ initSurface(this.width, this.height);
}
@Override
@@ -296,18 +332,13 @@
public static class CGLOffScreenSurfaceData extends CGLSurfaceData {
private Image offscreenImage;
- private int width, height;
public CGLOffScreenSurfaceData(CPlatformView pView,
CGLGraphicsConfig gc, int width, int height, Image image,
ColorModel cm, int type) {
- super(pView, gc, cm, type);
-
- this.width = width;
- this.height = height;
+ super(pView, gc, cm, type, width, height);
offscreenImage = image;
-
- initSurface(width, height);
+ initSurface(this.width, this.height);
}
@Override
--- a/jdk/src/macosx/classes/sun/lwawt/LWComponentPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/lwawt/LWComponentPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -463,35 +463,8 @@
private void applyConstrain(final Graphics g) {
final SunGraphics2D sg2d = (SunGraphics2D) g;
- final Rectangle constr = localToWindow(getSize());
- // translate and set rectangle constrain.
- sg2d.constrain(constr.x, constr.y, constr.width, constr.height);
- // set region constrain.
- //sg2d.constrain(getVisibleRegion());
- SG2DConstraint(sg2d, getVisibleRegion());
- }
-
- //TODO Move this method to SG2D?
- void SG2DConstraint(final SunGraphics2D sg2d, Region r) {
- sg2d.constrainX = sg2d.transX;
- sg2d.constrainY = sg2d.transY;
-
- Region c = sg2d.constrainClip;
- if ((sg2d.constrainX | sg2d.constrainY) != 0) {
- r = r.getTranslatedRegion(sg2d.constrainX, sg2d.constrainY);
- }
- if (c == null) {
- c = r;
- } else {
- c = c.getIntersection(r);
- if (c == sg2d.constrainClip) {
- // Common case to ignore
- return;
- }
- }
- sg2d.constrainClip = c;
- //validateCompClip() forced call.
- sg2d.setDevClip(r.getLoX(), r.getLoY(), r.getWidth(), r.getHeight());
+ final Rectangle size = localToWindow(getSize());
+ sg2d.constrain(size.x, size.y, size.width, size.height, getVisibleRegion());
}
public Region getVisibleRegion() {
--- a/jdk/src/macosx/classes/sun/lwawt/LWWindowPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/lwawt/LWWindowPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -580,17 +580,16 @@
setBounds(x, y, w, h, SET_BOUNDS, false, false);
// Second, update the graphics config and surface data
- checkIfOnNewScreen();
- if (resized) {
+ final boolean isNewDevice = updateGraphicsDevice();
+ if (resized || isNewDevice) {
replaceSurfaceData();
- flushOnscreenGraphics();
}
// Third, COMPONENT_MOVED/COMPONENT_RESIZED/PAINT events
if (moved || invalid) {
handleMove(x, y, true);
}
- if (resized || invalid) {
+ if (resized || invalid || isNewDevice) {
handleResize(w, h, true);
repaintPeer();
}
@@ -610,7 +609,7 @@
}
if (!isTextured()) {
if (g instanceof SunGraphics2D) {
- SG2DConstraint((SunGraphics2D) g, getRegion());
+ ((SunGraphics2D) g).constrain(0, 0, w, h, getRegion());
}
g.setColor(getBackground());
g.fillRect(0, 0, w, h);
@@ -922,7 +921,7 @@
}
// 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().
+ // is moved by user, graphicsDevice is updated in notifyReshape().
// In either case, there's nothing to do with screenOn here
graphicsConfig = gc;
}
@@ -930,11 +929,14 @@
return true;
}
- private void checkIfOnNewScreen() {
+ /**
+ * Returns true if the GraphicsDevice has been changed, false otherwise.
+ */
+ public boolean updateGraphicsDevice() {
GraphicsDevice newGraphicsDevice = platformWindow.getGraphicsDevice();
synchronized (getStateLock()) {
if (graphicsDevice == newGraphicsDevice) {
- return;
+ return false;
}
graphicsDevice = newGraphicsDevice;
}
@@ -942,13 +944,14 @@
// TODO: DisplayChangedListener stuff
final GraphicsConfiguration newGC = newGraphicsDevice.getDefaultConfiguration();
- if (!setGraphicsConfig(newGC)) return;
+ if (!setGraphicsConfig(newGC)) return false;
SunToolkit.executeOnEventHandlerThread(getTarget(), new Runnable() {
public void run() {
AWTAccessor.getComponentAccessor().setGraphicsConfiguration(getTarget(), newGC);
}
});
+ return true;
}
/*
@@ -983,6 +986,7 @@
oldData.flush();
}
}
+ flushOnscreenGraphics();
}
private void blitSurfaceData(final SurfaceData src, final SurfaceData dst) {
@@ -990,14 +994,15 @@
if (src != dst && src != null && dst != null
&& !(dst instanceof NullSurfaceData)
&& !(src instanceof NullSurfaceData)
- && src.getSurfaceType().equals(dst.getSurfaceType())) {
- final Rectangle size = getSize();
+ && 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,
- getRegion(), 0, 0, 0, 0, size.width, size.height);
+ blit.Blit(src, dst, AlphaComposite.Src, null, 0, 0, 0, 0,
+ size.width, size.height);
}
}
}
@@ -1152,7 +1157,9 @@
if (!becomesFocused &&
(isGrabbing() || getOwnerFrameDialog(grabbingWindow) == this))
{
- focusLog.fine("ungrabbing on " + grabbingWindow);
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("ungrabbing on " + grabbingWindow);
+ }
// ungrab a simple window if its owner looses activation.
grabbingWindow.ungrab();
}
--- a/jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CEmbeddedFrame.java Wed Apr 17 21:32:11 2013 -0700
@@ -97,13 +97,7 @@
public void handleKeyEvent(int eventType, int modifierFlags, String characters,
String charsIgnoringMods, boolean isRepeat, short keyCode,
boolean needsKeyTyped) {
- responder.handleKeyEvent(eventType, modifierFlags, charsIgnoringMods, keyCode, needsKeyTyped);
- }
-
- // REMIND: delete this method once 'deploy' changes for 7156194 is pushed
- public void handleKeyEvent(int eventType, int modifierFlags, String characters,
- String charsIgnoringMods, boolean isRepeat, short keyCode) {
- handleKeyEvent(eventType, modifierFlags, characters, charsIgnoringMods, isRepeat, keyCode, true);
+ responder.handleKeyEvent(eventType, modifierFlags, charsIgnoringMods, keyCode, needsKeyTyped, isRepeat);
}
public void handleInputEvent(String text) {
--- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java Wed Apr 17 21:32:11 2013 -0700
@@ -41,6 +41,7 @@
private final LWWindowPeer peer;
private final boolean isNpapiCallback;
+ private int lastKeyPressCode = KeyEvent.VK_UNDEFINED;
CPlatformResponder(final LWWindowPeer peer, final boolean isNpapiCallback) {
this.peer = peer;
@@ -123,7 +124,7 @@
* Handles key events.
*/
void handleKeyEvent(int eventType, int modifierFlags, String chars,
- short keyCode, boolean needsKeyTyped) {
+ short keyCode, boolean needsKeyTyped, boolean needsKeyReleased) {
boolean isFlagsChangedEvent =
isNpapiCallback ? (eventType == CocoaConstants.NPCocoaEventFlagsChanged) :
(eventType == CocoaConstants.NSFlagsChanged);
@@ -183,6 +184,9 @@
int jmodifiers = NSEvent.nsToJavaKeyModifiers(modifierFlags);
long when = System.currentTimeMillis();
+ if (jeventType == KeyEvent.KEY_PRESSED) {
+ lastKeyPressCode = jkeyCode;
+ }
peer.dispatchKeyEvent(jeventType, when, jmodifiers,
jkeyCode, javaChar, jkeyLocation);
@@ -195,26 +199,41 @@
// Modifier keys (shift, etc) don't want to send TYPED events.
// On the other hand we don't want to generate keyTyped events
// for clipboard related shortcuts like Meta + [CVX]
- boolean isMetaDown = (jmodifiers & KeyEvent.META_DOWN_MASK) != 0;
- if (jeventType == KeyEvent.KEY_PRESSED && postsTyped && !isMetaDown) {
+ if (jeventType == KeyEvent.KEY_PRESSED && postsTyped &&
+ (jmodifiers & KeyEvent.META_DOWN_MASK) == 0) {
+ // Enter and Space keys finish the input method processing,
+ // KEY_TYPED and KEY_RELEASED events for them are synthesized in handleInputEvent.
+ if (needsKeyReleased && (jkeyCode == KeyEvent.VK_ENTER || jkeyCode == KeyEvent.VK_SPACE)) {
+ return;
+ }
peer.dispatchKeyEvent(KeyEvent.KEY_TYPED, when, jmodifiers,
KeyEvent.VK_UNDEFINED, javaChar,
KeyEvent.KEY_LOCATION_UNKNOWN);
+ //If events come from Firefox, released events should also be generated.
+ if (needsKeyReleased) {
+ peer.dispatchKeyEvent(KeyEvent.KEY_RELEASED, when, jmodifiers,
+ jkeyCode, javaChar,
+ KeyEvent.KEY_LOCATION_UNKNOWN);
+ }
}
}
void handleInputEvent(String text) {
if (text != null) {
int index = 0, length = text.length();
- char c;
+ char c = 0;
while (index < length) {
c = text.charAt(index);
peer.dispatchKeyEvent(KeyEvent.KEY_TYPED,
- System.currentTimeMillis(),
- 0, KeyEvent.VK_UNDEFINED, c,
- KeyEvent.KEY_LOCATION_UNKNOWN);
+ System.currentTimeMillis(),
+ 0, KeyEvent.VK_UNDEFINED, c,
+ KeyEvent.KEY_LOCATION_UNKNOWN);
index++;
}
+ peer.dispatchKeyEvent(KeyEvent.KEY_RELEASED,
+ System.currentTimeMillis(),
+ 0, lastKeyPressCode, c,
+ KeyEvent.KEY_LOCATION_UNKNOWN);
}
}
--- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformView.java Wed Apr 17 21:32:11 2013 -0700
@@ -202,7 +202,7 @@
private void deliverKeyEvent(NSEvent event) {
responder.handleKeyEvent(event.getType(), event.getModifierFlags(),
- event.getCharactersIgnoringModifiers(), event.getKeyCode(), true);
+ event.getCharactersIgnoringModifiers(), event.getKeyCode(), true, false);
}
/**
--- a/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java Wed Apr 17 21:32:11 2013 -0700
@@ -860,8 +860,8 @@
}
}
- private void flushBuffers() {
- if (isVisible() && !nativeBounds.isEmpty()) {
+ void flushBuffers() {
+ if (isVisible() && !nativeBounds.isEmpty() && !isFullScreenMode) {
try {
LWCToolkit.invokeAndWait(new Runnable() {
@Override
--- a/jdk/src/macosx/native/com/apple/laf/JRSUIController.m Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/native/com/apple/laf/JRSUIController.m Wed Apr 17 21:32:11 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, 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
@@ -199,6 +199,7 @@
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGContextRef cgRef = CGBitmapContextCreate(rawPixelData, imgW, imgH, 8, imgW * 4, colorspace, kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host);
CGColorSpaceRelease(colorspace);
+ CGContextScaleCTM(cgRef, imgW/w , imgH/h);
jint status = doPaintCGContext(cgRef, controlPtr, oldProperties, newProperties, x, y, w, h);
CGContextRelease(cgRef);
--- a/jdk/src/macosx/native/sun/awt/CGraphicsDevice.m Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/native/sun/awt/CGraphicsDevice.m Wed Apr 17 21:32:11 2013 -0700
@@ -315,3 +315,34 @@
return jreturnArray;
}
+
+/*
+ * Class: sun_awt_CGraphicsDevice
+ * Method: nativeGetScaleFactor
+ * Signature: (I)D
+ */
+JNIEXPORT jdouble JNICALL
+Java_sun_awt_CGraphicsDevice_nativeGetScaleFactor
+(JNIEnv *env, jclass class, jint displayID)
+{
+ __block jdouble ret = 1.0f;
+
+JNF_COCOA_ENTER(env);
+
+ [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
+ NSArray *screens = [NSScreen screens];
+ for (NSScreen *screen in screens) {
+ NSDictionary *screenInfo = [screen deviceDescription];
+ NSNumber *screenID = [screenInfo objectForKey:@"NSScreenNumber"];
+ if ([screenID pointerValue] == displayID){
+ if ([screen respondsToSelector:@selector(backingScaleFactor)]) {
+ ret = [screen backingScaleFactor];
+ }
+ break;
+ }
+ }
+ }];
+
+JNF_COCOA_EXIT(env);
+ return ret;
+}
--- a/jdk/src/macosx/native/sun/java2d/opengl/CGLLayer.m Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/macosx/native/sun/java2d/opengl/CGLLayer.m Wed Apr 17 21:32:11 2013 -0700
@@ -61,6 +61,19 @@
//Layer backed view
//self.needsDisplayOnBoundsChange = YES;
//self.autoresizingMask = kCALayerWidthSizable | kCALayerHeightSizable;
+
+ //Disable CALayer's default animation
+ NSMutableDictionary * actions = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
+ [NSNull null], @"bounds",
+ [NSNull null], @"contents",
+ [NSNull null], @"contentsScale",
+ [NSNull null], @"onOrderIn",
+ [NSNull null], @"onOrderOut",
+ [NSNull null], @"sublayers",
+ nil];
+ self.actions = actions;
+ [actions release];
+
textureID = 0; // texture will be created by rendering pipe
target = 0;
@@ -121,8 +134,12 @@
// Set the current context to the one given to us.
CGLSetCurrentContext(glContext);
+ // Should clear the whole CALayer, because it can be larger than our texture.
+ glClearColor(0.0, 0.0, 0.0, 0.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+
glViewport(0, 0, textureWidth, textureHeight);
-
+
JNIEnv *env = [ThreadUtilities getJNIEnv];
static JNF_CLASS_CACHE(jc_JavaLayer, "sun/java2d/opengl/CGLLayer");
static JNF_MEMBER_CACHE(jm_drawInCGLContext, jc_JavaLayer, "drawInCGLContext", "()V");
@@ -168,7 +185,7 @@
// Must be called under the RQ lock.
JNIEXPORT void JNICALL
Java_sun_java2d_opengl_CGLLayer_validate
-(JNIEnv *env, jobject obj, jlong layerPtr, jobject surfaceData)
+(JNIEnv *env, jclass cls, jlong layerPtr, jobject surfaceData)
{
CGLLayer *layer = OBJC(layerPtr);
@@ -186,9 +203,21 @@
// Must be called on the AppKit thread and under the RQ lock.
JNIEXPORT void JNICALL
Java_sun_java2d_opengl_CGLLayer_blitTexture
-(JNIEnv *env, jobject obj, jlong layerPtr)
+(JNIEnv *env, jclass cls, jlong layerPtr)
{
CGLLayer *layer = jlong_to_ptr(layerPtr);
[layer blitTexture];
}
+
+JNIEXPORT void JNICALL
+Java_sun_java2d_opengl_CGLLayer_nativeSetScale
+(JNIEnv *env, jclass cls, jlong layerPtr, jdouble scale)
+{
+ JNF_COCOA_ENTER(env);
+ CGLLayer *layer = jlong_to_ptr(layerPtr);
+ [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
+ layer.contentsScale = scale;
+ }];
+ JNF_COCOA_EXIT(env);
+}
--- a/jdk/src/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/java/awt/ContainerOrderFocusTraversalPolicy.java Wed Apr 17 21:32:11 2013 -0700
@@ -208,7 +208,9 @@
* aComponent is null
*/
public Component getComponentAfter(Container aContainer, Component aComponent) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Searching in " + aContainer + " for component after " + aComponent);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Searching in " + aContainer + " for component after " + aComponent);
+ }
if (aContainer == null || aComponent == null) {
throw new IllegalArgumentException("aContainer and aComponent cannot be null");
@@ -247,7 +249,9 @@
// Null result means that we overstepped the limit of the FTP's cycle.
// In that case we must quit the cycle, otherwise return the component found.
if (afterComp != null) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### FTP returned " + afterComp);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### FTP returned " + afterComp);
+ }
return afterComp;
}
aComponent = provider;
@@ -255,7 +259,9 @@
List<Component> cycle = getFocusTraversalCycle(aContainer);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is " + cycle + ", component is " + aComponent);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is " + cycle + ", component is " + aComponent);
+ }
int index = getComponentIndex(cycle, aComponent);
@@ -336,7 +342,9 @@
// Null result means that we overstepped the limit of the FTP's cycle.
// In that case we must quit the cycle, otherwise return the component found.
if (beforeComp != null) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### FTP returned " + beforeComp);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### FTP returned " + beforeComp);
+ }
return beforeComp;
}
aComponent = provider;
@@ -349,7 +357,9 @@
List<Component> cycle = getFocusTraversalCycle(aContainer);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is " + cycle + ", component is " + aComponent);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is " + cycle + ", component is " + aComponent);
+ }
int index = getComponentIndex(cycle, aComponent);
@@ -401,7 +411,9 @@
public Component getFirstComponent(Container aContainer) {
List<Component> cycle;
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Getting first component in " + aContainer);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Getting first component in " + aContainer);
+ }
if (aContainer == null) {
throw new IllegalArgumentException("aContainer cannot be null");
@@ -420,10 +432,14 @@
}
if (cycle.size() == 0) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is empty");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is empty");
+ }
return null;
}
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is " + cycle);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is " + cycle);
+ }
for (Component comp : cycle) {
if (accept(comp)) {
@@ -451,7 +467,9 @@
*/
public Component getLastComponent(Container aContainer) {
List<Component> cycle;
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Getting last component in " + aContainer);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Getting last component in " + aContainer);
+ }
if (aContainer == null) {
throw new IllegalArgumentException("aContainer cannot be null");
@@ -470,10 +488,14 @@
}
if (cycle.size() == 0) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is empty");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is empty");
+ }
return null;
}
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is " + cycle);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is " + cycle);
+ }
for (int i= cycle.size() - 1; i >= 0; i--) {
Component comp = cycle.get(i);
--- a/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/java/awt/DefaultKeyboardFocusManager.java Wed Apr 17 21:32:11 2013 -0700
@@ -310,7 +310,9 @@
* <code>false</code> otherwise
*/
public boolean dispatchEvent(AWTEvent e) {
- if (focusLog.isLoggable(PlatformLogger.FINE) && (e instanceof WindowEvent || e instanceof FocusEvent)) focusLog.fine("" + e);
+ if (focusLog.isLoggable(PlatformLogger.FINE) && (e instanceof WindowEvent || e instanceof FocusEvent)) {
+ focusLog.fine("" + e);
+ }
switch (e.getID()) {
case WindowEvent.WINDOW_GAINED_FOCUS: {
if (repostIfFollowsKeyEvents((WindowEvent)e)) {
@@ -871,7 +873,9 @@
}
}
if (ke != null) {
- focusLog.finer("Pumping approved event {0}", ke);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Pumping approved event {0}", ke);
+ }
enqueuedKeyEvents.removeFirst();
}
}
@@ -920,7 +924,9 @@
// The fix is rolled out.
if (ke.getWhen() > marker.after) {
- focusLog.finer("Storing event {0} because of marker {1}", ke, marker);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Storing event {0} because of marker {1}", ke, marker);
+ }
enqueuedKeyEvents.addLast(ke);
return true;
}
@@ -932,7 +938,9 @@
}
case FocusEvent.FOCUS_GAINED:
- focusLog.finest("Markers before FOCUS_GAINED on {0}", target);
+ if (focusLog.isLoggable(PlatformLogger.FINEST)) {
+ focusLog.finest("Markers before FOCUS_GAINED on {0}", target);
+ }
dumpMarkers();
// Search the marker list for the first marker tied to
// the Component which just gained focus. Then remove
@@ -959,7 +967,9 @@
}
} else {
// Exception condition - event without marker
- focusLog.finer("Event without marker {0}", e);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Event without marker {0}", e);
+ }
}
}
focusLog.finest("Markers after FOCUS_GAINED");
@@ -1198,8 +1208,10 @@
return;
}
- focusLog.finer("Enqueue at {0} for {1}",
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Enqueue at {0} for {1}",
after, untilFocused);
+ }
int insertionIndex = 0,
i = typeAheadMarkers.size();
@@ -1238,8 +1250,10 @@
return;
}
- focusLog.finer("Dequeue at {0} for {1}",
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Dequeue at {0} for {1}",
after, untilFocused);
+ }
TypeAheadMarker marker;
ListIterator<TypeAheadMarker> iter = typeAheadMarkers.listIterator
--- a/jdk/src/share/classes/java/awt/EventDispatchThread.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/java/awt/EventDispatchThread.java Wed Apr 17 21:32:11 2013 -0700
@@ -138,7 +138,9 @@
}
void addEventFilter(EventFilter filter) {
- eventLog.finest("adding the event filter: " + filter);
+ if (eventLog.isLoggable(PlatformLogger.FINEST)) {
+ eventLog.finest("adding the event filter: " + filter);
+ }
synchronized (eventFilters) {
if (!eventFilters.contains(filter)) {
if (filter instanceof ModalEventFilter) {
@@ -162,7 +164,9 @@
}
void removeEventFilter(EventFilter filter) {
- eventLog.finest("removing the event filter: " + filter);
+ if (eventLog.isLoggable(PlatformLogger.FINEST)) {
+ eventLog.finest("removing the event filter: " + filter);
+ }
synchronized (eventFilters) {
eventFilters.remove(filter);
}
--- a/jdk/src/share/classes/java/awt/KeyboardFocusManager.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/java/awt/KeyboardFocusManager.java Wed Apr 17 21:32:11 2013 -0700
@@ -2410,7 +2410,7 @@
Window nativeFocusedWindow = thisManager.getNativeFocusedWindow();
if (focusLog.isLoggable(PlatformLogger.FINER)) {
focusLog.finer("SNFH for {0} in {1}",
- String.valueOf(descendant), String.valueOf(heavyweight));
+ String.valueOf(descendant), String.valueOf(heavyweight));
}
if (focusLog.isLoggable(PlatformLogger.FINEST)) {
focusLog.finest("0. Current focus owner {0}",
@@ -2478,9 +2478,10 @@
manager.enqueueKeyEvents(time, descendant);
}
- if (focusLog.isLoggable(PlatformLogger.FINEST))
+ if (focusLog.isLoggable(PlatformLogger.FINEST)) {
focusLog.finest("3. SNFH_HANDLED for lightweight" +
descendant + " in " + heavyweight);
+ }
return SNFH_SUCCESS_HANDLED;
} else {
if (!focusedWindowChangeAllowed) {
@@ -2501,8 +2502,9 @@
(hwFocusRequest != null)
? hwFocusRequest.heavyweight
: nativeFocusedWindow)) {
- if (focusLog.isLoggable(PlatformLogger.FINEST))
+ if (focusLog.isLoggable(PlatformLogger.FINEST)) {
focusLog.finest("4. SNFH_FAILURE for " + descendant);
+ }
return SNFH_FAILURE;
}
}
@@ -2511,8 +2513,9 @@
heavyweightRequests.add
(new HeavyweightFocusRequest(heavyweight, descendant,
temporary, cause));
- if (focusLog.isLoggable(PlatformLogger.FINEST))
+ if (focusLog.isLoggable(PlatformLogger.FINEST)) {
focusLog.finest("5. SNFH_PROCEED for " + descendant);
+ }
return SNFH_SUCCESS_PROCEED;
}
}
--- a/jdk/src/share/classes/java/awt/WaitDispatchSupport.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/java/awt/WaitDispatchSupport.java Wed Apr 17 21:32:11 2013 -0700
@@ -165,8 +165,10 @@
*/
@Override
public boolean enter() {
- log.fine("enter(): blockingEDT=" + keepBlockingEDT.get() +
- ", blockingCT=" + keepBlockingCT.get());
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("enter(): blockingEDT=" + keepBlockingEDT.get() +
+ ", blockingCT=" + keepBlockingCT.get());
+ }
if (!keepBlockingEDT.compareAndSet(false, true)) {
log.fine("The secondary loop is already running, aborting");
@@ -190,9 +192,13 @@
Thread currentThread = Thread.currentThread();
if (currentThread == dispatchThread) {
- log.finest("On dispatch thread: " + dispatchThread);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("On dispatch thread: " + dispatchThread);
+ }
if (interval != 0) {
- log.finest("scheduling the timer for " + interval + " ms");
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("scheduling the timer for " + interval + " ms");
+ }
timer.schedule(timerTask = new TimerTask() {
@Override
public void run() {
@@ -207,7 +213,9 @@
SequencedEvent currentSE = KeyboardFocusManager.
getCurrentKeyboardFocusManager().getCurrentSequencedEvent();
if (currentSE != null) {
- log.fine("Dispose current SequencedEvent: " + currentSE);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Dispose current SequencedEvent: " + currentSE);
+ }
currentSE.dispose();
}
// In case the exit() method is called before starting
@@ -223,7 +231,9 @@
}
});
} else {
- log.finest("On non-dispatch thread: " + currentThread);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("On non-dispatch thread: " + currentThread);
+ }
synchronized (getTreeLock()) {
if (filter != null) {
dispatchThread.addEventFilter(filter);
@@ -247,9 +257,13 @@
getTreeLock().wait();
}
}
- log.fine("waitDone " + keepBlockingEDT.get() + " " + keepBlockingCT.get());
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("waitDone " + keepBlockingEDT.get() + " " + keepBlockingCT.get());
+ }
} catch (InterruptedException e) {
- log.fine("Exception caught while waiting: " + e);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Exception caught while waiting: " + e);
+ }
} finally {
if (filter != null) {
dispatchThread.removeEventFilter(filter);
@@ -270,8 +284,10 @@
* @inheritDoc
*/
public boolean exit() {
- log.fine("exit(): blockingEDT=" + keepBlockingEDT.get() +
- ", blockingCT=" + keepBlockingCT.get());
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("exit(): blockingEDT=" + keepBlockingEDT.get() +
+ ", blockingCT=" + keepBlockingCT.get());
+ }
if (keepBlockingEDT.compareAndSet(true, false)) {
wakeupEDT();
return true;
@@ -295,7 +311,9 @@
};
private void wakeupEDT() {
- log.finest("wakeupEDT(): EDT == " + dispatchThread);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("wakeupEDT(): EDT == " + dispatchThread);
+ }
EventQueue eq = dispatchThread.getEventQueue();
eq.postEvent(new PeerEvent(this, wakingRunnable, PeerEvent.PRIORITY_EVENT));
}
--- a/jdk/src/share/classes/java/beans/Introspector.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/java/beans/Introspector.java Wed Apr 17 21:32:11 2013 -0700
@@ -28,6 +28,7 @@
import com.sun.beans.TypeResolver;
import com.sun.beans.WeakCache;
import com.sun.beans.finder.ClassFinder;
+import com.sun.beans.finder.MethodFinder;
import java.awt.Component;
@@ -1281,7 +1282,20 @@
for (int i = 0; i < result.length; i++) {
Method method = result[i];
if (!method.getDeclaringClass().equals(clz)) {
- result[i] = null;
+ result[i] = null; // ignore methods declared elsewhere
+ }
+ else {
+ try {
+ method = MethodFinder.findAccessibleMethod(method);
+ Class<?> type = method.getDeclaringClass();
+ result[i] = type.equals(clz) || type.isInterface()
+ ? method
+ : null; // ignore methods from superclasses
+ }
+ catch (NoSuchMethodException exception) {
+ // commented out because of 6976577
+ // result[i] = null; // ignore inaccessible methods
+ }
}
}
declaredMethodCache.put(clz, result);
--- a/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/javax/swing/BufferStrategyPaintManager.java Wed Apr 17 21:32:11 2013 -0700
@@ -523,8 +523,7 @@
if (bufferStrategy.contentsRestored()) {
contentsLost = true;
if (LOGGER.isLoggable(PlatformLogger.FINER)) {
- LOGGER.finer(
- "prepare: contents restored in prepare");
+ LOGGER.finer("prepare: contents restored in prepare");
}
}
}
--- a/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/javax/swing/SortingFocusTraversalPolicy.java Wed Apr 17 21:32:11 2013 -0700
@@ -271,7 +271,9 @@
// Null result means that we overstepped the limit of the FTP's cycle.
// In that case we must quit the cycle, otherwise return the component found.
if (afterComp != null) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### FTP returned " + afterComp);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### FTP returned " + afterComp);
+ }
return afterComp;
}
aComponent = provider;
@@ -279,7 +281,9 @@
List<Component> cycle = getFocusTraversalCycle(aContainer);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is " + cycle + ", component is " + aComponent);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is " + cycle + ", component is " + aComponent);
+ }
int index = getComponentIndex(cycle, aComponent);
@@ -360,7 +364,9 @@
// Null result means that we overstepped the limit of the FTP's cycle.
// In that case we must quit the cycle, otherwise return the component found.
if (beforeComp != null) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### FTP returned " + beforeComp);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### FTP returned " + beforeComp);
+ }
return beforeComp;
}
aComponent = provider;
@@ -373,7 +379,9 @@
List<Component> cycle = getFocusTraversalCycle(aContainer);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is " + cycle + ", component is " + aComponent);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is " + cycle + ", component is " + aComponent);
+ }
int index = getComponentIndex(cycle, aComponent);
@@ -424,7 +432,9 @@
public Component getFirstComponent(Container aContainer) {
List<Component> cycle;
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Getting first component in " + aContainer);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Getting first component in " + aContainer);
+ }
if (aContainer == null) {
throw new IllegalArgumentException("aContainer cannot be null");
}
@@ -436,10 +446,14 @@
}
if (cycle.size() == 0) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is empty");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is empty");
+ }
return null;
}
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is " + cycle);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is " + cycle);
+ }
for (Component comp : cycle) {
if (accept(comp)) {
@@ -466,7 +480,9 @@
*/
public Component getLastComponent(Container aContainer) {
List<Component> cycle;
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Getting last component in " + aContainer);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Getting last component in " + aContainer);
+ }
if (aContainer == null) {
throw new IllegalArgumentException("aContainer cannot be null");
@@ -479,10 +495,14 @@
}
if (cycle.size() == 0) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is empty");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is empty");
+ }
return null;
}
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### Cycle is " + cycle);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### Cycle is " + cycle);
+ }
for (int i= cycle.size() - 1; i >= 0; i--) {
Component comp = cycle.get(i);
--- a/jdk/src/share/classes/sun/awt/AWTAutoShutdown.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/awt/AWTAutoShutdown.java Wed Apr 17 21:32:11 2013 -0700
@@ -375,11 +375,13 @@
}
final void dumpPeers(final PlatformLogger aLog) {
- synchronized (activationLock) {
- synchronized (mainLock) {
- aLog.fine("Mapped peers:");
- for (Object key : peerMap.keySet()) {
- aLog.fine(key + "->" + peerMap.get(key));
+ if (aLog.isLoggable(PlatformLogger.FINE)) {
+ synchronized (activationLock) {
+ synchronized (mainLock) {
+ aLog.fine("Mapped peers:");
+ for (Object key : peerMap.keySet()) {
+ aLog.fine(key + "->" + peerMap.get(key));
+ }
}
}
}
--- a/jdk/src/share/classes/sun/awt/DebugSettings.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/awt/DebugSettings.java Wed Apr 17 21:32:11 2013 -0700
@@ -129,7 +129,7 @@
// echo the initial property settings to stdout
if (log.isLoggable(PlatformLogger.FINE)) {
- log.fine("DebugSettings:\n{0}" + this);
+ log.fine("DebugSettings:\n{0}", this);
}
}
--- a/jdk/src/share/classes/sun/awt/KeyboardFocusManagerPeerImpl.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/awt/KeyboardFocusManagerPeerImpl.java Wed Apr 17 21:32:11 2013 -0700
@@ -57,8 +57,9 @@
public void clearGlobalFocusOwner(Window activeWindow) {
if (activeWindow != null) {
Component focusOwner = activeWindow.getFocusOwner();
- if (focusLog.isLoggable(PlatformLogger.FINE))
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
focusLog.fine("Clearing global focus owner " + focusOwner);
+ }
if (focusOwner != null) {
FocusEvent fl = new CausedFocusEvent(focusOwner, FocusEvent.FOCUS_LOST, false, null,
CausedFocusEvent.Cause.CLEAR_GLOBAL_FOCUS_OWNER);
@@ -126,16 +127,18 @@
FocusEvent fl = new CausedFocusEvent(currentOwner, FocusEvent.FOCUS_LOST,
false, lightweightChild, cause);
- if (focusLog.isLoggable(PlatformLogger.FINER))
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
focusLog.finer("Posting focus event: " + fl);
+ }
SunToolkit.postEvent(SunToolkit.targetToAppContext(currentOwner), fl);
}
FocusEvent fg = new CausedFocusEvent(lightweightChild, FocusEvent.FOCUS_GAINED,
false, currentOwner, cause);
- if (focusLog.isLoggable(PlatformLogger.FINER))
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
focusLog.finer("Posting focus event: " + fg);
+ }
SunToolkit.postEvent(SunToolkit.targetToAppContext(lightweightChild), fg);
return true;
}
--- a/jdk/src/share/classes/sun/awt/SunToolkit.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/awt/SunToolkit.java Wed Apr 17 21:32:11 2013 -0700
@@ -487,7 +487,9 @@
setSystemGenerated(event);
AppContext eventContext = targetToAppContext(event.getSource());
if (eventContext != null && !eventContext.equals(appContext)) {
- log.fine("Event posted on wrong app context : " + event);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Event posted on wrong app context : " + event);
+ }
}
PostEventQueue postEventQueue =
(PostEventQueue)appContext.get(POST_EVENT_QUEUE_KEY);
--- a/jdk/src/share/classes/sun/awt/im/InputContext.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/awt/im/InputContext.java Wed Apr 17 21:32:11 2013 -0700
@@ -387,7 +387,9 @@
}
previousInputMethod = null;
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Current client component " + currentClientComponent);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Current client component " + currentClientComponent);
+ }
if (inputMethod instanceof InputMethodAdapter) {
((InputMethodAdapter) inputMethod).setClientComponent(currentClientComponent);
}
@@ -884,14 +886,16 @@
}
private void logCreationFailed(Throwable throwable) {
- String errorTextFormat = Toolkit.getProperty("AWT.InputMethodCreationFailed",
- "Could not create {0}. Reason: {1}");
- Object[] args =
- {inputMethodLocator.getDescriptor().getInputMethodDisplayName(null, Locale.getDefault()),
- throwable.getLocalizedMessage()};
- MessageFormat mf = new MessageFormat(errorTextFormat);
PlatformLogger logger = PlatformLogger.getLogger("sun.awt.im");
- logger.config(mf.format(args));
+ if (logger.isLoggable(PlatformLogger.CONFIG)) {
+ String errorTextFormat = Toolkit.getProperty("AWT.InputMethodCreationFailed",
+ "Could not create {0}. Reason: {1}");
+ Object[] args =
+ {inputMethodLocator.getDescriptor().getInputMethodDisplayName(null, Locale.getDefault()),
+ throwable.getLocalizedMessage()};
+ MessageFormat mf = new MessageFormat(errorTextFormat);
+ logger.config(mf.format(args));
+ }
}
InputMethodLocator getInputMethodLocator() {
--- a/jdk/src/share/classes/sun/awt/image/SurfaceManager.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/awt/image/SurfaceManager.java Wed Apr 17 21:32:11 2013 -0700
@@ -31,6 +31,7 @@
import java.awt.Image;
import java.awt.ImageCapabilities;
import java.awt.image.BufferedImage;
+import java.awt.image.VolatileImage;
import java.util.concurrent.ConcurrentHashMap;
import java.util.Iterator;
import sun.java2d.SurfaceData;
@@ -287,4 +288,18 @@
flush(true);
}
}
+
+ /**
+ * Returns a scale factor of the image. This is utility method, which
+ * fetches information from the SurfaceData of the image.
+ *
+ * @see SurfaceData#getDefaultScale
+ */
+ public static int getImageScale(final Image img) {
+ if (!(img instanceof VolatileImage)) {
+ return 1;
+ }
+ final SurfaceManager sm = getManager(img);
+ return sm.getPrimarySurfaceData().getDefaultScale();
+ }
}
--- a/jdk/src/share/classes/sun/java2d/SunGraphics2D.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/java2d/SunGraphics2D.java Wed Apr 17 21:32:11 2013 -0700
@@ -65,6 +65,8 @@
import java.awt.Transparency;
import java.awt.font.GlyphVector;
import java.awt.font.TextLayout;
+
+import sun.awt.image.SurfaceManager;
import sun.font.FontDesignMetrics;
import sun.font.FontUtilities;
import sun.java2d.pipe.PixelDrawPipe;
@@ -82,14 +84,12 @@
import sun.java2d.loops.SurfaceType;
import sun.java2d.loops.Blit;
import sun.java2d.loops.MaskFill;
-import sun.font.FontManager;
import java.awt.font.FontRenderContext;
import sun.java2d.loops.XORComposite;
import sun.awt.ConstrainableGraphics;
import sun.awt.SunHints;
import java.util.Map;
import java.util.Iterator;
-import sun.java2d.DestSurfaceProvider;
import sun.misc.PerformanceLogger;
import java.lang.annotation.Native;
@@ -228,13 +228,15 @@
public RenderingHints hints;
- public Region constrainClip; // lightweight bounds
+ public Region constrainClip; // lightweight bounds in pixels
public int constrainX;
public int constrainY;
public Region clipRegion;
public Shape usrClip;
- protected Region devClip; // Actual physical drawable
+ protected Region devClip; // Actual physical drawable in pixels
+
+ private final int devScale; // Actual physical scale factor
// cached state for text rendering
private boolean validFontInfo;
@@ -277,6 +279,12 @@
validateColor();
+ devScale = sd.getDefaultScale();
+ if (devScale != 1) {
+ transform.setToScale(devScale, devScale);
+ invalidateTransform();
+ }
+
font = f;
if (font == null) {
font = defaultFont;
@@ -341,6 +349,49 @@
/**
* Constrain rendering for lightweight objects.
+ */
+ public void constrain(int x, int y, int w, int h, Region region) {
+ if ((x | y) != 0) {
+ translate(x, y);
+ }
+ if (transformState > TRANSFORM_TRANSLATESCALE) {
+ clipRect(0, 0, w, h);
+ return;
+ }
+ // changes parameters according to the current scale and translate.
+ final double scaleX = transform.getScaleX();
+ final double scaleY = transform.getScaleY();
+ x = constrainX = (int) transform.getTranslateX();
+ y = constrainY = (int) transform.getTranslateY();
+ w = Region.dimAdd(x, Region.clipScale(w, scaleX));
+ h = Region.dimAdd(y, Region.clipScale(h, scaleY));
+
+ Region c = constrainClip;
+ if (c == null) {
+ c = Region.getInstanceXYXY(x, y, w, h);
+ } else {
+ c = c.getIntersectionXYXY(x, y, w, h);
+ }
+ if (region != null) {
+ region = region.getScaledRegion(scaleX, scaleY);
+ region = region.getTranslatedRegion(x, y);
+ c = c.getIntersection(region);
+ }
+
+ if (c == constrainClip) {
+ // Common case to ignore
+ return;
+ }
+
+ constrainClip = c;
+ if (!devClip.isInsideQuickCheck(c)) {
+ devClip = devClip.getIntersection(c);
+ validateCompClip();
+ }
+ }
+
+ /**
+ * Constrain rendering for lightweight objects.
*
* REMIND: This method will back off to the "workaround"
* of using translate and clipRect if the Graphics
@@ -351,33 +402,9 @@
* @exception IllegalStateException If the Graphics
* to be constrained has a complex transform.
*/
+ @Override
public void constrain(int x, int y, int w, int h) {
- if ((x|y) != 0) {
- translate(x, y);
- }
- if (transformState >= TRANSFORM_TRANSLATESCALE) {
- clipRect(0, 0, w, h);
- return;
- }
- x = constrainX = transX;
- y = constrainY = transY;
- w = Region.dimAdd(x, w);
- h = Region.dimAdd(y, h);
- Region c = constrainClip;
- if (c == null) {
- c = Region.getInstanceXYXY(x, y, w, h);
- } else {
- c = c.getIntersectionXYXY(x, y, w, h);
- if (c == constrainClip) {
- // Common case to ignore
- return;
- }
- }
- constrainClip = c;
- if (!devClip.isInsideQuickCheck(c)) {
- devClip = devClip.getIntersection(c);
- validateCompClip();
- }
+ constrain(x, y, w, h, null);
}
protected static ValidatePipe invalidpipe = new ValidatePipe();
@@ -1561,11 +1588,13 @@
* @see TransformChain
* @see AffineTransform
*/
+ @Override
public void setTransform(AffineTransform Tx) {
- if ((constrainX|constrainY) == 0) {
+ if ((constrainX | constrainY) == 0 && devScale == 1) {
transform.setTransform(Tx);
} else {
- transform.setToTranslation(constrainX, constrainY);
+ transform.setTransform(devScale, 0, 0, devScale, constrainX,
+ constrainY);
transform.concatenate(Tx);
}
invalidateTransform();
@@ -1623,12 +1652,15 @@
* @see #transform
* @see #setTransform
*/
+ @Override
public AffineTransform getTransform() {
- if ((constrainX|constrainY) == 0) {
+ if ((constrainX | constrainY) == 0 && devScale == 1) {
return new AffineTransform(transform);
}
- AffineTransform tx =
- AffineTransform.getTranslateInstance(-constrainX, -constrainY);
+ final double invScale = 1.0 / devScale;
+ AffineTransform tx = new AffineTransform(invScale, 0, 0, invScale,
+ -constrainX * invScale,
+ -constrainY * invScale);
tx.concatenate(transform);
return tx;
}
@@ -3012,6 +3044,37 @@
}
// end of text rendering methods
+ private static boolean isHiDPIImage(final Image img) {
+ return SurfaceManager.getImageScale(img) != 1;
+ }
+
+ private boolean drawHiDPIImage(Image img, int dx1, int dy1, int dx2,
+ int dy2, int sx1, int sy1, int sx2, int sy2,
+ Color bgcolor, ImageObserver observer) {
+ final int scale = SurfaceManager.getImageScale(img);
+ sx1 = Region.clipScale(sx1, scale);
+ sx2 = Region.clipScale(sx2, scale);
+ sy1 = Region.clipScale(sy1, scale);
+ sy2 = Region.clipScale(sy2, scale);
+ try {
+ return imagepipe.scaleImage(this, img, dx1, dy1, dx2, dy2, sx1, sy1,
+ sx2, sy2, bgcolor, observer);
+ } catch (InvalidPipeException e) {
+ try {
+ revalidateAll();
+ return imagepipe.scaleImage(this, img, dx1, dy1, dx2, dy2, sx1,
+ sy1, sx2, sy2, bgcolor, observer);
+ } catch (InvalidPipeException e2) {
+ // Still catching the exception; we are not yet ready to
+ // validate the surfaceData correctly. Fail for now and
+ // try again next time around.
+ return false;
+ }
+ } finally {
+ surfaceData.markDirty();
+ }
+ }
+
/**
* Draws an image scaled to x,y,w,h in nonblocking mode with a
* callback object.
@@ -3025,8 +3088,9 @@
* Not part of the advertised API but a useful utility method
* to call internally. This is for the case where we are
* drawing to/from given coordinates using a given width/height,
- * but we guarantee that the weidth/height of the src and dest
- * areas are equal (no scale needed).
+ * but we guarantee that the surfaceData's width/height of the src and dest
+ * areas are equal (no scale needed). Note that this method intentionally
+ * ignore scale factor of the source image, and copy it as is.
*/
public boolean copyImage(Image img, int dx, int dy, int sx, int sy,
int width, int height, Color bgcolor,
@@ -3064,7 +3128,15 @@
if ((width == 0) || (height == 0)) {
return true;
}
- if (width == img.getWidth(null) && height == img.getHeight(null)) {
+
+ final int imgW = img.getWidth(null);
+ final int imgH = img.getHeight(null);
+ if (isHiDPIImage(img)) {
+ return drawHiDPIImage(img, x, y, x + width, y + height, 0, 0, imgW,
+ imgH, bg, observer);
+ }
+
+ if (width == imgW && height == imgH) {
return copyImage(img, x, y, 0, 0, width, height, bg, observer);
}
@@ -3105,6 +3177,13 @@
return true;
}
+ if (isHiDPIImage(img)) {
+ final int imgW = img.getWidth(null);
+ final int imgH = img.getHeight(null);
+ return drawHiDPIImage(img, x, y, x + imgW, y + imgH, 0, 0, imgW,
+ imgH, bg, observer);
+ }
+
try {
return imagepipe.copyImage(this, img, x, y, bg, observer);
} catch (InvalidPipeException e) {
@@ -3153,6 +3232,11 @@
return true;
}
+ if (isHiDPIImage(img)) {
+ return drawHiDPIImage(img, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2,
+ bgcolor, observer);
+ }
+
if (((sx2 - sx1) == (dx2 - dx1)) &&
((sy2 - sy1) == (dy2 - dy1)))
{
@@ -3231,6 +3315,18 @@
return drawImage(img, 0, 0, null, observer);
}
+ if (isHiDPIImage(img)) {
+ final int w = img.getWidth(null);
+ final int h = img.getHeight(null);
+ final AffineTransform tx = new AffineTransform(transform);
+ transform(xform);
+ boolean result = drawHiDPIImage(img, 0, 0, w, h, 0, 0, w, h, null,
+ observer);
+ transform.setTransform(tx);
+ invalidateTransform();
+ return result;
+ }
+
try {
return imagepipe.transformImage(this, img, xform, observer);
} catch (InvalidPipeException e) {
--- a/jdk/src/share/classes/sun/java2d/SurfaceData.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/java2d/SurfaceData.java Wed Apr 17 21:32:11 2013 -0700
@@ -1057,4 +1057,14 @@
* responsible for returning the appropriate object.
*/
public abstract Object getDestination();
+
+ /**
+ * Returns default scale factor of the destination surface. Scale factor
+ * describes the mapping between virtual and physical coordinates of the
+ * SurfaceData. If the scale is 2 then virtual pixel coordinates need to be
+ * doubled for physical pixels.
+ */
+ public int getDefaultScale() {
+ return 1;
+ }
}
--- a/jdk/src/share/classes/sun/java2d/pipe/BufferedContext.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/java2d/pipe/BufferedContext.java Wed Apr 17 21:32:11 2013 -0700
@@ -97,8 +97,7 @@
private int validatedRGB;
private int validatedFlags;
private boolean xformInUse;
- private int transX;
- private int transY;
+ private AffineTransform transform;
protected BufferedContext(RenderQueue rq) {
this.rq = rq;
@@ -275,14 +274,11 @@
resetTransform();
xformInUse = false;
txChanged = true;
- } else if (sg2d != null) {
- if (transX != sg2d.transX || transY != sg2d.transY) {
- txChanged = true;
- }
+ } else if (sg2d != null && !sg2d.transform.equals(transform)) {
+ txChanged = true;
}
- if (sg2d != null) {
- transX = sg2d.transX;
- transY = sg2d.transY;
+ if (sg2d != null && txChanged) {
+ transform = new AffineTransform(sg2d.transform);
}
} else {
setTransform(xform);
--- a/jdk/src/share/classes/sun/java2d/pipe/DrawImage.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/java2d/pipe/DrawImage.java Wed Apr 17 21:32:11 2013 -0700
@@ -27,9 +27,7 @@
import java.awt.AlphaComposite;
import java.awt.Color;
-import java.awt.Graphics2D;
import java.awt.Image;
-import java.awt.Rectangle;
import java.awt.Transparency;
import java.awt.geom.AffineTransform;
import java.awt.geom.NoninvertibleTransformException;
@@ -38,15 +36,13 @@
import java.awt.image.BufferedImageOp;
import java.awt.image.ColorModel;
import java.awt.image.DataBuffer;
-import java.awt.image.DirectColorModel;
import java.awt.image.ImageObserver;
import java.awt.image.IndexColorModel;
import java.awt.image.Raster;
import java.awt.image.VolatileImage;
-import java.awt.image.WritableRaster;
-import java.awt.image.ImagingOpException;
import sun.awt.SunHints;
import sun.awt.image.ImageRepresentation;
+import sun.awt.image.SurfaceManager;
import sun.awt.image.ToolkitImage;
import sun.java2d.InvalidPipeException;
import sun.java2d.SunGraphics2D;
@@ -323,15 +319,17 @@
BufferedImage makeBufferedImage(Image img, Color bgColor, int type,
int sx1, int sy1, int sx2, int sy2)
{
- BufferedImage bimg = new BufferedImage(sx2-sx1, sy2-sy1, type);
- Graphics2D g2d = bimg.createGraphics();
+ final int width = sx2 - sx1;
+ final int height = sy2 - sy1;
+ final BufferedImage bimg = new BufferedImage(width, height, type);
+ final SunGraphics2D g2d = (SunGraphics2D) bimg.createGraphics();
g2d.setComposite(AlphaComposite.Src);
if (bgColor != null) {
g2d.setColor(bgColor);
- g2d.fillRect(0, 0, sx2-sx1, sy2-sy1);
+ g2d.fillRect(0, 0, width, height);
g2d.setComposite(AlphaComposite.SrcOver);
}
- g2d.drawImage(img, -sx1, -sy1, null);
+ g2d.copyImage(img, 0, 0, sx1, sy1, width, height, null, null);
g2d.dispose();
return bimg;
}
@@ -737,8 +735,9 @@
atfm.scale(m00, m11);
atfm.translate(srcX-sx1, srcY-sy1);
- int imgW = img.getWidth(null);
- int imgH = img.getHeight(null);
+ final int scale = SurfaceManager.getImageScale(img);
+ final int imgW = img.getWidth(null) * scale;
+ final int imgH = img.getHeight(null) * scale;
srcW += srcX;
srcH += srcY;
// Make sure we are not out of bounds
--- a/jdk/src/share/classes/sun/java2d/pipe/Region.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/java2d/pipe/Region.java Wed Apr 17 21:32:11 2013 -0700
@@ -131,6 +131,28 @@
return newv;
}
+ /**
+ * Multiply the scale factor {@code sv} and the value {@code v} with
+ * appropriate clipping to the bounds of Integer resolution. If the answer
+ * would be greater than {@code Integer.MAX_VALUE} then {@code
+ * Integer.MAX_VALUE} is returned. If the answer would be less than {@code
+ * Integer.MIN_VALUE} then {@code Integer.MIN_VALUE} is returned. Otherwise
+ * the multiplication is returned.
+ */
+ public static int clipScale(final int v, final double sv) {
+ if (sv == 1.0) {
+ return v;
+ }
+ final double newv = v * sv;
+ if (newv < Integer.MIN_VALUE) {
+ return Integer.MIN_VALUE;
+ }
+ if (newv > Integer.MAX_VALUE) {
+ return Integer.MAX_VALUE;
+ }
+ return (int) Math.round(newv);
+ }
+
protected Region(int lox, int loy, int hix, int hiy) {
this.lox = lox;
this.loy = loy;
@@ -349,6 +371,79 @@
}
/**
+ * Returns a Region object that represents the same list of rectangles as
+ * the current Region object, scaled by the specified sx, sy factors.
+ */
+ public Region getScaledRegion(final double sx, final double sy) {
+ if (sx == 0 || sy == 0 || this == EMPTY_REGION) {
+ return EMPTY_REGION;
+ }
+ if ((sx == 1.0 && sy == 1.0) || (this == WHOLE_REGION)) {
+ return this;
+ }
+
+ int tlox = clipScale(lox, sx);
+ int tloy = clipScale(loy, sy);
+ int thix = clipScale(hix, sx);
+ int thiy = clipScale(hiy, sy);
+ Region ret = new Region(tlox, tloy, thix, thiy);
+ int bands[] = this.bands;
+ if (bands != null) {
+ int end = endIndex;
+ int newbands[] = new int[end];
+ int i = 0; // index for source bands
+ int j = 0; // index for translated newbands
+ int ncol;
+ while (i < end) {
+ int y1, y2;
+ newbands[j++] = y1 = clipScale(bands[i++], sy);
+ newbands[j++] = y2 = clipScale(bands[i++], sy);
+ newbands[j++] = ncol = bands[i++];
+ int savej = j;
+ if (y1 < y2) {
+ while (--ncol >= 0) {
+ int x1 = clipScale(bands[i++], sx);
+ int x2 = clipScale(bands[i++], sx);
+ if (x1 < x2) {
+ newbands[j++] = x1;
+ newbands[j++] = x2;
+ }
+ }
+ } else {
+ i += ncol * 2;
+ }
+ // Did we get any non-empty bands in this row?
+ if (j > savej) {
+ newbands[savej-1] = (j - savej) / 2;
+ } else {
+ j = savej - 3;
+ }
+ }
+ if (j <= 5) {
+ if (j < 5) {
+ // No rows or bands were generated...
+ ret.lox = ret.loy = ret.hix = ret.hiy = 0;
+ } else {
+ // Only generated one single rect in the end...
+ ret.loy = newbands[0];
+ ret.hiy = newbands[1];
+ ret.lox = newbands[3];
+ ret.hix = newbands[4];
+ }
+ // ret.endIndex and ret.bands were never initialized...
+ // ret.endIndex = 0;
+ // ret.newbands = null;
+ } else {
+ // Generated multiple bands and/or multiple rows...
+ ret.endIndex = j;
+ ret.bands = newbands;
+ }
+ }
+ return ret;
+ }
+
+
+ /**
* Returns a Region object that represents the same list of
* rectangles as the current Region object, translated by
* the specified dx, dy translation factors.
--- a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Wed Apr 17 21:32:11 2013 -0700
@@ -2065,7 +2065,9 @@
ret = new NegotiateAuthentication(new HttpCallerInfo(authhdr.getHttpCallerInfo(), "Kerberos"));
break;
case UNKNOWN:
- logger.finest("Unknown/Unsupported authentication scheme: " + scheme);
+ if (logger.isLoggable(PlatformLogger.FINEST)) {
+ logger.finest("Unknown/Unsupported authentication scheme: " + scheme);
+ }
/*fall through*/
default:
throw new AssertionError("should not reach here");
@@ -2222,7 +2224,9 @@
}
break;
case UNKNOWN:
- logger.finest("Unknown/Unsupported authentication scheme: " + scheme);
+ if (logger.isLoggable(PlatformLogger.FINEST)) {
+ logger.finest("Unknown/Unsupported authentication scheme: " + scheme);
+ }
/*fall through*/
default:
throw new AssertionError("should not reach here");
--- a/jdk/src/share/classes/sun/net/www/protocol/http/NTLMAuthenticationProxy.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/NTLMAuthenticationProxy.java Wed Apr 17 21:32:11 2013 -0700
@@ -142,6 +142,8 @@
static void finest(Exception e) {
PlatformLogger logger = HttpURLConnection.getHttpLogger();
- logger.finest("NTLMAuthenticationProxy: " + e);
+ if (logger.isLoggable(PlatformLogger.FINEST)) {
+ logger.finest("NTLMAuthenticationProxy: " + e);
+ }
}
}
--- a/jdk/src/share/classes/sun/net/www/protocol/http/Negotiator.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/share/classes/sun/net/www/protocol/http/Negotiator.java Wed Apr 17 21:32:11 2013 -0700
@@ -76,7 +76,9 @@
private static void finest(Exception e) {
PlatformLogger logger = HttpURLConnection.getHttpLogger();
- logger.finest("NegotiateAuthentication: " + e);
+ if (logger.isLoggable(PlatformLogger.FINEST)) {
+ logger.finest("NegotiateAuthentication: " + e);
+ }
}
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java Wed Apr 17 21:32:11 2013 -0700
@@ -55,7 +55,9 @@
}
void initXSettings() {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Initializing XAWT XSettings");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Initializing XAWT XSettings");
+ }
settings = new XMSelection("_XSETTINGS");
settings.addSelectionListener(this);
initPerScreenXSettings();
@@ -66,21 +68,29 @@
}
public void ownerDeath(int screen, XMSelection sel, long deadOwner) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Owner " + deadOwner + " died for selection " + sel + " screen "+ screen);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Owner " + deadOwner + " died for selection " + sel + " screen "+ screen);
+ }
}
public void ownerChanged(int screen, XMSelection sel, long newOwner, long data, long timestamp) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("New Owner "+ newOwner + " for selection = " + sel + " screen " +screen );
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("New Owner "+ newOwner + " for selection = " + sel + " screen " +screen );
+ }
}
public void selectionChanged(int screen, XMSelection sel, long owner , XPropertyEvent event) {
- log.fine("Selection changed on sel " + sel + " screen = " + screen + " owner = " + owner + " event = " + event);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Selection changed on sel " + sel + " screen = " + screen + " owner = " + owner + " event = " + event);
+ }
updateXSettings(screen,owner);
}
void initPerScreenXSettings() {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Updating Per XSettings changes");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Updating Per XSettings changes");
+ }
/*
* As toolkit cannot yet cope with per-screen desktop properties,
@@ -114,7 +124,9 @@
}
private Map getUpdatedSettings(final long owner) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("owner =" + owner);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("owner =" + owner);
+ }
if (0 == owner) {
return null;
}
@@ -128,13 +140,17 @@
int status = getter.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
if (status != XConstants.Success || getter.getData() == 0) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("OH OH : getter failed status = " + status );
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("OH OH : getter failed status = " + status );
+ }
settings = null;
}
long ptr = getter.getData();
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("noItems = " + getter.getNumberOfItems());
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("noItems = " + getter.getNumberOfItems());
+ }
byte array[] = Native.toBytes(ptr,getter.getNumberOfItems());
if (array != null) {
settings = update(array);
--- a/jdk/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XBaseMenuWindow.java Wed Apr 17 21:32:11 2013 -0700
@@ -426,7 +426,7 @@
try {
synchronized(getMenuTreeLock()) {
if (showingSubmenu != submenuToShow) {
- if (log.isLoggable(PlatformLogger.FINER)) {
+ if (log.isLoggable(PlatformLogger.FINEST)) {
log.finest("Changing showing submenu");
}
if (showingSubmenu != null) {
@@ -1122,7 +1122,9 @@
* that grabs input focus
*/
void doHandleJavaKeyEvent(KeyEvent event) {
- if (log.isLoggable(PlatformLogger.FINER)) log.finer(event.toString());
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer(event.toString());
+ }
if (event.getID() != KeyEvent.KEY_PRESSED) {
return;
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XBaseWindow.java Wed Apr 17 21:32:11 2013 -0700
@@ -160,7 +160,9 @@
* with class-specific values and perform post-initialization actions.
*/
void postInit(XCreateWindowParams params) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("WM name is " + getWMName());
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("WM name is " + getWMName());
+ }
updateWMName();
// Set WM_CLIENT_LEADER property
@@ -480,7 +482,9 @@
}
public void setSizeHints(long flags, int x, int y, int width, int height) {
- if (insLog.isLoggable(PlatformLogger.FINER)) insLog.finer("Setting hints, flags " + XlibWrapper.hintsToString(flags));
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Setting hints, flags " + XlibWrapper.hintsToString(flags));
+ }
XToolkit.awtLock();
try {
XSizeHints hints = getHints();
@@ -541,8 +545,10 @@
flags |= XUtilConstants.PWinGravity;
hints.set_flags(flags);
hints.set_win_gravity((int)XConstants.NorthWestGravity);
- if (insLog.isLoggable(PlatformLogger.FINER)) insLog.finer("Setting hints, resulted flags " + XlibWrapper.hintsToString(flags) +
- ", values " + hints);
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Setting hints, resulted flags " + XlibWrapper.hintsToString(flags) +
+ ", values " + hints);
+ }
XlibWrapper.XSetWMNormalHints(XToolkit.getDisplay(), getWindow(), hints.pData);
} finally {
XToolkit.awtUnlock();
@@ -593,7 +599,9 @@
public void xRequestFocus(long time) {
XToolkit.awtLock();
try {
- if (focusLog.isLoggable(PlatformLogger.FINER)) focusLog.finer("XSetInputFocus on " + Long.toHexString(getWindow()) + " with time " + time);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("XSetInputFocus on " + Long.toHexString(getWindow()) + " with time " + time);
+ }
XlibWrapper.XSetInputFocus2(XToolkit.getDisplay(), getWindow(), time);
} finally {
XToolkit.awtUnlock();
@@ -602,7 +610,9 @@
public void xRequestFocus() {
XToolkit.awtLock();
try {
- if (focusLog.isLoggable(PlatformLogger.FINER)) focusLog.finer("XSetInputFocus on " + Long.toHexString(getWindow()));
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("XSetInputFocus on " + Long.toHexString(getWindow()));
+ }
XlibWrapper.XSetInputFocus(XToolkit.getDisplay(), getWindow());
} finally {
XToolkit.awtUnlock();
@@ -619,7 +629,9 @@
}
public void xSetVisible(boolean visible) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Setting visible on " + this + " to " + visible);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Setting visible on " + this + " to " + visible);
+ }
XToolkit.awtLock();
try {
this.visible = visible;
@@ -704,7 +716,9 @@
insLog.warning("Attempt to resize uncreated window");
throw new IllegalStateException("Attempt to resize uncreated window");
}
- insLog.fine("Setting bounds on " + this + " to (" + x + ", " + y + "), " + width + "x" + height);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Setting bounds on " + this + " to (" + x + ", " + y + "), " + width + "x" + height);
+ }
width = Math.max(MIN_SIZE, width);
height = Math.max(MIN_SIZE, height);
XToolkit.awtLock();
@@ -820,7 +834,9 @@
* The active grab overrides activated automatic grab.
*/
public boolean grabInput() {
- grabLog.fine("Grab input on {0}", this);
+ if (grabLog.isLoggable(PlatformLogger.FINE)) {
+ grabLog.fine("Grab input on {0}", this);
+ }
XToolkit.awtLock();
try {
@@ -883,7 +899,9 @@
XToolkit.awtLock();
try {
XBaseWindow grabWindow = XAwtState.getGrabWindow();
- grabLog.fine("UnGrab input on {0}", grabWindow);
+ if (grabLog.isLoggable(PlatformLogger.FINE)) {
+ grabLog.fine("UnGrab input on {0}", grabWindow);
+ }
if (grabWindow != null) {
grabWindow.ungrabInputImpl();
if (!XToolkit.getSunAwtDisableGrab()) {
@@ -1021,7 +1039,9 @@
}
public void handleConfigureNotifyEvent(XEvent xev) {
XConfigureEvent xe = xev.get_xconfigure();
- insLog.finer("Configure, {0}", xe);
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Configure, {0}", xe);
+ }
x = xe.get_x();
y = xe.get_y();
width = xe.get_width();
@@ -1072,7 +1092,9 @@
}
public void dispatchEvent(XEvent xev) {
- if (eventLog.isLoggable(PlatformLogger.FINEST)) eventLog.finest(xev.toString());
+ if (eventLog.isLoggable(PlatformLogger.FINEST)) {
+ eventLog.finest(xev.toString());
+ }
int type = xev.get_type();
if (isDisposed()) {
--- a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -214,7 +214,9 @@
* Called when component receives focus
*/
public void focusGained(FocusEvent e) {
- focusLog.fine("{0}", e);
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("{0}", e);
+ }
bHasFocus = true;
}
@@ -222,7 +224,9 @@
* Called when component loses focus
*/
public void focusLost(FocusEvent e) {
- focusLog.fine("{0}", e);
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("{0}", e);
+ }
bHasFocus = false;
}
@@ -294,8 +298,10 @@
case XKeyboardFocusManagerPeer.SNFH_SUCCESS_PROCEED:
// Currently we just generate focus events like we deal with lightweight instead of calling
// XSetInputFocus on native window
- if (focusLog.isLoggable(PlatformLogger.FINER)) focusLog.finer("Proceeding with request to " +
- lightweightChild + " in " + target);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Proceeding with request to " +
+ lightweightChild + " in " + target);
+ }
/**
* The problems with requests in non-focused window arise because shouldNativelyFocusHeavyweight
* checks that native window is focused while appropriate WINDOW_GAINED_FOCUS has not yet
@@ -319,7 +325,9 @@
*/
boolean res = wpeer.requestWindowFocus(null);
- if (focusLog.isLoggable(PlatformLogger.FINER)) focusLog.finer("Requested window focus: " + res);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Requested window focus: " + res);
+ }
// If parent window can be made focused and has been made focused(synchronously)
// then we can proceed with children, otherwise we retreat.
if (!(res && parentWindow.isFocused())) {
@@ -339,13 +347,17 @@
}
private boolean rejectFocusRequestHelper(String logMsg) {
- if (focusLog.isLoggable(PlatformLogger.FINER)) focusLog.finer(logMsg);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer(logMsg);
+ }
XKeyboardFocusManagerPeer.removeLastFocusRequest(target);
return false;
}
void handleJavaFocusEvent(AWTEvent e) {
- if (focusLog.isLoggable(PlatformLogger.FINER)) focusLog.finer(e.toString());
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer(e.toString());
+ }
if (e.getID() == FocusEvent.FOCUS_GAINED) {
focusGained((FocusEvent)e);
} else {
@@ -628,7 +640,9 @@
}
public void setBackground(Color c) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Set background to " + c);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Set background to " + c);
+ }
synchronized (getStateLock()) {
background = c;
}
@@ -637,7 +651,9 @@
}
public void setForeground(Color c) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Set foreground to " + c);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Set foreground to " + c);
+ }
synchronized (getStateLock()) {
foreground = c;
}
@@ -656,7 +672,9 @@
* @since JDK1.0
*/
public FontMetrics getFontMetrics(Font font) {
- if (fontLog.isLoggable(PlatformLogger.FINE)) fontLog.fine("Getting font metrics for " + font);
+ if (fontLog.isLoggable(PlatformLogger.FINE)) {
+ fontLog.fine("Getting font metrics for " + font);
+ }
return sun.font.FontDesignMetrics.getMetrics(font);
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XContentWindow.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XContentWindow.java Wed Apr 17 21:32:11 2013 -0700
@@ -115,8 +115,10 @@
if (in != null) {
newBounds.setLocation(-in.left, -in.top);
}
- if (insLog.isLoggable(PlatformLogger.FINE)) insLog.fine("Setting content bounds {0}, old bounds {1}",
- newBounds, getBounds());
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Setting content bounds {0}, old bounds {1}",
+ newBounds, getBounds());
+ }
// Fix for 5023533:
// Change in the size of the content window means, well, change of the size
// Change in the location of the content window means change in insets
--- a/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -78,7 +78,9 @@
Rectangle bounds = (Rectangle)params.get(BOUNDS);
dimensions = new WindowDimensions(bounds, getRealInsets(), false);
params.put(BOUNDS, dimensions.getClientRect());
- insLog.fine("Initial dimensions {0}", dimensions);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Initial dimensions {0}", dimensions);
+ }
// Deny default processing of these events on the shell - proxy will take care of
// them instead
@@ -179,7 +181,9 @@
}
public void setTitle(String title) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Title is " + title);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Title is " + title);
+ }
winAttr.title = title;
updateWMName();
}
@@ -227,7 +231,9 @@
// If we somehow received focus events forward it instead to proxy
// FIXME: Shouldn't we instead check for inferrior?
- focusLog.finer("Received focus event on shell: " + xfe);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Received focus event on shell: " + xfe);
+ }
// focusProxy.xRequestFocus();
}
@@ -269,7 +275,9 @@
wm_set_insets = XWM.getInsetsFromProp(getWindow(), changedAtom);
}
- insLog.finer("FRAME_EXTENTS: {0}", wm_set_insets);
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("FRAME_EXTENTS: {0}", wm_set_insets);
+ }
if (wm_set_insets != null) {
wm_set_insets = copy(wm_set_insets);
@@ -296,7 +304,9 @@
public void handleReparentNotifyEvent(XEvent xev) {
XReparentEvent xe = xev.get_xreparent();
- if (insLog.isLoggable(PlatformLogger.FINE)) insLog.fine(xe.toString());
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine(xe.toString());
+ }
reparent_serial = xe.get_serial();
XToolkit.awtLock();
try {
@@ -335,7 +345,9 @@
// Check if we have insets provided by the WM
Insets correctWM = getWMSetInsets(null);
if (correctWM != null) {
- insLog.finer("wm-provided insets {0}", correctWM);
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("wm-provided insets {0}", correctWM);
+ }
// If these insets are equal to our current insets - no actions are necessary
Insets dimInsets = dimensions.getInsets();
if (correctWM.equals(dimInsets)) {
@@ -348,10 +360,12 @@
} else {
correctWM = XWM.getWM().getInsets(this, xe.get_window(), xe.get_parent());
- if (correctWM != null) {
- insLog.finer("correctWM {0}", correctWM);
- } else {
- insLog.finer("correctWM insets are not available, waiting for configureNotify");
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ if (correctWM != null) {
+ insLog.finer("correctWM {0}", correctWM);
+ } else {
+ insLog.finer("correctWM insets are not available, waiting for configureNotify");
+ }
}
}
@@ -372,7 +386,9 @@
* initial insets were wrong (most likely they were).
*/
Insets correction = difference(correctWM, currentInsets);
- insLog.finest("Corrention {0}", correction);
+ if (insLog.isLoggable(PlatformLogger.FINEST)) {
+ insLog.finest("Corrention {0}", correction);
+ }
if (!isNull(correction)) {
currentInsets = copy(correctWM);
applyGuessedInsets();
@@ -382,7 +398,9 @@
//update minimum size hints
updateMinSizeHints();
}
- if (insLog.isLoggable(PlatformLogger.FINER)) insLog.finer("Dimensions before reparent: " + dimensions);
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Dimensions before reparent: " + dimensions);
+ }
dimensions.setInsets(getRealInsets());
insets_corrected = true;
@@ -506,8 +524,10 @@
XToolkit.awtLock();
try {
if (!isReparented() || !isVisible()) {
- insLog.fine("- not reparented({0}) or not visible({1}), default reshape",
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("- not reparented({0}) or not visible({1}), default reshape",
Boolean.valueOf(isReparented()), Boolean.valueOf(visible));
+ }
// Fix for 6323293.
// This actually is needed to preserve compatibility with previous releases -
@@ -612,9 +632,10 @@
dims.setSize(width, height);
break;
}
- if (insLog.isLoggable(PlatformLogger.FINE))
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
insLog.fine("For the operation {0} new dimensions are {1}",
operationToString(operation), dims);
+ }
reshape(dims, operation, userReshape);
}
@@ -644,7 +665,9 @@
public void handleConfigureNotifyEvent(XEvent xev) {
assert (SunToolkit.isAWTLockHeldByCurrentThread());
XConfigureEvent xe = xev.get_xconfigure();
- insLog.fine("Configure notify {0}", xe);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Configure notify {0}", xe);
+ }
// XXX: should really only consider synthetic events, but
if (isReparented()) {
@@ -735,7 +758,9 @@
case XWM.SAWFISH_WM:
{
Point xlocation = queryXLocation();
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("New X location: {0}", xlocation);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("New X location: {0}", xlocation);
+ }
if (xlocation != null) {
newLocation = xlocation;
}
@@ -752,8 +777,10 @@
copy(currentInsets),
true);
- insLog.finer("Insets are {0}, new dimensions {1}",
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Insets are {0}, new dimensions {1}",
currentInsets, newDimensions);
+ }
checkIfOnNewScreen(newDimensions.getBounds());
@@ -788,8 +815,9 @@
}
public void setShellBounds(Rectangle rec) {
- if (insLog.isLoggable(PlatformLogger.FINE)) insLog.fine("Setting shell bounds on " +
- this + " to " + rec);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Setting shell bounds on " + this + " to " + rec);
+ }
XToolkit.awtLock();
try {
updateSizeHints(rec.x, rec.y, rec.width, rec.height);
@@ -801,8 +829,9 @@
}
}
public void setShellSize(Rectangle rec) {
- if (insLog.isLoggable(PlatformLogger.FINE)) insLog.fine("Setting shell size on " +
- this + " to " + rec);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Setting shell size on " + this + " to " + rec);
+ }
XToolkit.awtLock();
try {
updateSizeHints(rec.x, rec.y, rec.width, rec.height);
@@ -813,8 +842,9 @@
}
}
public void setShellPosition(Rectangle rec) {
- if (insLog.isLoggable(PlatformLogger.FINE)) insLog.fine("Setting shell position on " +
- this + " to " + rec);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Setting shell position on " + this + " to " + rec);
+ }
XToolkit.awtLock();
try {
updateSizeHints(rec.x, rec.y, rec.width, rec.height);
@@ -914,9 +944,10 @@
return toGlobal(0,0);
} else {
Point location = target.getLocation();
- if (insLog.isLoggable(PlatformLogger.FINE))
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
insLog.fine("getLocationOnScreen {0} not reparented: {1} ",
this, location);
+ }
return location;
}
} finally {
@@ -953,7 +984,9 @@
}
public void setVisible(boolean vis) {
- log.finer("Setting {0} to visible {1}", this, Boolean.valueOf(vis));
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Setting {0} to visible {1}", this, Boolean.valueOf(vis));
+ }
if (vis && !isVisible()) {
XWM.setShellDecor(this);
super.setVisible(vis);
@@ -1004,7 +1037,9 @@
}
private void handleWmTakeFocus(XClientMessageEvent cl) {
- focusLog.fine("WM_TAKE_FOCUS on {0}", this);
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("WM_TAKE_FOCUS on {0}", this);
+ }
requestWindowFocus(cl.get_data(1), true);
}
@@ -1017,9 +1052,13 @@
// by "proxy" - invisible mapped window. When we want to set X input focus to
// toplevel set it on proxy instead.
if (focusProxy == null) {
- if (focusLog.isLoggable(PlatformLogger.FINE)) focusLog.warning("Focus proxy is null for " + this);
+ if (focusLog.isLoggable(PlatformLogger.WARNING)) {
+ focusLog.warning("Focus proxy is null for " + this);
+ }
} else {
- if (focusLog.isLoggable(PlatformLogger.FINE)) focusLog.fine("Requesting focus to proxy: " + focusProxy);
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("Requesting focus to proxy: " + focusProxy);
+ }
if (timeProvided) {
focusProxy.xRequestFocus(time);
} else {
@@ -1111,9 +1150,11 @@
Window focusedWindow = XKeyboardFocusManagerPeer.getInstance().getCurrentFocusedWindow();
Window activeWindow = XWindowPeer.getDecoratedOwner(focusedWindow);
- focusLog.finer("Current window is: active={0}, focused={1}",
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Current window is: active={0}, focused={1}",
Boolean.valueOf(target == activeWindow),
Boolean.valueOf(target == focusedWindow));
+ }
XWindowPeer toFocus = this;
while (toFocus.nextTransientFor != null) {
@@ -1136,16 +1177,22 @@
return true;
}
Window realNativeFocusedWindow = XWindowPeer.getNativeFocusedWindow();
- focusLog.finest("Real native focused window: " + realNativeFocusedWindow +
+ if (focusLog.isLoggable(PlatformLogger.FINEST)) {
+ focusLog.finest("Real native focused window: " + realNativeFocusedWindow +
"\nKFM's focused window: " + focusedWindow);
+ }
- // See 6522725, 6613426.
- if (target == realNativeFocusedWindow) {
- focusLog.fine("The window is already natively focused.");
+ // A workaround for Metacity. See 6522725, 6613426, 7147075.
+ if (target == realNativeFocusedWindow && XWM.getWMID() == XWM.METACITY_WM) {
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("The window is already natively focused.");
+ }
return true;
}
}
- focusLog.fine("Requesting focus to " + (this == toFocus ? "this window" : toFocus));
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("Requesting focus to " + (this == toFocus ? "this window" : toFocus));
+ }
if (timeProvided) {
toFocus.requestXFocus(time);
--- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -123,7 +123,9 @@
}
void initDispatching() {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Init embedding for " + Long.toHexString(xembed.handle));
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Init embedding for " + Long.toHexString(xembed.handle));
+ }
XToolkit.awtLock();
try {
XToolkit.addEventDispatcher(xembed.handle, xembed);
@@ -140,7 +142,9 @@
}
void endDispatching() {
- xembedLog.fine("End dispatching for " + Long.toHexString(xembed.handle));
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("End dispatching for " + Long.toHexString(xembed.handle));
+ }
XToolkit.awtLock();
try {
XDropTargetRegistry.getRegistry().unregisterXEmbedClient(getWindow(), xembed.handle);
@@ -160,7 +164,9 @@
}
void childDestroyed() {
- xembedLog.fine("Child " + Long.toHexString(xembed.handle) + " has self-destroyed.");
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Child " + Long.toHexString(xembed.handle) + " has self-destroyed.");
+ }
endDispatching();
xembed.handle = 0;
}
@@ -382,7 +388,9 @@
}
void detachChild() {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Detaching child " + Long.toHexString(xembed.handle));
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Detaching child " + Long.toHexString(xembed.handle));
+ }
/**
* XEmbed specification:
* "The embedder can unmap the client and reparent the client window to the root window. If the
@@ -463,7 +471,9 @@
try {
XKeyEvent ke = new XKeyEvent(data);
ke.set_window(xembed.handle);
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Forwarding native key event: " + ke);
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Forwarding native key event: " + ke);
+ }
XToolkit.awtLock();
try {
XlibWrapper.XSendEvent(XToolkit.getDisplay(), xembed.handle, false, XConstants.NoEventMask, data);
@@ -494,7 +504,9 @@
postEvent(new InvocationEvent(target, new Runnable() {
public void run() {
GrabbedKey grab = new GrabbedKey(keysym, modifiers);
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Grabbing key: " + grab);
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Grabbing key: " + grab);
+ }
synchronized(GRAB_LOCK) {
grabbed_keys.add(grab);
}
@@ -506,7 +518,9 @@
postEvent(new InvocationEvent(target, new Runnable() {
public void run() {
GrabbedKey grab = new GrabbedKey(keysym, modifiers);
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("UnGrabbing key: " + grab);
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("UnGrabbing key: " + grab);
+ }
synchronized(GRAB_LOCK) {
grabbed_keys.remove(grab);
}
@@ -519,7 +533,9 @@
public void run() {
AWTKeyStroke stroke = xembed.getKeyStrokeForKeySym(keysym, modifiers);
if (stroke != null) {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Registering accelerator " + accel_id + " for " + stroke);
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Registering accelerator " + accel_id + " for " + stroke);
+ }
synchronized(ACCEL_LOCK) {
accelerators.put(accel_id, stroke);
accel_lookup.put(stroke, accel_id);
@@ -537,7 +553,9 @@
synchronized(ACCEL_LOCK) {
stroke = accelerators.get(accel_id);
if (stroke != null) {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Unregistering accelerator: " + accel_id);
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Unregistering accelerator: " + accel_id);
+ }
accelerators.remove(accel_id);
accel_lookup.remove(stroke); // FIXME: How about several accelerators with the same stroke?
}
@@ -583,7 +601,9 @@
boolean result = false;
- if (xembedLog.isLoggable(PlatformLogger.FINER)) xembedLog.finer("Post-processing event " + e);
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Post-processing event " + e);
+ }
// Process ACCELERATORS
AWTKeyStroke stroke = AWTKeyStroke.getAWTKeyStrokeForEvent(e);
@@ -596,7 +616,9 @@
}
}
if (exists) {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Activating accelerator " + accel_id);
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Activating accelerator " + accel_id);
+ }
xembed.sendMessage(xembed.handle, XEMBED_ACTIVATE_ACCELERATOR, accel_id, 0, 0); // FIXME: How about overloaded?
result = true;
}
@@ -608,7 +630,9 @@
exists = grabbed_keys.contains(key);
}
if (exists) {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Forwarding grabbed key " + e);
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Forwarding grabbed key " + e);
+ }
forwardKeyEvent(e);
result = true;
}
@@ -627,9 +651,13 @@
public void handleClientMessage(XEvent xev) {
super.handleClientMessage(xev);
XClientMessageEvent msg = xev.get_xclient();
- if (xembedLog.isLoggable(PlatformLogger.FINER)) xembedLog.finer("Client message to embedder: " + msg);
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Client message to embedder: " + msg);
+ }
if (msg.get_message_type() == xembed.XEmbed.getAtom()) {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine(xembed.XEmbedMessageToString(msg));
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine(xembed.XEmbedMessageToString(msg));
+ }
}
if (isXEmbedActive()) {
switch ((int)msg.get_data(1)) {
@@ -730,8 +758,9 @@
boolean new_mapped = (flags & XEMBED_MAPPED) != 0;
boolean currently_mapped = XlibUtil.getWindowMapState(handle) != XConstants.IsUnmapped;
if (new_mapped != currently_mapped) {
- if (xembedLog.isLoggable(PlatformLogger.FINER))
- xembedLog.fine("Mapping state of the client has changed, old state: " + currently_mapped + ", new state: " + new_mapped);
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Mapping state of the client has changed, old state: " + currently_mapped + ", new state: " + new_mapped);
+ }
if (new_mapped) {
XToolkit.awtLock();
try {
@@ -748,7 +777,9 @@
}
}
} else {
- xembedLog.finer("Mapping state didn't change, mapped: " + currently_mapped);
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Mapping state didn't change, mapped: " + currently_mapped);
+ }
}
return true;
} finally {
@@ -759,7 +790,9 @@
public void handlePropertyNotify(XEvent xev) {
if (isXEmbedActive()) {
XPropertyEvent ev = xev.get_xproperty();
- if (xembedLog.isLoggable(PlatformLogger.FINER)) xembedLog.finer("Property change on client: " + ev);
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Property change on client: " + ev);
+ }
if (ev.get_atom() == XAtom.XA_WM_NORMAL_HINTS) {
childResized();
} else if (ev.get_atom() == XEmbedInfo.getAtom()) {
@@ -780,7 +813,9 @@
void handleConfigureNotify(XEvent xev) {
if (isXEmbedActive()) {
XConfigureEvent ev = xev.get_xconfigure();
- if (xembedLog.isLoggable(PlatformLogger.FINER)) xembedLog.finer("Bounds change on client: " + ev);
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Bounds change on client: " + ev);
+ }
if (xev.get_xany().get_window() == handle) {
childResized();
}
@@ -831,7 +866,9 @@
// We recognize only these masks
modifiers = ke.get_state() & (XConstants.ShiftMask | XConstants.ControlMask | XConstants.LockMask);
- if (xembedLog.isLoggable(PlatformLogger.FINEST)) xembedLog.finest("Mapped " + e + " to " + this);
+ if (xembedLog.isLoggable(PlatformLogger.FINEST)) {
+ xembedLog.finest("Mapped " + e + " to " + this);
+ }
} finally {
XlibWrapper.unsafe.freeMemory(data);
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedClientHelper.java Wed Apr 17 21:32:11 2013 -0700
@@ -95,9 +95,13 @@
void handleClientMessage(XEvent xev) {
XClientMessageEvent msg = xev.get_xclient();
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine(msg.toString());
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine(msg.toString());
+ }
if (msg.get_message_type() == XEmbed.getAtom()) {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Embedded message: " + msgidToString((int)msg.get_data(1)));
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Embedded message: " + msgidToString((int)msg.get_data(1)));
+ }
switch ((int)msg.get_data(1)) {
case XEMBED_EMBEDDED_NOTIFY: // Notification about embedding protocol start
active = true;
--- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedHelper.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedHelper.java Wed Apr 17 21:32:11 2013 -0700
@@ -82,11 +82,15 @@
XEmbedHelper() {
if (XEmbed == null) {
XEmbed = XAtom.get("_XEMBED");
- if (xembedLog.isLoggable(PlatformLogger.FINER)) xembedLog.finer("Created atom " + XEmbed.toString());
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Created atom " + XEmbed.toString());
+ }
}
if (XEmbedInfo == null) {
XEmbedInfo = XAtom.get("_XEMBED_INFO");
- if (xembedLog.isLoggable(PlatformLogger.FINER)) xembedLog.finer("Created atom " + XEmbedInfo.toString());
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Created atom " + XEmbedInfo.toString());
+ }
}
}
@@ -106,7 +110,9 @@
msg.set_data(4, data2);
XToolkit.awtLock();
try {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Sending " + XEmbedMessageToString(msg));
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Sending " + XEmbedMessageToString(msg));
+ }
XlibWrapper.XSendEvent(XToolkit.getDisplay(), window, false, XConstants.NoEventMask, msg.pData);
}
finally {
--- a/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XEmbedServerTester.java Wed Apr 17 21:32:11 2013 -0700
@@ -81,7 +81,9 @@
throw new RuntimeException("Can't create robot");
}
initAccel();
- xembedLog.finer("XEmbed client(tester), embedder window: " + Long.toHexString(parent));
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("XEmbed client(tester), embedder window: " + Long.toHexString(parent));
+ }
}
public static XEmbedServerTester getTester(Rectangle serverBounds[], long parent) {
@@ -89,12 +91,14 @@
}
private void dumpReceivedEvents() {
- xembedLog.finer("Events received so far:");
- int pos = 0;
- for (Integer event : events) {
- xembedLog.finer((pos++) + ":" + XEmbedHelper.msgidToString(event));
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Events received so far:");
+ int pos = 0;
+ for (Integer event : events) {
+ xembedLog.finer((pos++) + ":" + XEmbedHelper.msgidToString(event));
+ }
+ xembedLog.finer("End of event dump");
}
- xembedLog.finer("End of event dump");
}
public void test1_1() {
@@ -391,7 +395,9 @@
SubstructureNotifyMask | KeyPressMask)});
window = new XBaseWindow(params);
- xembedLog.finer("Created tester window: " + window);
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Created tester window: " + window);
+ }
XToolkit.addEventDispatcher(window.getWindow(), this);
updateEmbedInfo();
@@ -529,18 +535,24 @@
synchronized(EVENT_LOCK) {
// Check for already received events after the request
if (checkEventList(position, event) != -1) {
- xembedLog.finer("The event " + XEmbedHelper.msgidToString(event) + " has already been received");
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("The event " + XEmbedHelper.msgidToString(event) + " has already been received");
+ }
return;
}
if (eventReceived == event) {
// Already received
- xembedLog.finer("Already received " + XEmbedHelper.msgidToString(event));
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Already received " + XEmbedHelper.msgidToString(event));
+ }
return;
}
eventReceived = -1;
eventWaited = event;
- xembedLog.finer("Waiting for " + XEmbedHelper.msgidToString(event) + " starting from " + position);
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Waiting for " + XEmbedHelper.msgidToString(event) + " starting from " + position);
+ }
try {
EVENT_LOCK.wait(3000);
} catch (InterruptedException ie) {
@@ -551,7 +563,9 @@
dumpReceivedEvents();
throw new RuntimeException("Didn't receive event " + XEmbedHelper.msgidToString(event) + " but recevied " + XEmbedHelper.msgidToString(eventReceived));
} else {
- xembedLog.finer("Successfully recevied " + XEmbedHelper.msgidToString(event));
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Successfully recevied " + XEmbedHelper.msgidToString(event));
+ }
}
}
}
@@ -634,7 +648,9 @@
if (ev.get_type() == ClientMessage) {
XClientMessageEvent msg = ev.get_xclient();
if (msg.get_message_type() == xembed.XEmbed.getAtom()) {
- if (xembedLog.isLoggable(PlatformLogger.FINE)) xembedLog.fine("Embedded message: " + XEmbedHelper.msgidToString((int)msg.get_data(1)));
+ if (xembedLog.isLoggable(PlatformLogger.FINE)) {
+ xembedLog.fine("Embedded message: " + XEmbedHelper.msgidToString((int)msg.get_data(1)));
+ }
switch ((int)msg.get_data(1)) {
case XEmbedHelper.XEMBED_EMBEDDED_NOTIFY: // Notification about embedding protocol start
xembedActive = true;
@@ -659,10 +675,14 @@
synchronized(EVENT_LOCK) {
events.add((int)msg.get_data(1));
- xembedLog.finer("Tester is waiting for " + XEmbedHelper.msgidToString(eventWaited));
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Tester is waiting for " + XEmbedHelper.msgidToString(eventWaited));
+ }
if ((int)msg.get_data(1) == eventWaited) {
eventReceived = (int)msg.get_data(1);
- xembedLog.finer("Notifying waiting object for event " + System.identityHashCode(EVENT_LOCK));
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Notifying waiting object for event " + System.identityHashCode(EVENT_LOCK));
+ }
EVENT_LOCK.notifyAll();
}
}
@@ -672,10 +692,14 @@
int eventID = (int)ev.get_type() | SYSTEM_EVENT_MASK;
events.add(eventID);
- xembedLog.finer("Tester is waiting for " + XEmbedHelper.msgidToString(eventWaited) + ", but we received " + ev + "(" + XEmbedHelper.msgidToString(eventID) + ")");
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Tester is waiting for " + XEmbedHelper.msgidToString(eventWaited) + ", but we received " + ev + "(" + XEmbedHelper.msgidToString(eventID) + ")");
+ }
if (eventID == eventWaited) {
eventReceived = eventID;
- xembedLog.finer("Notifying waiting object" + System.identityHashCode(EVENT_LOCK));
+ if (xembedLog.isLoggable(PlatformLogger.FINER)) {
+ xembedLog.finer("Notifying waiting object" + System.identityHashCode(EVENT_LOCK));
+ }
EVENT_LOCK.notifyAll();
}
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XFileDialogPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -720,7 +720,9 @@
}
File fe = new File(dir).getAbsoluteFile();
- log.fine("Current directory : " + fe);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Current directory : " + fe);
+ }
if (!fe.isDirectory()) {
dir = "./";
--- a/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XFramePeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -209,7 +209,9 @@
}
public void setMaximizedBounds(Rectangle b) {
- if (insLog.isLoggable(PlatformLogger.FINE)) insLog.fine("Setting maximized bounds to " + b);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Setting maximized bounds to " + b);
+ }
if (b == null) return;
maxBounds = new Rectangle(b);
XToolkit.awtLock();
@@ -226,7 +228,9 @@
} else {
hints.set_max_height((int)XlibWrapper.DisplayHeight(XToolkit.getDisplay(), XlibWrapper.DefaultScreen(XToolkit.getDisplay())));
}
- if (insLog.isLoggable(PlatformLogger.FINER)) insLog.finer("Setting hints, flags " + XlibWrapper.hintsToString(hints.get_flags()));
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Setting hints, flags " + XlibWrapper.hintsToString(hints.get_flags()));
+ }
XlibWrapper.XSetWMNormalHints(XToolkit.getDisplay(), window, hints.pData);
} finally {
XToolkit.awtUnlock();
@@ -254,14 +258,20 @@
int changed = state ^ newState;
int changeIconic = changed & Frame.ICONIFIED;
boolean iconic = (newState & Frame.ICONIFIED) != 0;
- stateLog.finer("Changing state, old state {0}, new state {1}(iconic {2})",
+ if (stateLog.isLoggable(PlatformLogger.FINER)) {
+ stateLog.finer("Changing state, old state {0}, new state {1}(iconic {2})",
Integer.valueOf(state), Integer.valueOf(newState), Boolean.valueOf(iconic));
+ }
if (changeIconic != 0 && iconic) {
- if (stateLog.isLoggable(PlatformLogger.FINER)) stateLog.finer("Iconifying shell " + getShell() + ", this " + this + ", screen " + getScreenNumber());
+ if (stateLog.isLoggable(PlatformLogger.FINER)) {
+ stateLog.finer("Iconifying shell " + getShell() + ", this " + this + ", screen " + getScreenNumber());
+ }
XToolkit.awtLock();
try {
int res = XlibWrapper.XIconifyWindow(XToolkit.getDisplay(), getShell(), getScreenNumber());
- if (stateLog.isLoggable(PlatformLogger.FINER)) stateLog.finer("XIconifyWindow returned " + res);
+ if (stateLog.isLoggable(PlatformLogger.FINER)) {
+ stateLog.finer("XIconifyWindow returned " + res);
+ }
}
finally {
XToolkit.awtUnlock();
@@ -271,7 +281,9 @@
setExtendedState(newState);
}
if (changeIconic != 0 && !iconic) {
- if (stateLog.isLoggable(PlatformLogger.FINER)) stateLog.finer("DeIconifying " + this);
+ if (stateLog.isLoggable(PlatformLogger.FINER)) {
+ stateLog.finer("DeIconifying " + this);
+ }
xSetVisible(true);
}
}
@@ -284,7 +296,9 @@
super.handlePropertyNotify(xev);
XPropertyEvent ev = xev.get_xproperty();
- log.finer("Property change {0}", ev);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Property change {0}", ev);
+ }
/*
* Let's see if this is a window state protocol message, and
* if it is - decode a new state in terms of java constants.
@@ -297,7 +311,9 @@
final int newState = XWM.getWM().getState(this);
int changed = state ^ newState;
if (changed == 0) {
- stateLog.finer("State is the same: " + state);
+ if (stateLog.isLoggable(PlatformLogger.FINER)) {
+ stateLog.finer("State is the same: " + state);
+ }
return;
}
@@ -349,7 +365,9 @@
XWMHints hints = getWMHints();
hints.set_flags((int)XUtilConstants.StateHint | hints.get_flags());
hints.set_initial_state(wm_state);
- if (stateLog.isLoggable(PlatformLogger.FINE)) stateLog.fine("Setting initial WM state on " + this + " to " + wm_state);
+ if (stateLog.isLoggable(PlatformLogger.FINE)) {
+ stateLog.fine("Setting initial WM state on " + this + " to " + wm_state);
+ }
XlibWrapper.XSetWMHints(XToolkit.getDisplay(), getWindow(), hints.pData);
}
finally {
--- a/jdk/src/solaris/classes/sun/awt/X11/XIconWindow.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XIconWindow.java Wed Apr 17 21:32:11 2013 -0700
@@ -61,7 +61,9 @@
final long screen = adata.get_awt_visInfo().get_screen();
final long display = XToolkit.getDisplay();
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest(adata.toString());
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest(adata.toString());
+ }
long status =
XlibWrapper.XGetIconSizes(display, XToolkit.getDefaultRootWindow(),
@@ -71,11 +73,15 @@
}
int count = Native.getInt(XlibWrapper.iarg1);
long sizes_ptr = Native.getLong(XlibWrapper.larg1); // XIconSize*
- log.finest("count = {1}, sizes_ptr = {0}", Long.valueOf(sizes_ptr), Integer.valueOf(count));
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("count = {1}, sizes_ptr = {0}", Long.valueOf(sizes_ptr), Integer.valueOf(count));
+ }
XIconSize[] res = new XIconSize[count];
for (int i = 0; i < count; i++, sizes_ptr += XIconSize.getSize()) {
res[i] = new XIconSize(sizes_ptr);
- log.finest("sizes_ptr[{1}] = {0}", res[i], Integer.valueOf(i));
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("sizes_ptr[{1}] = {0}", res[i], Integer.valueOf(i));
+ }
}
return res;
} finally {
@@ -92,7 +98,9 @@
}
XIconSize[] sizeList = getIconSizes();
- log.finest("Icon sizes: {0}", (Object[]) sizeList);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Icon sizes: {0}", (Object[]) sizeList);
+ }
if (sizeList == null) {
// No icon sizes so we simply fall back to 16x16
return new Dimension(16, 16);
@@ -418,7 +426,9 @@
}
}
if (min != null) {
- log.finer("Icon: {0}x{1}", min.getWidth(null), min.getHeight(null));
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Icon: {0}x{1}", min.getWidth(null), min.getHeight(null));
+ }
setIconImage(min);
}
}
@@ -444,7 +454,9 @@
}
Dimension iconSize = getIconSize(width, height);
if (iconSize != null) {
- log.finest("Icon size: {0}", iconSize);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Icon size: {0}", iconSize);
+ }
iconWidth = iconSize.width;
iconHeight = iconSize.height;
} else {
--- a/jdk/src/solaris/classes/sun/awt/X11/XInputMethod.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XInputMethod.java Wed Apr 17 21:32:11 2013 -0700
@@ -102,13 +102,17 @@
protected ComponentPeer getPeer(Component client) {
XComponentPeer peer;
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Client is " + client);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Client is " + client);
+ }
peer = (XComponentPeer)XToolkit.targetToPeer(client);
while (client != null && peer == null) {
client = getParent(client);
peer = (XComponentPeer)XToolkit.targetToPeer(client);
}
- log.fine("Peer is {0}, client is {1}", peer, client);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Peer is {0}, client is {1}", peer, client);
+ }
if (peer != null)
return peer;
--- a/jdk/src/solaris/classes/sun/awt/X11/XListPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XListPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -575,10 +575,14 @@
}
void mousePressed(MouseEvent mouseEvent) {
- if (log.isLoggable(PlatformLogger.FINER)) log.finer(mouseEvent.toString() + ", hsb " + hsbVis + ", vsb " + vsbVis);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer(mouseEvent.toString() + ", hsb " + hsbVis + ", vsb " + vsbVis);
+ }
if (isEnabled() && mouseEvent.getButton() == MouseEvent.BUTTON1) {
if (inWindow(mouseEvent.getX(), mouseEvent.getY())) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Mouse press in items area");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Mouse press in items area");
+ }
active = WINDOW;
int i = y2index(mouseEvent.getY());
if (i >= 0) {
@@ -615,14 +619,18 @@
currentIndex = -1;
}
} else if (inVerticalScrollbar(mouseEvent.getX(), mouseEvent.getY())) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Mouse press in vertical scrollbar");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Mouse press in vertical scrollbar");
+ }
active = VERSCROLLBAR;
vsb.handleMouseEvent(mouseEvent.getID(),
mouseEvent.getModifiers(),
mouseEvent.getX() - (width - SCROLLBAR_WIDTH),
mouseEvent.getY());
} else if (inHorizontalScrollbar(mouseEvent.getX(), mouseEvent.getY())) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Mouse press in horizontal scrollbar");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Mouse press in horizontal scrollbar");
+ }
active = HORSCROLLBAR;
hsb.handleMouseEvent(mouseEvent.getID(),
mouseEvent.getModifiers(),
@@ -805,7 +813,9 @@
void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
- if (log.isLoggable(PlatformLogger.FINE)) log.fine(e.toString());
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine(e.toString());
+ }
switch(keyCode) {
case KeyEvent.VK_UP:
case KeyEvent.VK_KP_UP: // TODO: I assume we also want this, too
@@ -990,7 +1000,9 @@
*/
public void notifyValue(XScrollbar obj, int type, int v, boolean isAdjusting) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Notify value changed on " + obj + " to " + v);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Notify value changed on " + obj + " to " + v);
+ }
int value = obj.getValue();
if (obj == vsb) {
scrollVertical(v - value);
@@ -1073,7 +1085,9 @@
}
}
}
- if (log.isLoggable(PlatformLogger.FINER)) log.finer("Adding item '" + item + "' to " + addedIndex);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Adding item '" + item + "' to " + addedIndex);
+ }
// Update maxLength
boolean repaintItems = !isItemHidden(addedIndex);
@@ -1091,8 +1105,10 @@
| ((vsb.needsRepaint())?(PAINT_VSCROLL):0);
}
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Last visible: " + getLastVisibleItem() +
- ", hsb changed : " + (hsbWasVis ^ hsbVis) + ", items changed " + repaintItems);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Last visible: " + getLastVisibleItem() +
+ ", hsb changed : " + (hsbWasVis ^ hsbVis) + ", items changed " + repaintItems);
+ }
repaint(addedIndex, getLastVisibleItem(), options);
}
@@ -1107,10 +1123,14 @@
boolean vsbWasVisible = vsbVis;
int oldLastDisplayed = lastItemDisplayed();
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Deleting from " + s + " to " + e);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Deleting from " + s + " to " + e);
+ }
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Last displayed item: " + oldLastDisplayed + ", items in window " + itemsInWindow() +
- ", size " + items.size());
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Last displayed item: " + oldLastDisplayed + ", items in window " + itemsInWindow() +
+ ", size " + items.size());
+ }
if (items.size() == 0) {
return;
@@ -1177,7 +1197,9 @@
options |= PAINT_FOCUS;
}
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Multiple selections: " + multipleSelections);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Multiple selections: " + multipleSelections);
+ }
// update vsb.val
if (vsb.getValue() >= s) {
@@ -1430,7 +1452,9 @@
* y is the number of items to scroll
*/
void scrollVertical(int y) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Scrolling vertically by " + y);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Scrolling vertically by " + y);
+ }
int itemsInWin = itemsInWindow();
int h = getItemHeight();
int pixelsToScroll = y * h;
@@ -1470,7 +1494,9 @@
* x is the number of pixels to scroll
*/
void scrollHorizontal(int x) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Scrolling horizontally by " + y);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Scrolling horizontally by " + y);
+ }
int w = getListWidth();
w -= ((2 * SPACE) + (2 * MARGIN));
int h = height - (SCROLLBAR_AREA + (2 * MARGIN));
@@ -1706,7 +1732,9 @@
}
if (localBuffer == null) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Creating buffer " + width + "x" + height);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Creating buffer " + width + "x" + height);
+ }
// use GraphicsConfig.cCVI() instead of Component.cVI(),
// because the latter may cause a deadlock with the tree lock
localBuffer =
@@ -1743,7 +1771,9 @@
private void paint(Graphics listG, int firstItem, int lastItem, int options,
Rectangle source, Point distance) {
- if (log.isLoggable(PlatformLogger.FINER)) log.finer("Repaint from " + firstItem + " to " + lastItem + " options " + options);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Repaint from " + firstItem + " to " + lastItem + " options " + options);
+ }
if (firstItem > lastItem) {
int t = lastItem;
lastItem = firstItem;
@@ -1832,7 +1862,9 @@
}
private void paintItems(Graphics g, int firstItem, int lastItem, int options) {
- if (log.isLoggable(PlatformLogger.FINER)) log.finer("Painting items from " + firstItem + " to " + lastItem + ", focused " + focusIndex + ", first " + getFirstVisibleItem() + ", last " + getLastVisibleItem());
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Painting items from " + firstItem + " to " + lastItem + ", focused " + focusIndex + ", first " + getFirstVisibleItem() + ", last " + getLastVisibleItem());
+ }
firstItem = Math.max(getFirstVisibleItem(), firstItem);
if (firstItem > lastItem) {
@@ -1843,15 +1875,19 @@
firstItem = Math.max(getFirstVisibleItem(), firstItem);
lastItem = Math.min(lastItem, items.size()-1);
- if (log.isLoggable(PlatformLogger.FINER)) log.finer("Actually painting items from " + firstItem + " to " + lastItem +
- ", items in window " + itemsInWindow());
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Actually painting items from " + firstItem + " to " + lastItem +
+ ", items in window " + itemsInWindow());
+ }
for (int i = firstItem; i <= lastItem; i++) {
paintItem(g, i);
}
}
private void paintItem(Graphics g, int index) {
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Painting item " + index);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Painting item " + index);
+ }
// 4895367 - only paint items which are visible
if (!isItemHidden(index)) {
Shape clip = g.getClip();
@@ -1859,18 +1895,24 @@
int h = getItemHeight();
int y = getItemY(index);
int x = getItemX();
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Setting clip " + new Rectangle(x, y, w - (SPACE*2), h-(SPACE*2)));
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Setting clip " + new Rectangle(x, y, w - (SPACE*2), h-(SPACE*2)));
+ }
g.setClip(x, y, w - (SPACE*2), h-(SPACE*2));
// Always paint the background so that focus is unpainted in
// multiselect mode
if (isSelected(index)) {
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Painted item is selected");
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Painted item is selected");
+ }
g.setColor(getListForeground());
} else {
g.setColor(getListBackground());
}
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Filling " + new Rectangle(x, y, w, h));
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Filling " + new Rectangle(x, y, w, h));
+ }
g.fillRect(x, y, w, h);
if (index <= getLastVisibleItem() && index < items.size()) {
@@ -1894,8 +1936,10 @@
}
void paintScrollBar(XScrollbar scr, Graphics g, int x, int y, int width, int height, boolean paintAll) {
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Painting scrollbar " + scr + " width " +
- width + " height " + height + ", paintAll " + paintAll);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Painting scrollbar " + scr + " width " +
+ width + " height " + height + ", paintAll " + paintAll);
+ }
g.translate(x, y);
scr.paint(g, getSystemColors(), paintAll);
g.translate(-x, -y);
@@ -1932,22 +1976,30 @@
if (paintFocus && !hasFocus()) {
paintFocus = false;
}
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Painting focus, focus index " + getFocusIndex() + ", focus is " +
- (isItemHidden(getFocusIndex())?("invisible"):("visible")) + ", paint focus is " + paintFocus);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Painting focus, focus index " + getFocusIndex() + ", focus is " +
+ (isItemHidden(getFocusIndex())?("invisible"):("visible")) + ", paint focus is " + paintFocus);
+ }
Shape clip = g.getClip();
g.setClip(0, 0, listWidth, listHeight);
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Setting focus clip " + new Rectangle(0, 0, listWidth, listHeight));
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Setting focus clip " + new Rectangle(0, 0, listWidth, listHeight));
+ }
Rectangle rect = getFocusRect();
if (prevFocusRect != null) {
// Erase focus rect
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Erasing previous focus rect " + prevFocusRect);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Erasing previous focus rect " + prevFocusRect);
+ }
g.setColor(getListBackground());
g.drawRect(prevFocusRect.x, prevFocusRect.y, prevFocusRect.width, prevFocusRect.height);
prevFocusRect = null;
}
if (paintFocus) {
// Paint new
- if (log.isLoggable(PlatformLogger.FINEST)) log.finest("Painting focus rect " + rect);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Painting focus rect " + rect);
+ }
g.setColor(getListForeground()); // Focus color is always black on Linux
g.drawRect(rect.x, rect.y, rect.width, rect.height);
prevFocusRect = rect;
--- a/jdk/src/solaris/classes/sun/awt/X11/XMSelection.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XMSelection.java Wed Apr 17 21:32:11 2013 -0700
@@ -128,7 +128,9 @@
long display = XToolkit.getDisplay();
synchronized(this) {
setOwner(owner, screen);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("New Selection Owner for screen " + screen + " = " + owner );
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("New Selection Owner for screen " + screen + " = " + owner );
+ }
XlibWrapper.XSelectInput(display, owner, XConstants.StructureNotifyMask | eventMask);
XToolkit.addEventDispatcher(owner,
new XEventDispatcher() {
@@ -148,19 +150,25 @@
try {
try {
long display = XToolkit.getDisplay();
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Grabbing XServer");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Grabbing XServer");
+ }
XlibWrapper.XGrabServer(display);
synchronized(this) {
String selection_name = getName()+"_S"+screen;
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Screen = " + screen + " selection name = " + selection_name);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Screen = " + screen + " selection name = " + selection_name);
+ }
XAtom atom = XAtom.get(selection_name);
selectionMap.put(Long.valueOf(atom.getAtom()),this); // add mapping from atom to the instance of XMSelection
setAtom(atom,screen);
long owner = XlibWrapper.XGetSelectionOwner(display, atom.getAtom());
if (owner != 0) {
setOwner(owner, screen);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Selection Owner for screen " + screen + " = " + owner );
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Selection Owner for screen " + screen + " = " + owner );
+ }
XlibWrapper.XSelectInput(display, owner, XConstants.StructureNotifyMask | extra_mask);
XToolkit.addEventDispatcher(owner,
new XEventDispatcher() {
@@ -175,7 +183,9 @@
e.printStackTrace();
}
finally {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("UnGrabbing XServer");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("UnGrabbing XServer");
+ }
XlibWrapper.XUngrabServer(XToolkit.getDisplay());
}
} finally {
@@ -187,7 +197,9 @@
static boolean processClientMessage(XEvent xev, int screen) {
XClientMessageEvent xce = xev.get_xclient();
if (xce.get_message_type() == XA_MANAGER.getAtom()) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("client messags = " + xce);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("client messags = " + xce);
+ }
long timestamp = xce.get_data(0);
long atom = xce.get_data(1);
long owner = xce.get_data(2);
@@ -294,7 +306,9 @@
synchronized void dispatchSelectionChanged( XPropertyEvent ev, int screen) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Selection Changed : Screen = " + screen + "Event =" + ev);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Selection Changed : Screen = " + screen + "Event =" + ev);
+ }
if (listeners != null) {
Iterator iter = listeners.iterator();
while (iter.hasNext()) {
@@ -305,7 +319,9 @@
}
synchronized void dispatchOwnerDeath(XDestroyWindowEvent de, int screen) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Owner dead : Screen = " + screen + "Event =" + de);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Owner dead : Screen = " + screen + "Event =" + de);
+ }
if (listeners != null) {
Iterator iter = listeners.iterator();
while (iter.hasNext()) {
@@ -317,7 +333,9 @@
}
void dispatchSelectionEvent(XEvent xev, int screen) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Event =" + xev);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Event =" + xev);
+ }
if (xev.get_type() == XConstants.DestroyNotify) {
XDestroyWindowEvent de = xev.get_xdestroywindow();
dispatchOwnerDeath( de, screen);
--- a/jdk/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XMenuBarPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -519,7 +519,9 @@
*/
public void handleKeyPress(XEvent xev) {
XKeyEvent xkey = xev.get_xkey();
- if (log.isLoggable(PlatformLogger.FINE)) log.fine(xkey.toString());
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine(xkey.toString());
+ }
if (isEventDisabled(xev)) {
return;
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XMenuPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XMenuPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -111,7 +111,9 @@
* for adding separators
*/
public void addSeparator() {
- if (log.isLoggable(PlatformLogger.FINER)) log.finer("addSeparator is not implemented");
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("addSeparator is not implemented");
+ }
}
public void addItem(MenuItem item) {
--- a/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XNETProtocol.java Wed Apr 17 21:32:11 2013 -0700
@@ -43,7 +43,9 @@
}
public void setState(XWindowPeer window, int state) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Setting state of " + window + " to " + state);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Setting state of " + window + " to " + state);
+ }
if (window.isShowing()) {
requestState(window, state);
} else {
@@ -53,7 +55,9 @@
private void setInitialState(XWindowPeer window, int state) {
XAtomList old_state = window.getNETWMState();
- log.fine("Current state of the window {0} is {1}", window, old_state);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Current state of the window {0} is {1}", window, old_state);
+ }
if ((state & Frame.MAXIMIZED_VERT) != 0) {
old_state.add(XA_NET_WM_STATE_MAXIMIZED_VERT);
} else {
@@ -64,7 +68,9 @@
} else {
old_state.remove(XA_NET_WM_STATE_MAXIMIZED_HORZ);
}
- log.fine("Setting initial state of the window {0} to {1}", window, old_state);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Setting initial state of the window {0} to {1}", window, old_state);
+ }
window.setNETWMState(old_state);
}
@@ -97,7 +103,9 @@
default:
return;
}
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Requesting state on " + window + " for " + state);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Requesting state on " + window + " for " + state);
+ }
req.set_type((int)XConstants.ClientMessage);
req.set_window(window.getWindow());
req.set_message_type(XA_NET_WM_STATE.getAtom());
@@ -179,7 +187,9 @@
req.set_data(1, state.getAtom());
// Fix for 6735584: req.data[2] must be set to 0 when only one property is changed
req.set_data(2, 0);
- log.fine("Setting _NET_STATE atom {0} on {1} for {2}", state, window, Boolean.valueOf(isAdd));
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Setting _NET_STATE atom {0} on {1} for {2}", state, window, Boolean.valueOf(isAdd));
+ }
XToolkit.awtLock();
try {
XlibWrapper.XSendEvent(XToolkit.getDisplay(),
@@ -204,20 +214,26 @@
* @param reset Indicates operation, 'set' if false, 'reset' if true
*/
private void setStateHelper(XWindowPeer window, XAtom state, boolean set) {
- log.finer("Window visibility is: withdrawn={0}, visible={1}, mapped={2} showing={3}",
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Window visibility is: withdrawn={0}, visible={1}, mapped={2} showing={3}",
Boolean.valueOf(window.isWithdrawn()), Boolean.valueOf(window.isVisible()),
Boolean.valueOf(window.isMapped()), Boolean.valueOf(window.isShowing()));
+ }
if (window.isShowing()) {
requestState(window, state, set);
} else {
XAtomList net_wm_state = window.getNETWMState();
- log.finer("Current state on {0} is {1}", window, net_wm_state);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Current state on {0} is {1}", window, net_wm_state);
+ }
if (!set) {
net_wm_state.remove(state);
} else {
net_wm_state.add(state);
}
- log.fine("Setting states on {0} to {1}", window, net_wm_state);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Setting states on {0} to {1}", window, net_wm_state);
+ }
window.setNETWMState(net_wm_state);
}
XToolkit.XSync();
@@ -274,7 +290,9 @@
}
NetWindow = checkAnchor(XA_NET_SUPPORTING_WM_CHECK, XAtom.XA_WINDOW);
supportChecked = true;
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### " + this + " is active: " + (NetWindow != 0));
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### " + this + " is active: " + (NetWindow != 0));
+ }
}
boolean active() {
@@ -284,7 +302,9 @@
boolean doStateProtocol() {
boolean res = active() && checkProtocol(XA_NET_SUPPORTED, XA_NET_WM_STATE);
- stateLog.finer("doStateProtocol() returns " + res);
+ if (stateLog.isLoggable(PlatformLogger.FINER)) {
+ stateLog.finer("doStateProtocol() returns " + res);
+ }
return res;
}
@@ -311,7 +331,9 @@
if (net_wm_name_string == null) {
return false;
}
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### WM_NAME = " + net_wm_name_string);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### WM_NAME = " + net_wm_name_string);
+ }
return net_wm_name_string.startsWith(name);
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XPopupMenuPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XPopupMenuPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -123,7 +123,9 @@
* for adding separators
*/
public void addSeparator() {
- if (log.isLoggable(PlatformLogger.FINER)) log.finer("addSeparator is not implemented");
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("addSeparator is not implemented");
+ }
}
/*
--- a/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java Wed Apr 17 21:32:11 2013 -0700
@@ -54,7 +54,9 @@
} finally {
if (firstCheck) {
firstCheck = false;
- log.fine("{0}:{1} supports {2}", this, listName, protocols);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("{0}:{1} supports {2}", this, listName, protocols);
+ }
}
}
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XScrollbar.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XScrollbar.java Wed Apr 17 21:32:11 2013 -0700
@@ -118,7 +118,9 @@
abstract protected void rebuildArrows();
public void setSize(int width, int height) {
- if (log.isLoggable(PlatformLogger.FINER)) log.finer("Setting scroll bar " + this + " size to " + width + "x" + height);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Setting scroll bar " + this + " size to " + width + "x" + height);
+ }
this.width = width;
this.height = height;
}
@@ -164,7 +166,9 @@
* @param paintAll paint the whole scrollbar if true, just the thumb is false
*/
void paint(Graphics g, Color colors[], boolean paintAll) {
- if (log.isLoggable(PlatformLogger.FINER)) log.finer("Painting scrollbar " + this);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Painting scrollbar " + this);
+ }
boolean useBufferedImage = false;
Graphics2D g2 = null;
@@ -335,7 +339,9 @@
* Tell the scroller to start scrolling.
*/
void startScrolling() {
- log.finer("Start scrolling on " + this);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Start scrolling on " + this);
+ }
// Make sure that we scroll at least once
scroll();
@@ -355,7 +361,9 @@
* See 6243382 for more information
*/
void startScrollingInstance() {
- log.finer("Start scrolling on " + this);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Start scrolling on " + this);
+ }
// Make sure that we scroll at least once
scroll();
@@ -368,7 +376,9 @@
* See 6243382 for more information
*/
void stopScrollingInstance() {
- log.finer("Stop scrolling on " + this);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Stop scrolling on " + this);
+ }
i_scroller.stop();
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XScrollbarPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XScrollbarPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -156,7 +156,9 @@
public void handleJavaKeyEvent(KeyEvent event) {
super.handleJavaKeyEvent(event);
- if (log.isLoggable(PlatformLogger.FINEST)) log.finer("KeyEvent on scrollbar: " + event);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("KeyEvent on scrollbar: " + event);
+ }
if (!(event.isConsumed()) && event.getID() == KeyEvent.KEY_RELEASED) {
switch(event.getKeyCode()) {
case KeyEvent.VK_UP:
--- a/jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XSystemTrayPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -58,7 +58,9 @@
long selection_owner = selection.getOwner(SCREEN);
available = (selection_owner != XConstants.None);
- log.fine(" check if system tray is available. selection owner: " + selection_owner);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine(" check if system tray is available. selection owner: " + selection_owner);
+ }
}
public void ownerChanged(int screen, XMSelection sel, long newOwner, long data, long timestamp) {
@@ -106,7 +108,9 @@
void addTrayIcon(XTrayIconPeer tiPeer) throws AWTException {
long selection_owner = selection.getOwner(SCREEN);
- log.fine(" send SYSTEM_TRAY_REQUEST_DOCK message to owner: " + selection_owner);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine(" send SYSTEM_TRAY_REQUEST_DOCK message to owner: " + selection_owner);
+ }
if (selection_owner == XConstants.None) {
throw new AWTException("TrayIcon couldn't be displayed.");
--- a/jdk/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XTextFieldPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -258,7 +258,9 @@
}
public void setBackground(Color c) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("target="+ target + ", old=" + background + ", new=" + c);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("target="+ target + ", old=" + background + ", new=" + c);
+ }
background = c;
if (xtext != null) {
xtext.setBackground(c);
--- a/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java Wed Apr 17 21:32:11 2013 -0700
@@ -1492,7 +1492,9 @@
}
} catch (InterruptedException ie) {
// Note: the returned timeStamp can be incorrect in this case.
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Catched exception, timeStamp may not be correct (ie = " + ie + ")");
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Catched exception, timeStamp may not be correct (ie = " + ie + ")");
+ }
}
} finally {
awtUnlock();
@@ -1657,7 +1659,9 @@
name = "gnome." + name;
setDesktopProperty(name, e.getValue());
- log.fine("name = " + name + " value = " + e.getValue());
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("name = " + name + " value = " + e.getValue());
+ }
// XXX: we probably want to do something smarter. In
// particular, "Net" properties are of interest to the
@@ -2467,13 +2471,14 @@
// Wait for selection notify for oops on win
long event_number = getEventNumber();
XAtom atom = XAtom.get("WM_S0");
- eventLog.finer("WM_S0 selection owner {0}", XlibWrapper.XGetSelectionOwner(getDisplay(), atom.getAtom()));
+ if (eventLog.isLoggable(PlatformLogger.FINER)) {
+ eventLog.finer("WM_S0 selection owner {0}", XlibWrapper.XGetSelectionOwner(getDisplay(), atom.getAtom()));
+ }
XlibWrapper.XConvertSelection(getDisplay(), atom.getAtom(),
XAtom.get("VERSION").getAtom(), oops.getAtom(),
win.getWindow(), XConstants.CurrentTime);
XSync();
-
eventLog.finer("Requested OOPS");
long start = System.currentTimeMillis();
--- a/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XTrayIconPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -106,9 +106,11 @@
XConfigureEvent ce = ev.get_xconfigure();
- ctrLog.fine("ConfigureNotify on parent of {0}: {1}x{2}+{3}+{4} (old: {5}+{6})",
+ if (ctrLog.isLoggable(PlatformLogger.FINE)) {
+ ctrLog.fine("ConfigureNotify on parent of {0}: {1}x{2}+{3}+{4} (old: {5}+{6})",
XTrayIconPeer.this, ce.get_width(), ce.get_height(),
ce.get_x(), ce.get_y(), old_x, old_y);
+ }
// A workaround for Gnome/Metacity (it doesn't affect the behaviour on KDE).
// On Metacity the EmbeddedFrame's parent window bounds are larger
@@ -128,14 +130,18 @@
// If both the height and the width differ from the fixed size then WM
// must level at least one side to the fixed size. For some reason it may take
// a few hops (even after reparenting) and we have to skip the intermediate ones.
- ctrLog.fine("ConfigureNotify on parent of {0}. Skipping as intermediate resizing.",
+ if (ctrLog.isLoggable(PlatformLogger.FINE)) {
+ ctrLog.fine("ConfigureNotify on parent of {0}. Skipping as intermediate resizing.",
XTrayIconPeer.this);
+ }
return;
} else if (ce.get_height() > TRAY_ICON_HEIGHT) {
- ctrLog.fine("ConfigureNotify on parent of {0}. Centering by \"Y\".",
+ if (ctrLog.isLoggable(PlatformLogger.FINE)) {
+ ctrLog.fine("ConfigureNotify on parent of {0}. Centering by \"Y\".",
XTrayIconPeer.this);
+ }
XlibWrapper.XMoveResizeWindow(XToolkit.getDisplay(), eframeParentID,
ce.get_x(),
@@ -147,8 +153,10 @@
} else if (ce.get_width() > TRAY_ICON_WIDTH) {
- ctrLog.fine("ConfigureNotify on parent of {0}. Centering by \"X\".",
+ if (ctrLog.isLoggable(PlatformLogger.FINE)) {
+ ctrLog.fine("ConfigureNotify on parent of {0}. Centering by \"X\".",
XTrayIconPeer.this);
+ }
XlibWrapper.XMoveResizeWindow(XToolkit.getDisplay(), eframeParentID,
ce.get_x()+ce.get_width()/2 - TRAY_ICON_WIDTH/2,
@@ -165,8 +173,10 @@
if (ex_height != 0) {
- ctrLog.fine("ConfigureNotify on parent of {0}. Move detected. Centering by \"Y\".",
+ if (ctrLog.isLoggable(PlatformLogger.FINE)) {
+ ctrLog.fine("ConfigureNotify on parent of {0}. Move detected. Centering by \"Y\".",
XTrayIconPeer.this);
+ }
XlibWrapper.XMoveWindow(XToolkit.getDisplay(), eframeParentID,
ce.get_x(),
@@ -174,15 +184,19 @@
} else if (ex_width != 0) {
- ctrLog.fine("ConfigureNotify on parent of {0}. Move detected. Centering by \"X\".",
+ if (ctrLog.isLoggable(PlatformLogger.FINE)) {
+ ctrLog.fine("ConfigureNotify on parent of {0}. Move detected. Centering by \"X\".",
XTrayIconPeer.this);
+ }
XlibWrapper.XMoveWindow(XToolkit.getDisplay(), eframeParentID,
ce.get_x() + ex_width/2 - TRAY_ICON_WIDTH/2,
ce.get_y());
} else {
- ctrLog.fine("ConfigureNotify on parent of {0}. Move detected. Skipping.",
+ if (ctrLog.isLoggable(PlatformLogger.FINE)) {
+ ctrLog.fine("ConfigureNotify on parent of {0}. Move detected. Skipping.",
XTrayIconPeer.this);
+ }
}
}
old_x = ce.get_x();
--- a/jdk/src/solaris/classes/sun/awt/X11/XWINProtocol.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWINProtocol.java Wed Apr 17 21:32:11 2013 -0700
@@ -63,7 +63,9 @@
req.set_format(32);
req.set_data(0, (WIN_STATE_MAXIMIZED_HORIZ | WIN_STATE_MAXIMIZED_VERT));
req.set_data(1, win_state);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Sending WIN_STATE to root to change the state to " + win_state);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Sending WIN_STATE to root to change the state to " + win_state);
+ }
try {
XToolkit.awtLock();
XlibWrapper.XSendEvent(XToolkit.getDisplay(),
@@ -111,7 +113,9 @@
win_state &= ~WIN_STATE_MAXIMIZED_HORIZ;
}
if ((old_win_state ^ win_state) != 0) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Setting WIN_STATE on " + window + " to change the state to " + win_state);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Setting WIN_STATE on " + window + " to change the state to " + win_state);
+ }
XA_WIN_STATE.setCard32Property(window, win_state);
}
}
@@ -156,7 +160,9 @@
req.set_data(0, layer == LAYER_NORMAL ? WIN_LAYER_NORMAL : WIN_LAYER_ONTOP);
req.set_data(1, 0);
req.set_data(2, 0);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Setting layer " + layer + " by root message : " + req);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Setting layer " + layer + " by root message : " + req);
+ }
XToolkit.awtLock();
try {
XlibWrapper.XSendEvent(XToolkit.getDisplay(),
@@ -171,7 +177,9 @@
}
req.dispose();
} else {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Setting layer property to " + layer);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Setting layer property to " + layer);
+ }
XA_WIN_LAYER.setCard32Property(window, layer == LAYER_NORMAL ? WIN_LAYER_NORMAL : WIN_LAYER_ONTOP);
}
}
@@ -197,7 +205,9 @@
}
WinWindow = checkAnchor(XA_WIN_SUPPORTING_WM_CHECK, XAtom.XA_CARDINAL);
supportChecked = true;
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### " + this + " is active: " + (WinWindow != 0));
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### " + this + " is active: " + (WinWindow != 0));
+ }
}
boolean active() {
@@ -206,13 +216,17 @@
}
boolean doStateProtocol() {
boolean res = active() && checkProtocol(XA_WIN_PROTOCOLS, XA_WIN_STATE);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### " + this + " supports state: " + res);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### " + this + " supports state: " + res);
+ }
return res;
}
boolean doLayerProtocol() {
boolean res = active() && checkProtocol(XA_WIN_PROTOCOLS, XA_WIN_LAYER);
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("### " + this + " supports layer: " + res);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("### " + this + " supports layer: " + res);
+ }
return res;
}
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XWM.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWM.java Wed Apr 17 21:32:11 2013 -0700
@@ -148,7 +148,9 @@
XWM(int WMID) {
this.WMID = WMID;
initializeProtocols();
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Window manager: " + toString());
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Window manager: " + toString());
+ }
}
int getID() {
return WMID;
@@ -252,7 +254,7 @@
* having a window manager running. I.e. it does not reparent
* top level shells.
*/
- if (insLog.isLoggable(PlatformLogger.FINE)) {
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
insLog.finer("eXcursion means NO_WM");
}
return true;
@@ -270,7 +272,7 @@
long selection_owner =
XlibWrapper.XGetSelectionOwner(XToolkit.getDisplay(),
XAtom.get(selection_name).getAtom());
- if (insLog.isLoggable(PlatformLogger.FINE)) {
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
insLog.finer("selection owner of " + selection_name
+ " is " + selection_owner);
}
@@ -299,7 +301,7 @@
XToolkit.getDefaultRootWindow(),
XConstants.CWEventMask,
substruct.pData);
- if (insLog.isLoggable(PlatformLogger.FINE)) {
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
insLog.finer("It looks like there is no WM thus NO_WM");
}
}
@@ -343,18 +345,26 @@
byte[] bytes = XlibWrapper.getStringBytes(getter.getData());
String id = new String(bytes);
- log.finer("ENLIGHTENMENT_COMMS is " + id);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("ENLIGHTENMENT_COMMS is " + id);
+ }
// Parse WINID
Pattern winIdPat = Pattern.compile("WINID\\s+(\\p{XDigit}{0,8})");
try {
Matcher match = winIdPat.matcher(id);
if (match.matches()) {
- log.finest("Match group count: " + match.groupCount());
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Match group count: " + match.groupCount());
+ }
String longId = match.group(1);
- log.finest("Match group 1 " + longId);
+ if (log.isLoggable(PlatformLogger.FINEST)) {
+ log.finest("Match group 1 " + longId);
+ }
long winid = Long.parseLong(longId, 16);
- log.finer("Enlightenment communication window " + winid);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Enlightenment communication window " + winid);
+ }
return winid;
} else {
log.finer("ENLIGHTENMENT_COMMS has wrong format");
@@ -407,7 +417,9 @@
static boolean isCDE() {
if (!XA_DT_SM_WINDOW_INFO.isInterned()) {
- log.finer("{0} is not interned", XA_DT_SM_WINDOW_INFO);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("{0} is not interned", XA_DT_SM_WINDOW_INFO);
+ }
return false;
}
@@ -438,7 +450,9 @@
/* Now check that this window has _DT_SM_STATE_INFO (ignore contents) */
if (!XA_DT_SM_STATE_INFO.isInterned()) {
- log.finer("{0} is not interned", XA_DT_SM_STATE_INFO);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("{0} is not interned", XA_DT_SM_STATE_INFO);
+ }
return false;
}
WindowPropertyGetter getter2 =
@@ -610,7 +624,9 @@
*/
if (!XA_ICEWM_WINOPTHINT.isInterned()) {
- log.finer("{0} is not interned", XA_ICEWM_WINOPTHINT);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("{0} is not interned", XA_ICEWM_WINOPTHINT);
+ }
return false;
}
@@ -643,7 +659,9 @@
*/
static boolean isIceWM() {
if (!XA_ICEWM_WINOPTHINT.isInterned()) {
- log.finer("{0} is not interned", XA_ICEWM_WINOPTHINT);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("{0} is not interned", XA_ICEWM_WINOPTHINT);
+ }
return false;
}
@@ -654,7 +672,9 @@
try {
int status = getter.execute();
boolean res = (status == XConstants.Success && getter.getActualType() != 0);
- log.finer("Status getting XA_ICEWM_WINOPTHINT: " + !res);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Status getting XA_ICEWM_WINOPTHINT: " + !res);
+ }
return !res || isNetWMName("IceWM");
} finally {
getter.dispose();
@@ -816,7 +836,9 @@
}
hints.set_flags(hints.get_flags() & ~mask);
- if (insLog.isLoggable(PlatformLogger.FINER)) insLog.finer("Setting hints, flags " + XlibWrapper.hintsToString(hints.get_flags()));
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Setting hints, flags " + XlibWrapper.hintsToString(hints.get_flags()));
+ }
XlibWrapper.XSetWMNormalHints(XToolkit.getDisplay(),
window.getWindow(),
hints.pData);
@@ -873,7 +895,9 @@
XAtomList decorDel = new XAtomList();
decorations = normalizeMotifDecor(decorations);
- if (insLog.isLoggable(PlatformLogger.FINER)) insLog.finer("Setting OL_DECOR to " + Integer.toBinaryString(decorations));
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Setting OL_DECOR to " + Integer.toBinaryString(decorations));
+ }
if ((decorations & MWMConstants.MWM_DECOR_TITLE) == 0) {
decorDel.add(XA_OL_DECOR_HEADER);
}
@@ -890,7 +914,9 @@
insLog.finer("Deleting OL_DECOR");
XA_OL_DECOR_DEL.DeleteProperty(window);
} else {
- if (insLog.isLoggable(PlatformLogger.FINER)) insLog.finer("Setting OL_DECOR to " + decorDel);
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Setting OL_DECOR to " + decorDel);
+ }
XA_OL_DECOR_DEL.setAtomListProperty(window, decorDel);
}
}
@@ -918,7 +944,9 @@
hints.set_functions(functions);
hints.set_decorations(decorations);
- if (stateLog.isLoggable(PlatformLogger.FINER)) stateLog.finer("Setting MWM_HINTS to " + hints);
+ if (stateLog.isLoggable(PlatformLogger.FINER)) {
+ stateLog.finer("Setting MWM_HINTS to " + hints);
+ }
window.setMWMHints(hints);
}
@@ -980,7 +1008,9 @@
* Make specified shell resizable.
*/
static void setShellResizable(XDecoratedPeer window) {
- if (insLog.isLoggable(PlatformLogger.FINE)) insLog.fine("Setting shell resizable " + window);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Setting shell resizable " + window);
+ }
XToolkit.awtLock();
try {
Rectangle shellBounds = window.getShellBounds();
@@ -1010,8 +1040,10 @@
static void setShellNotResizable(XDecoratedPeer window, WindowDimensions newDimensions, Rectangle shellBounds,
boolean justChangeSize)
{
- if (insLog.isLoggable(PlatformLogger.FINE)) insLog.fine("Setting non-resizable shell " + window + ", dimensions " + newDimensions +
- ", shellBounds " + shellBounds +", just change size: " + justChangeSize);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("Setting non-resizable shell " + window + ", dimensions " + newDimensions +
+ ", shellBounds " + shellBounds +", just change size: " + justChangeSize);
+ }
XToolkit.awtLock();
try {
/* Fix min/max size hints at the specified values */
@@ -1142,7 +1174,9 @@
stateLog.finer("WithdrawnState");
return false;
} else {
- stateLog.finer("Window WM_STATE is " + wm_state);
+ if (stateLog.isLoggable(PlatformLogger.FINER)) {
+ stateLog.finer("Window WM_STATE is " + wm_state);
+ }
}
boolean is_state_change = false;
if (e.get_atom() == XA_WM_STATE.getAtom()) {
@@ -1151,7 +1185,9 @@
for (XStateProtocol proto : getProtocols(XStateProtocol.class)) {
is_state_change |= proto.isStateChange(e);
- stateLog.finest(proto + ": is state changed = " + is_state_change);
+ if (stateLog.isLoggable(PlatformLogger.FINEST)) {
+ stateLog.finest(proto + ": is state changed = " + is_state_change);
+ }
}
return is_state_change;
}
@@ -1303,7 +1339,9 @@
res = defaultInsets;
}
}
- if (insLog.isLoggable(PlatformLogger.FINEST)) insLog.finest("WM guessed insets: " + res);
+ if (insLog.isLoggable(PlatformLogger.FINEST)) {
+ insLog.finest("WM guessed insets: " + res);
+ }
return res;
}
/*
@@ -1372,7 +1410,9 @@
XNETProtocol net_protocol = getWM().getNETProtocol();
if (net_protocol != null && net_protocol.active()) {
Insets insets = getInsetsFromProp(window, XA_NET_FRAME_EXTENTS);
- insLog.fine("_NET_FRAME_EXTENTS: {0}", insets);
+ if (insLog.isLoggable(PlatformLogger.FINE)) {
+ insLog.fine("_NET_FRAME_EXTENTS: {0}", insets);
+ }
if (insets != null) {
return insets;
@@ -1513,7 +1553,9 @@
* [mwm, e!, kwin, fvwm2 ... ]
*/
Insets correctWM = XWM.getInsetsFromExtents(window);
- insLog.finer("Got insets from property: {0}", correctWM);
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Got insets from property: {0}", correctWM);
+ }
if (correctWM == null) {
correctWM = new Insets(0,0,0,0);
@@ -1574,7 +1616,9 @@
}
case XWM.OTHER_WM:
default: { /* this is very similar to the E! case above */
- insLog.finest("Getting correct insets for OTHER_WM/default, parent: {0}", parent);
+ if (insLog.isLoggable(PlatformLogger.FINEST)) {
+ insLog.finest("Getting correct insets for OTHER_WM/default, parent: {0}", parent);
+ }
syncTopLevelPos(parent, lwinAttr);
int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
window, lwinAttr.pData);
@@ -1601,8 +1645,10 @@
&& lwinAttr.get_width()+2*lwinAttr.get_border_width() == pattr.get_width()
&& lwinAttr.get_height()+2*lwinAttr.get_border_width() == pattr.get_height())
{
- insLog.finest("Double reparenting detected, pattr({2})={0}, lwinAttr({3})={1}",
+ if (insLog.isLoggable(PlatformLogger.FINEST)) {
+ insLog.finest("Double reparenting detected, pattr({2})={0}, lwinAttr({3})={1}",
lwinAttr, pattr, parent, window);
+ }
lwinAttr.set_x(pattr.get_x());
lwinAttr.set_y(pattr.get_y());
lwinAttr.set_border_width(lwinAttr.get_border_width()+pattr.get_border_width());
@@ -1629,8 +1675,10 @@
* widths and inner/outer distinction, so for the time
* being, just ignore it.
*/
- insLog.finest("Attrs before calculation: pattr({2})={0}, lwinAttr({3})={1}",
+ if (insLog.isLoggable(PlatformLogger.FINEST)) {
+ insLog.finest("Attrs before calculation: pattr({2})={0}, lwinAttr({3})={1}",
lwinAttr, pattr, parent, window);
+ }
correctWM = new Insets(lwinAttr.get_y() + lwinAttr.get_border_width(),
lwinAttr.get_x() + lwinAttr.get_border_width(),
pattr.get_height() - (lwinAttr.get_y() + lwinAttr.get_height() + 2*lwinAttr.get_border_width()),
--- a/jdk/src/solaris/classes/sun/awt/X11/XWindow.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindow.java Wed Apr 17 21:32:11 2013 -0700
@@ -402,7 +402,9 @@
((Component)e.getSource()).dispatchEvent(e);
}
}, PeerEvent.ULTIMATE_PRIORITY_EVENT);
- if (focusLog.isLoggable(PlatformLogger.FINER) && (e instanceof FocusEvent)) focusLog.finer("Sending " + e);
+ if (focusLog.isLoggable(PlatformLogger.FINER) && (e instanceof FocusEvent)) {
+ focusLog.finer("Sending " + e);
+ }
XToolkit.postEvent(XToolkit.targetToAppContext(e.getSource()), pe);
}
@@ -660,7 +662,9 @@
if (isEventDisabled(xev)) {
return;
}
- if (eventLog.isLoggable(PlatformLogger.FINE)) eventLog.fine(xbe.toString());
+ if (eventLog.isLoggable(PlatformLogger.FINE)) {
+ eventLog.fine(xbe.toString());
+ }
long when;
int modifiers;
boolean popupTrigger = false;
@@ -694,9 +698,11 @@
/*
multiclick checking
*/
- if (eventLog.isLoggable(PlatformLogger.FINEST)) eventLog.finest("lastWindow = " + lastWindow + ", lastButton "
- + lastButton + ", lastTime " + lastTime + ", multiClickTime "
- + XToolkit.getMultiClickTime());
+ if (eventLog.isLoggable(PlatformLogger.FINEST)) {
+ eventLog.finest("lastWindow = " + lastWindow + ", lastButton "
+ + lastButton + ", lastTime " + lastTime + ", multiClickTime "
+ + XToolkit.getMultiClickTime());
+ }
if (lastWindow == this && lastButton == lbutton && (when - lastTime) < XToolkit.getMultiClickTime()) {
clickCount++;
} else {
@@ -885,7 +891,9 @@
super.handleXCrossingEvent(xev);
XCrossingEvent xce = xev.get_xcrossing();
- if (eventLog.isLoggable(PlatformLogger.FINEST)) eventLog.finest(xce.toString());
+ if (eventLog.isLoggable(PlatformLogger.FINEST)) {
+ eventLog.finest(xce.toString());
+ }
if (xce.get_type() == XConstants.EnterNotify) {
enterNotify(xce.get_window());
@@ -987,8 +995,10 @@
Rectangle oldBounds = getBounds();
super.handleConfigureNotifyEvent(xev);
- insLog.finer("Configure, {0}, event disabled: {1}",
+ if (insLog.isLoggable(PlatformLogger.FINER)) {
+ insLog.finer("Configure, {0}, event disabled: {1}",
xev.get_xconfigure(), isEventDisabled(xev));
+ }
if (isEventDisabled(xev)) {
return;
}
@@ -1007,7 +1017,9 @@
public void handleMapNotifyEvent(XEvent xev) {
super.handleMapNotifyEvent(xev);
- log.fine("Mapped {0}", this);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Mapped {0}", this);
+ }
if (isEventDisabled(xev)) {
return;
}
@@ -1029,10 +1041,12 @@
}
private void dumpKeysymArray(XKeyEvent ev) {
- keyEventLog.fine(" "+Long.toHexString(XlibWrapper.XKeycodeToKeysym(XToolkit.getDisplay(), ev.get_keycode(), 0))+
- "\n "+Long.toHexString(XlibWrapper.XKeycodeToKeysym(XToolkit.getDisplay(), ev.get_keycode(), 1))+
- "\n "+Long.toHexString(XlibWrapper.XKeycodeToKeysym(XToolkit.getDisplay(), ev.get_keycode(), 2))+
- "\n "+Long.toHexString(XlibWrapper.XKeycodeToKeysym(XToolkit.getDisplay(), ev.get_keycode(), 3)));
+ if (keyEventLog.isLoggable(PlatformLogger.FINE)) {
+ keyEventLog.fine(" "+Long.toHexString(XlibWrapper.XKeycodeToKeysym(XToolkit.getDisplay(), ev.get_keycode(), 0))+
+ "\n "+Long.toHexString(XlibWrapper.XKeycodeToKeysym(XToolkit.getDisplay(), ev.get_keycode(), 1))+
+ "\n "+Long.toHexString(XlibWrapper.XKeycodeToKeysym(XToolkit.getDisplay(), ev.get_keycode(), 2))+
+ "\n "+Long.toHexString(XlibWrapper.XKeycodeToKeysym(XToolkit.getDisplay(), ev.get_keycode(), 3)));
+ }
}
/**
Return unicode character or 0 if no correspondent character found.
@@ -1057,14 +1071,20 @@
//return (uni > 0? uni + 0x01000000 : 0);
}
void logIncomingKeyEvent(XKeyEvent ev) {
- keyEventLog.fine("--XWindow.java:handleKeyEvent:"+ev);
+ if (keyEventLog.isLoggable(PlatformLogger.FINE)) {
+ keyEventLog.fine("--XWindow.java:handleKeyEvent:"+ev);
+ }
dumpKeysymArray(ev);
- keyEventLog.fine("XXXXXXXXXXXXXX javakeycode will be most probably:0x"+ Integer.toHexString(XKeysym.getJavaKeycodeOnly(ev)));
+ if (keyEventLog.isLoggable(PlatformLogger.FINE)) {
+ keyEventLog.fine("XXXXXXXXXXXXXX javakeycode will be most probably:0x"+ Integer.toHexString(XKeysym.getJavaKeycodeOnly(ev)));
+ }
}
public void handleKeyPress(XEvent xev) {
super.handleKeyPress(xev);
XKeyEvent ev = xev.get_xkey();
- if (eventLog.isLoggable(PlatformLogger.FINE)) eventLog.fine(ev.toString());
+ if (eventLog.isLoggable(PlatformLogger.FINE)) {
+ eventLog.fine(ev.toString());
+ }
if (isEventDisabled(xev)) {
return;
}
@@ -1153,7 +1173,9 @@
if (unicodeKey > 0 && !isDeadKey) {
- keyEventLog.fine("fire _TYPED on "+unicodeKey);
+ if (keyEventLog.isLoggable(PlatformLogger.FINE)) {
+ keyEventLog.fine("fire _TYPED on "+unicodeKey);
+ }
postKeyEvent( java.awt.event.KeyEvent.KEY_TYPED,
ev.get_time(),
java.awt.event.KeyEvent.VK_UNDEFINED,
@@ -1171,7 +1193,9 @@
public void handleKeyRelease(XEvent xev) {
super.handleKeyRelease(xev);
XKeyEvent ev = xev.get_xkey();
- if (eventLog.isLoggable(PlatformLogger.FINE)) eventLog.fine(ev.toString());
+ if (eventLog.isLoggable(PlatformLogger.FINE)) {
+ eventLog.fine(ev.toString());
+ }
if (isEventDisabled(xev)) {
return;
}
@@ -1333,10 +1357,14 @@
void updateSizeHints(int x, int y, int width, int height) {
long flags = XUtilConstants.PSize | (isLocationByPlatform() ? 0 : (XUtilConstants.PPosition | XUtilConstants.USPosition));
if (!isResizable()) {
- log.finer("Window {0} is not resizable", this);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Window {0} is not resizable", this);
+ }
flags |= XUtilConstants.PMinSize | XUtilConstants.PMaxSize;
} else {
- log.finer("Window {0} is resizable", this);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Window {0} is resizable", this);
+ }
}
setSizeHints(flags, x, y, width, height);
}
@@ -1344,10 +1372,14 @@
void updateSizeHints(int x, int y) {
long flags = isLocationByPlatform() ? 0 : (XUtilConstants.PPosition | XUtilConstants.USPosition);
if (!isResizable()) {
- log.finer("Window {0} is not resizable", this);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Window {0} is not resizable", this);
+ }
flags |= XUtilConstants.PMinSize | XUtilConstants.PMaxSize | XUtilConstants.PSize;
} else {
- log.finer("Window {0} is resizable", this);
+ if (log.isLoggable(PlatformLogger.FINER)) {
+ log.finer("Window {0} is resizable", this);
+ }
}
setSizeHints(flags, x, y, width, height);
}
--- a/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/XWindowPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -227,10 +227,10 @@
if (owner != null) {
ownerPeer = (XWindowPeer)owner.getPeer();
if (focusLog.isLoggable(PlatformLogger.FINER)) {
- focusLog.fine("Owner is " + owner);
- focusLog.fine("Owner peer is " + ownerPeer);
- focusLog.fine("Owner X window " + Long.toHexString(ownerPeer.getWindow()));
- focusLog.fine("Owner content X window " + Long.toHexString(ownerPeer.getContentWindow()));
+ focusLog.finer("Owner is " + owner);
+ focusLog.finer("Owner peer is " + ownerPeer);
+ focusLog.finer("Owner X window " + Long.toHexString(ownerPeer.getWindow()));
+ focusLog.finer("Owner content X window " + Long.toHexString(ownerPeer.getContentWindow()));
}
// as owner window may be an embedded window, we must get a toplevel window
// to set as TRANSIENT_FOR hint
@@ -239,8 +239,10 @@
XToolkit.awtLock();
try {
// Set WM_TRANSIENT_FOR
- if (focusLog.isLoggable(PlatformLogger.FINE)) focusLog.fine("Setting transient on " + Long.toHexString(getWindow())
- + " for " + Long.toHexString(ownerWindow));
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("Setting transient on " + Long.toHexString(getWindow())
+ + " for " + Long.toHexString(ownerWindow));
+ }
setToplevelTransientFor(this, ownerPeer, false, true);
// Set group leader
@@ -777,7 +779,9 @@
// override_redirect all we can do is check whether our parent
// is active. If it is - we can freely synthesize focus transfer.
// Luckily, this logic is already implemented in requestWindowFocus.
- if (focusLog.isLoggable(PlatformLogger.FINE)) focusLog.fine("Requesting window focus");
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("Requesting window focus");
+ }
requestWindowFocus(time, timeProvided);
}
@@ -803,7 +807,9 @@
public void handleFocusEvent(XEvent xev) {
XFocusChangeEvent xfe = xev.get_xfocus();
FocusEvent fe;
- focusLog.fine("{0}", xfe);
+ if (focusLog.isLoggable(PlatformLogger.FINE)) {
+ focusLog.fine("{0}", xfe);
+ }
if (isEventDisabled(xev)) {
return;
}
@@ -986,7 +992,9 @@
}
private void updateAlwaysOnTop() {
- log.fine("Promoting always-on-top state {0}", Boolean.valueOf(alwaysOnTop));
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Promoting always-on-top state {0}", Boolean.valueOf(alwaysOnTop));
+ }
XWM.getWM().setLayer(this,
alwaysOnTop ?
XLayerProtocol.LAYER_ALWAYS_ON_TOP :
@@ -1511,7 +1519,9 @@
synchronized(getStateLock()) {
XDialogPeer blockerPeer = (XDialogPeer) AWTAccessor.getComponentAccessor().getPeer(d);
if (blocked) {
- log.fine("{0} is blocked by {1}", this, blockerPeer);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("{0} is blocked by {1}", this, blockerPeer);
+ }
modalBlocker = d;
if (isReparented() || XWM.isNonReparentingWM()) {
@@ -1900,7 +1910,9 @@
@Override
public void xSetVisible(boolean visible) {
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("Setting visible on " + this + " to " + visible);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("Setting visible on " + this + " to " + visible);
+ }
XToolkit.awtLock();
try {
this.visible = visible;
@@ -2053,7 +2065,9 @@
// since it generates MOUSE_ENTERED/MOUSE_EXITED for frame and dialog.
// (fix for 6390326)
XBaseWindow target = XToolkit.windowToXWindow(xce.get_window());
- grabLog.finer(" - Grab event target {0}", target);
+ if (grabLog.isLoggable(PlatformLogger.FINER)) {
+ grabLog.finer(" - Grab event target {0}", target);
+ }
if (target != null && target != this) {
target.dispatchEvent(xev);
return;
@@ -2064,7 +2078,7 @@
public void handleMotionNotify(XEvent xev) {
XMotionEvent xme = xev.get_xmotion();
- if (grabLog.isLoggable(PlatformLogger.FINE)) {
+ if (grabLog.isLoggable(PlatformLogger.FINER)) {
grabLog.finer("{0}, when grabbed {1}, contains {2}",
xme, isGrabbed(), containsGlobal(xme.get_x_root(), xme.get_y_root()));
}
@@ -2095,7 +2109,9 @@
xme.set_x(localCoord.x);
xme.set_y(localCoord.y);
}
- grabLog.finer(" - Grab event target {0}", target);
+ if (grabLog.isLoggable(PlatformLogger.FINER)) {
+ grabLog.finer(" - Grab event target {0}", target);
+ }
if (target != null) {
if (target != getContentXWindow() && target != this) {
target.dispatchEvent(xev);
@@ -2138,7 +2154,9 @@
// translation)
XBaseWindow target = XToolkit.windowToXWindow(xbe.get_window());
try {
- grabLog.finer(" - Grab event target {0} (press target {1})", target, pressTarget);
+ if (grabLog.isLoggable(PlatformLogger.FINER)) {
+ grabLog.finer(" - Grab event target {0} (press target {1})", target, pressTarget);
+ }
if (xbe.get_type() == XConstants.ButtonPress
&& xbe.get_button() == XConstants.buttons[0])
{
@@ -2172,7 +2190,9 @@
// According to the specification of UngrabEvent, post it
// when press occurs outside of the window and not on its owned windows
if (xbe.get_type() == XConstants.ButtonPress) {
- grabLog.fine("Generating UngrabEvent on {0} because not inside of shell", this);
+ if (grabLog.isLoggable(PlatformLogger.FINE)) {
+ grabLog.fine("Generating UngrabEvent on {0} because not inside of shell", this);
+ }
postEventToEventQueue(new sun.awt.UngrabEvent(getEventSource()));
return;
}
@@ -2191,18 +2211,24 @@
// toplevel == null - outside of
// hierarchy, toplevel is Dialog - should
// send ungrab (but shouldn't for Window)
- grabLog.fine("Generating UngrabEvent on {0} because hierarchy ended", this);
+ if (grabLog.isLoggable(PlatformLogger.FINE)) {
+ grabLog.fine("Generating UngrabEvent on {0} because hierarchy ended", this);
+ }
postEventToEventQueue(new sun.awt.UngrabEvent(getEventSource()));
}
} else {
// toplevel is null - outside of hierarchy
- grabLog.fine("Generating UngrabEvent on {0} because toplevel is null", this);
+ if (grabLog.isLoggable(PlatformLogger.FINE)) {
+ grabLog.fine("Generating UngrabEvent on {0} because toplevel is null", this);
+ }
postEventToEventQueue(new sun.awt.UngrabEvent(getEventSource()));
return;
}
} else {
// target doesn't map to XAWT window - outside of hierarchy
- grabLog.fine("Generating UngrabEvent on because target is null {0}", this);
+ if (grabLog.isLoggable(PlatformLogger.FINE)) {
+ grabLog.fine("Generating UngrabEvent on because target is null {0}", this);
+ }
postEventToEventQueue(new sun.awt.UngrabEvent(getEventSource()));
return;
}
--- a/jdk/src/solaris/classes/sun/awt/X11/generator/WrapperGenerator.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11/generator/WrapperGenerator.java Wed Apr 17 21:32:11 2013 -0700
@@ -806,11 +806,15 @@
}
}
if (s_size_32 != null && !s_size_32.equals(Integer.toString(acc_size_32))) {
- log.fine("32 bits: The size of the structure " + stp.getName() + " " + s_size_32 +
+ if (log.isLoggable(Level.FINE)) {
+ log.fine("32 bits: The size of the structure " + stp.getName() + " " + s_size_32 +
" is not equal to the accumulated size " +acc_size_32 + " of the fields");
+ }
} else if (s_size_64 != null && !s_size_64.equals(Integer.toString(acc_size_64))) {
- log.fine("64 bits: The size of the structure " + stp.getName() + " " +s_size_64+
+ if (log.isLoggable(Level.FINE)) {
+ log.fine("64 bits: The size of the structure " + stp.getName() + " " +s_size_64+
" is not equal to the accumulated size " +acc_size_64+" of the fields");
+ }
}
}
--- a/jdk/src/solaris/classes/sun/awt/X11InputMethod.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/solaris/classes/sun/awt/X11InputMethod.java Wed Apr 17 21:32:11 2013 -0700
@@ -326,8 +326,10 @@
return;
if (lastXICFocussedComponent != null){
- if (log.isLoggable(PlatformLogger.FINE)) log.fine("XICFocused {0}, AWTFocused {1}",
- lastXICFocussedComponent, awtFocussedComponent);
+ if (log.isLoggable(PlatformLogger.FINE)) {
+ log.fine("XICFocused {0}, AWTFocused {1}",
+ lastXICFocussedComponent, awtFocussedComponent);
+ }
}
if (pData == 0) {
--- a/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java Wed Apr 17 21:30:28 2013 -0700
+++ b/jdk/src/windows/classes/sun/awt/windows/WComponentPeer.java Wed Apr 17 21:32:11 2013 -0700
@@ -360,7 +360,9 @@
}
void handleJavaFocusEvent(FocusEvent fe) {
- if (focusLog.isLoggable(PlatformLogger.FINER)) focusLog.finer(fe.toString());
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer(fe.toString());
+ }
setFocus(fe.getID() == FocusEvent.FOCUS_GAINED);
}
@@ -693,7 +695,9 @@
}
boolean res = wpeer.requestWindowFocus(cause);
- if (focusLog.isLoggable(PlatformLogger.FINER)) focusLog.finer("Requested window focus: " + res);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer("Requested window focus: " + res);
+ }
// If parent window can be made focused and has been made focused(synchronously)
// then we can proceed with children, otherwise we retreat.
if (!(res && parentWindow.isFocused())) {
@@ -713,7 +717,9 @@
}
private boolean rejectFocusRequestHelper(String logMsg) {
- if (focusLog.isLoggable(PlatformLogger.FINER)) focusLog.finer(logMsg);
+ if (focusLog.isLoggable(PlatformLogger.FINER)) {
+ focusLog.finer(logMsg);
+ }
WKeyboardFocusManagerPeer.removeLastFocusRequest((Component)target);
return false;
}
@@ -1080,10 +1086,9 @@
@SuppressWarnings("deprecation")
public void applyShape(Region shape) {
if (shapeLog.isLoggable(PlatformLogger.FINER)) {
- shapeLog.finer(
- "*** INFO: Setting shape: PEER: " + this
- + "; TARGET: " + target
- + "; SHAPE: " + shape);
+ shapeLog.finer("*** INFO: Setting shape: PEER: " + this
+ + "; TARGET: " + target
+ + "; SHAPE: " + shape);
}
if (shape != null) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Graphics2D/FillTexturePaint/FillTexturePaint.java Wed Apr 17 21:32:11 2013 -0700
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.Rectangle;
+import java.awt.TexturePaint;
+import java.awt.image.BufferedImage;
+import java.awt.image.VolatileImage;
+
+/**
+ * @test
+ * @bug 8000629
+ * @summary TexturePaint areas shouldn't separates.
+ * @author Sergey Bylokhov
+ */
+public class FillTexturePaint {
+
+ private static TexturePaint shape;
+ private static final int size = 400;
+
+ static {
+ BufferedImage bi = new BufferedImage(50, 50,
+ BufferedImage.TYPE_INT_RGB);
+ Graphics2D gi = bi.createGraphics();
+ gi.setBackground(Color.GREEN);
+ gi.clearRect(0, 0, 50, 50);
+ shape = new TexturePaint(bi, new Rectangle(0, 0, 50, 50));
+ }
+
+ public static void main(final String[] args) {
+ GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsConfiguration gc =
+ ge.getDefaultScreenDevice().getDefaultConfiguration();
+ VolatileImage vi = gc.createCompatibleVolatileImage(size, size);
+ while (true) {
+ vi.validate(gc);
+ Graphics2D g2d = vi.createGraphics();
+ g2d.setComposite(AlphaComposite.Src);
+ g2d.setPaint(shape);
+ g2d.fill(new Rectangle(0, 0, size, size));
+ g2d.dispose();
+
+ if (vi.validate(gc) != VolatileImage.IMAGE_OK) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ignored) {
+ }
+ continue;
+ }
+
+ BufferedImage bi = vi.getSnapshot();
+
+ if (vi.contentsLost()) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ignored) {
+ }
+ continue;
+ }
+
+ for (int x = 0; x < size; ++x) {
+ for (int y = 0; y < size; ++y) {
+ if (bi.getRGB(x, y) != Color.GREEN.getRGB()) {
+ throw new RuntimeException("Test failed.");
+ }
+ }
+ }
+ break;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Graphics2D/FlipDrawImage/FlipDrawImage.java Wed Apr 17 21:32:11 2013 -0700
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.image.BufferedImage;
+import java.awt.image.VolatileImage;
+
+/**
+ * @test
+ * @bug 8000629
+ * @author Sergey Bylokhov
+ */
+public final class FlipDrawImage {
+
+ private static final int width = 400;
+ private static final int height = 400;
+
+ public static void main(final String[] args) {
+ GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsConfiguration gc =
+ ge.getDefaultScreenDevice().getDefaultConfiguration();
+ VolatileImage vi = gc.createCompatibleVolatileImage(width, height);
+ final BufferedImage bi = new BufferedImage(width, height,
+ BufferedImage.TYPE_INT_ARGB);
+ while (true) {
+ vi.validate(gc);
+ Graphics2D g2d = vi.createGraphics();
+ g2d.setColor(Color.red);
+ g2d.fillRect(0, 0, width, height);
+ g2d.setColor(Color.green);
+ g2d.fillRect(0, 0, width / 2, height / 2);
+ g2d.dispose();
+
+ if (vi.validate(gc) != VolatileImage.IMAGE_OK) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ignored) {
+ }
+ continue;
+ }
+
+ Graphics2D g = bi.createGraphics();
+ g.setComposite(AlphaComposite.Src);
+ g.setColor(Color.BLUE);
+ g.fillRect(0, 0, width, height);
+ // destination width and height are flipped and scale is used.
+ g.drawImage(vi, width / 2, height / 2, -width / 2, -height / 2,
+ null, null);
+ g.dispose();
+
+ if (vi.contentsLost()) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ignored) {
+ }
+ continue;
+ }
+
+ for (int x = 0; x < width; ++x) {
+ for (int y = 0; y < height; ++y) {
+ if (x < width / 2 && y < height / 2) {
+ if (x >= width / 4 && y >= height / 4) {
+ if (bi.getRGB(x, y) != Color.green.getRGB()) {
+ throw new RuntimeException("Test failed.");
+ }
+ } else if (bi.getRGB(x, y) != Color.red.getRGB()) {
+ throw new RuntimeException("Test failed.");
+ }
+ } else {
+ if (bi.getRGB(x, y) != Color.BLUE.getRGB()) {
+ throw new RuntimeException("Test failed.");
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/Graphics2D/TransformSetGet/TransformSetGet.java Wed Apr 17 21:32:11 2013 -0700
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.geom.AffineTransform;
+import java.awt.image.VolatileImage;
+
+import sun.java2d.SunGraphics2D;
+
+/**
+ * @test
+ * @bug 8000629
+ * @summary Set/get transform should work on constrained graphics.
+ * @author Sergey Bylokhov
+ */
+public class TransformSetGet {
+
+ public static void main(final String[] args) {
+ final GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ final GraphicsConfiguration gc =
+ ge.getDefaultScreenDevice().getDefaultConfiguration();
+ final VolatileImage vi = gc.createCompatibleVolatileImage(200, 200);
+ final SunGraphics2D sg2d = (SunGraphics2D) vi.createGraphics();
+
+ sg2d.constrain(0, 61, 100, 100);
+ final AffineTransform expected = sg2d.cloneTransform();
+ sg2d.setTransform(sg2d.getTransform());
+ final AffineTransform actual = sg2d.cloneTransform();
+ sg2d.dispose();
+ vi.flush();
+ if (!expected.equals(actual)) {
+ System.out.println("Expected = " + expected);
+ System.out.println("Actual = " + actual);
+ throw new RuntimeException("Wrong transform");
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/event/KeyEvent/KeyReleasedInAppletTest/KeyReleasedInAppletTest.html Wed Apr 17 21:32:11 2013 -0700
@@ -0,0 +1,22 @@
+<html>
+<!--
+ @test
+ @bug 8010009
+ @summary [macosx] Unable type into online word games on MacOSX
+ @author petr.pchelko : area=awt.keyboard
+ @run clean *
+ @run build TestApplet
+ @run applet/manual=yesno KeyReleasedInAppletTest.html
+ -->
+<head>
+<title>KeyReleasedInAppletTest </title>
+</head>
+<body>
+
+<h1>KeyReleasedInAppletTest<br>Bug ID:8010009 </h1>
+
+<p> See the dialog box (usually in upper left corner) for instructions</p>
+
+<APPLET CODE="KeyReleasedInAppletTest.class" WIDTH=200 HEIGHT=200></APPLET>
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/event/KeyEvent/KeyReleasedInAppletTest/KeyReleasedInAppletTest.java Wed Apr 17 21:32:11 2013 -0700
@@ -0,0 +1,235 @@
+/*
+ * Copyright (c) 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import javax.swing.*;
+import javax.swing.JLabel;
+import javax.swing.JTextArea;
+import java.awt.*;
+import java.awt.FileDialog;
+import java.awt.Label;
+import java.awt.event.*;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.io.FileWriter;
+import java.lang.*;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.System;
+import java.lang.Throwable;
+import java.util.Hashtable;
+
+/*
+@test
+@bug 8010009
+@summary [macosx] Unable type into online word games on MacOSX
+@author petr.pchelko : area=awt.keyboard
+@run clean *
+@run build TestApplet
+@run applet/manual=yesno KeyReleasedInAppletTest.html
+*/
+
+public class KeyReleasedInAppletTest extends JApplet {
+ private static final String TEST_HTML_NAME = "TestApplet.html";
+
+ public void init() {
+ //Create instructions for the user here, as well as set up
+ // the environment -- set the layout manager, add buttons,
+ // etc.
+ this.setLayout(new BorderLayout());
+
+ try {
+ String testFilePath = System.getProperty("test.classes");
+ FileWriter testHTML = null;
+ try {
+ testHTML = new FileWriter(testFilePath + "/" + TEST_HTML_NAME);
+ testHTML.write("<html>\n" +
+ "<head>\n" +
+ "<title>KeyReleasedInAppletTest </title>\n" +
+ "</head>\n" +
+ "<body>\n" +
+ "<h1>KeyReleasedInAppletTest<br>Bug ID:8010009 </h1>\n" +
+ "<p>Make sure the applet is focuced and type any character on the keyboard. <br>"+
+ "The applet should show keyPressed, keyTyped and keyReleased messages.</p>\n" +
+ "<APPLET CODE=\"TestApplet.class\" WIDTH=400 HEIGHT=200></APPLET>\n" +
+ "</body>");
+ } finally {
+ if (testHTML != null) {
+ testHTML.close();
+ }
+ }
+
+ String[] instructions =
+ {
+ "(1) Install the tested JDK to be used by the Java Plugin.\n",
+ "(2) Open Java Preferences and set security level to minimal.\n",
+ "(3) Open the " + TEST_HTML_NAME + " in Firefox in firefox web browser\n" +
+ " It is located at: " + testFilePath,
+ "(5) Continue the test according to the instructions in the applet.\n",
+ };
+ Sysout.createDialogWithInstructions(instructions);
+ } catch (Throwable e) {
+ //Fail the test.
+ throw new RuntimeException(e.getMessage());
+ }
+
+ }//End init()
+
+ public void start() {
+ }// start()
+}
+
+/* Place other classes related to the test after this line */
+
+/****************************************************
+ Standard Test Machinery
+ DO NOT modify anything below -- it's a standard
+ chunk of code whose purpose is to make user
+ interaction uniform, and thereby make it simpler
+ to read and understand someone else's test.
+ ****************************************************/
+
+/**
+ * This is part of the standard test machinery.
+ * It creates a dialog (with the instructions), and is the interface
+ * for sending text messages to the user.
+ * To print the instructions, send an array of strings to Sysout.createDialog
+ * WithInstructions method. Put one line of instructions per array entry.
+ * To display a message for the tester to see, simply call Sysout.println
+ * with the string to be displayed.
+ * This mimics System.out.println but works within the test harness as well
+ * as standalone.
+ */
+
+class Sysout {
+ private static TestDialog dialog;
+ private static boolean numbering = false;
+ private static int messageNumber = 0;
+
+ public static void createDialogWithInstructions(String[] instructions) {
+ dialog = new TestDialog(new Frame(), "Instructions");
+ dialog.printInstructions(instructions);
+ dialog.setVisible(true);
+ println("Any messages for the tester will display here.");
+ }
+
+ public static void createDialog() {
+ dialog = new TestDialog(new Frame(), "Instructions");
+ String[] defInstr = {"Instructions will appear here. ", ""};
+ dialog.printInstructions(defInstr);
+ dialog.setVisible(true);
+ println("Any messages for the tester will display here.");
+ }
+
+ /* Enables message counting for the tester. */
+ public static void enableNumbering(boolean enable) {
+ numbering = enable;
+ }
+
+ public static void printInstructions(String[] instructions) {
+ dialog.printInstructions(instructions);
+ }
+
+
+ public static void println(String messageIn) {
+ if (numbering) {
+ messageIn = "" + messageNumber + " " + messageIn;
+ messageNumber++;
+ }
+ dialog.displayMessage(messageIn);
+ }
+
+}// Sysout class
+
+/**
+ * This is part of the standard test machinery. It provides a place for the
+ * test instructions to be displayed, and a place for interactive messages
+ * to the user to be displayed.
+ * To have the test instructions displayed, see Sysout.
+ * To have a message to the user be displayed, see Sysout.
+ * Do not call anything in this dialog directly.
+ */
+class TestDialog extends Dialog {
+
+ TextArea instructionsText;
+ TextArea messageText;
+ int maxStringLength = 80;
+
+ //DO NOT call this directly, go through Sysout
+ public TestDialog(Frame frame, String name) {
+ super(frame, name);
+ int scrollBoth = TextArea.SCROLLBARS_BOTH;
+ instructionsText = new TextArea("", 15, maxStringLength, scrollBoth);
+ add("North", instructionsText);
+
+ messageText = new TextArea("", 5, maxStringLength, scrollBoth);
+ add("Center", messageText);
+
+ pack();
+
+ setVisible(true);
+ }// TestDialog()
+
+ //DO NOT call this directly, go through Sysout
+ public void printInstructions(String[] instructions) {
+ //Clear out any current instructions
+ instructionsText.setText("");
+
+ //Go down array of instruction strings
+
+ String printStr, remainingStr;
+ for (int i = 0; i < instructions.length; i++) {
+ //chop up each into pieces maxSringLength long
+ remainingStr = instructions[i];
+ while (remainingStr.length() > 0) {
+ //if longer than max then chop off first max chars to print
+ if (remainingStr.length() >= maxStringLength) {
+ //Try to chop on a word boundary
+ int posOfSpace = remainingStr.
+ lastIndexOf(' ', maxStringLength - 1);
+
+ if (posOfSpace <= 0) posOfSpace = maxStringLength - 1;
+
+ printStr = remainingStr.substring(0, posOfSpace + 1);
+ remainingStr = remainingStr.substring(posOfSpace + 1);
+ }
+ //else just print
+ else {
+ printStr = remainingStr;
+ remainingStr = "";
+ }
+
+ instructionsText.append(printStr + "\n");
+
+ }// while
+
+ }// for
+
+ }//printInstructions()
+
+ //DO NOT call this directly, go through Sysout
+ public void displayMessage(String messageIn) {
+ messageText.append(messageIn + "\n");
+ System.out.println(messageIn);
+ }
+
+}// TestDialog class
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/event/KeyEvent/KeyReleasedInAppletTest/TestApplet.java Wed Apr 17 21:32:11 2013 -0700
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.Color;
+import java.awt.Label;
+import java.awt.TextArea;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.lang.String;
+import java.lang.System;
+
+
+public class TestApplet extends JApplet {
+
+ public void init() {
+ final TextArea log = new TextArea("Events:\n");
+ log.setEditable(false);
+ log.setSize(400, 200);
+ this.add(log);
+ log.addKeyListener(
+ new KeyAdapter() {
+ @Override public void keyTyped(KeyEvent e) {
+ log.append("Key typed: char = " + e.getKeyChar() + "\n");
+ }
+
+ @Override public void keyPressed(KeyEvent e) {
+ log.append("Key pressed: char = " + e.getKeyChar() + " code = " + e.getKeyCode() + "\n");
+ }
+
+ @Override public void keyReleased(KeyEvent e) {
+ log.append("Key released: char = " + e.getKeyChar() + " code = " + e.getKeyCode() + "\n");
+ }
+ });
+ }
+
+ public void start() {
+ }
+
+ public void stop() {
+ }
+
+ public void destroy() {
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectBounds.java Wed Apr 17 21:32:11 2013 -0700
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.image.BufferedImage;
+import java.awt.image.VolatileImage;
+
+/**
+ * @test
+ * @bug 8000629
+ * @summary Temporary backbuffer in the DrawImage should not fill background
+ * outside of source image bounds.
+ * @author Sergey Bylokhov
+ */
+public final class IncorrectBounds {
+
+ private static final int width = 400;
+ private static final int height = 400;
+
+ public static void main(final String[] args) {
+ GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsConfiguration gc =
+ ge.getDefaultScreenDevice().getDefaultConfiguration();
+ VolatileImage vi = gc.createCompatibleVolatileImage(width / 4,
+ height / 4);
+ final BufferedImage bi = new BufferedImage(width, height,
+ BufferedImage.TYPE_INT_ARGB);
+ while (true) {
+ vi.validate(gc);
+ Graphics2D g2d = vi.createGraphics();
+ g2d.setColor(Color.green);
+ g2d.fillRect(0, 0, width / 4, height / 4);
+ g2d.dispose();
+
+ if (vi.validate(gc) != VolatileImage.IMAGE_OK) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ignored) {
+ }
+ continue;
+ }
+
+ Graphics2D g = bi.createGraphics();
+ g.setComposite(AlphaComposite.Src);
+ g.setColor(Color.red);
+ g.fillRect(0, 0, width, height);
+ // Use sx and sy outside of VI bounds.
+ g.drawImage(vi, 0, 0, width / 2, height / 2, 0, 0, width * 2,
+ height * 2, null);
+ g.dispose();
+
+ if (vi.contentsLost()) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ignored) {
+ }
+ continue;
+ }
+
+ for (int x = 0; x < width; ++x) {
+ for (int y = 0; y < height; ++y) {
+ if (x < width / 16 && y < height / 16) {
+ if (bi.getRGB(x, y) != Color.green.getRGB()) {
+ throw new RuntimeException("Test failed.");
+ }
+ } else {
+ if (bi.getRGB(x, y) != Color.red.getRGB()) {
+ throw new RuntimeException("Test failed.");
+ }
+ }
+ }
+ }
+ break;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/awt/image/DrawImage/IncorrectOffset.java Wed Apr 17 21:32:11 2013 -0700
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2013, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.awt.AlphaComposite;
+import java.awt.Color;
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.image.BufferedImage;
+import java.awt.image.VolatileImage;
+
+/**
+ * @test
+ * @bug 8000629
+ * @summary Temporary backbuffer in the DrawImage should have correct offset.
+ * @author Sergey Bylokhov
+ */
+public final class IncorrectOffset {
+
+ private static final int width = 400;
+ private static final int height = 400;
+
+ public static void main(final String[] args) {
+ GraphicsEnvironment ge =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsConfiguration gc =
+ ge.getDefaultScreenDevice().getDefaultConfiguration();
+ VolatileImage vi = gc.createCompatibleVolatileImage(width, height);
+ BufferedImage bi = new BufferedImage(width / 4, height / 4,
+ BufferedImage.TYPE_INT_ARGB);
+ while (true) {
+ vi.validate(gc);
+ Graphics2D g2d = vi.createGraphics();
+ g2d.setColor(Color.black);
+ g2d.fillRect(0, 0, width, height);
+ g2d.setColor(Color.green);
+ g2d.fillRect(width / 4, height / 4, width / 2, height / 2);
+ g2d.dispose();
+
+ if (vi.validate(gc) != VolatileImage.IMAGE_OK) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ignored) {
+ }
+ continue;
+ }
+
+ Graphics2D g = bi.createGraphics();
+ g.setComposite(AlphaComposite.Src);
+ // Scale part of VI to BI. Only green area should be copied.
+ g.drawImage(vi, 0, 0, width / 4, height / 4, width / 4, height / 4,
+ width / 4 + width / 2, height / 4 + height / 2, null);
+ g.dispose();
+
+ if (vi.contentsLost()) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ignored) {
+ }
+ continue;
+ }
+
+ for (int x = 0; x < width / 4; ++x) {
+ for (int y = 0; y < height / 4; ++y) {
+ if (bi.getRGB(x, y) != Color.green.getRGB()) {
+ throw new RuntimeException("Test failed.");
+ }
+ }
+ }
+ break;
+ }
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/beans/Introspector/Test4683761.java Wed Apr 17 21:32:11 2013 -0700
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2012, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4683761
+ * @summary Tests that all public methods in a public class
+ * @author Sergey Malenkov
+ */
+
+import java.beans.PropertyDescriptor;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Test4683761 {
+ public static void main(String[] args) throws Exception {
+ System.setSecurityManager(new SecurityManager());
+ Map<String, String> map = new HashMap<String, String>();
+ map.put("key", "value");
+ Map.Entry<String, String> entry = map.entrySet().iterator().next();
+ for (PropertyDescriptor pd : BeanUtils.getPropertyDescriptors(entry.getClass())) {
+ System.out.println(pd.getName() + " = " + pd.getReadMethod().invoke(entry));
+ }
+ }
+}