< prev index next >
src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java
Print this page
rev 55352 : JB_base_webrev
@@ -31,10 +31,13 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import sun.awt.CGraphicsConfig;
import sun.awt.CGraphicsEnvironment;
+import sun.java2d.macos.MacOSFlags;
+import sun.java2d.metal.MTLLayer;
+import sun.java2d.metal.MTLSurfaceData;
import sun.lwawt.LWWindowPeer;
import sun.java2d.SurfaceData;
import sun.java2d.opengl.CGLLayer;
import sun.java2d.opengl.CGLSurfaceData;
@@ -46,30 +49,35 @@
private static native Rectangle2D nativeGetLocationOnScreen(long awtView);
private static native boolean nativeIsViewUnderMouse(long ptr);
private LWWindowPeer peer;
private SurfaceData surfaceData;
- private CGLLayer windowLayer;
+ private CFRetainedResource windowLayer;
private CPlatformResponder responder;
public CPlatformView() {
super(0, true);
}
public void initialize(LWWindowPeer peer, CPlatformResponder responder) {
initializeBase(peer, responder);
if (!LWCToolkit.getSunAwtDisableCALayers()) {
- this.windowLayer = createCGLayer();
+ this.windowLayer = MacOSFlags.isMetalEnabled()? createMTLLayer() : createCGLayer();
}
setPtr(nativeCreateView(0, 0, 0, 0, getWindowLayerPtr()));
}
public CGLLayer createCGLayer() {
return new CGLLayer(peer);
}
+ public MTLLayer createMTLLayer() {
+ return new MTLLayer(peer);
+ }
+
+
protected void initializeBase(LWWindowPeer peer, CPlatformResponder responder) {
this.peer = peer;
this.responder = responder;
}
@@ -105,11 +113,14 @@
// ----------------------------------------------------------------------
// PAINTING METHODS
// ----------------------------------------------------------------------
public SurfaceData replaceSurfaceData() {
if (!LWCToolkit.getSunAwtDisableCALayers()) {
- surfaceData = windowLayer.replaceSurfaceData();
+ surfaceData = (MacOSFlags.isMetalEnabled()) ?
+ ((MTLLayer)windowLayer).replaceSurfaceData() :
+ ((CGLLayer)windowLayer).replaceSurfaceData()
+ ;
} else {
if (surfaceData == null) {
CGraphicsConfig graphicsConfig = (CGraphicsConfig)getGraphicsConfiguration();
surfaceData = graphicsConfig.createSurfaceData(this);
} else {
@@ -119,11 +130,15 @@
return surfaceData;
}
private void validateSurface() {
if (surfaceData != null) {
- ((CGLSurfaceData)surfaceData).validate();
+ if (MacOSFlags.isMetalEnabled()) {
+ ((MTLSurfaceData) surfaceData).validate();
+ } else {
+ ((CGLSurfaceData) surfaceData).validate();
+ }
}
}
public GraphicsConfiguration getGraphicsConfiguration() {
return peer.getGraphicsConfiguration();
@@ -141,11 +156,13 @@
super.dispose();
}
public long getWindowLayerPtr() {
if (!LWCToolkit.getSunAwtDisableCALayers()) {
- return windowLayer.getPointer();
+ return MacOSFlags.isMetalEnabled() ?
+ ((MTLLayer)windowLayer).getPointer() :
+ ((CGLLayer)windowLayer).getPointer();
} else {
return 0;
}
}
< prev index next >