< prev index next >

src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2011, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2016, 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

@@ -31,78 +31,53 @@
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
 
 import sun.awt.CGraphicsConfig;
 import sun.awt.CGraphicsEnvironment;
-import sun.java2d.metal.MetalLayer;
-import sun.java2d.metal.MetalSurfaceData;
+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;
-import sun.java2d.NullSurfaceData;
-
 
 public class CPlatformView extends CFRetainedResource {
     private native long nativeCreateView(int x, int y, int width, int height, long windowLayerPtr);
     private static native void nativeSetAutoResizable(long awtView, boolean toResize);
     private static native int nativeGetNSViewDisplayID(long awtView);
     private static native Rectangle2D nativeGetLocationOnScreen(long awtView);
     private static native boolean nativeIsViewUnderMouse(long ptr);
 
     private LWWindowPeer peer;
     private SurfaceData surfaceData;
-    private CGLLayer windowLayer;
-    private MetalLayer windowMetalLayer; //hack : will be null if opengl is used
-    //private CFRetainedResource windowLayer;
-    //Todo: Have to verify how we can replace CGL layer with more common CFRetaindedResource
+    private CFRetainedResource windowLayer;
     private CPlatformResponder responder;
 
     public CPlatformView() {
         super(0, true);
     }
 
-    
     public void initialize(LWWindowPeer peer, CPlatformResponder responder) {
         initializeBase(peer, responder);
 
         if (!LWCToolkit.getSunAwtDisableCALayers()) {
-            
-            if (isMetalSystemProperty()) {
-                this.windowMetalLayer = createMetalLayer();
-            } else {
-                this.windowLayer = createCGLayer();
-            }
+            this.windowLayer = MacOSFlags.isMetalEnabled()? createMTLLayer() : createCGLayer();
         }
         setPtr(nativeCreateView(0, 0, 0, 0, getWindowLayerPtr()));
-
-        // TODO : We should not simply validate view directly here.
-        //if (isMetalSystemProperty()) {
-            //windowMetalLayer.validate(getAWTView());
-        //}
-    }
-    
-    private boolean isMetalSystemProperty() {
-        String str = System.getProperty("sun.java2d.metal");
-        
-        if (str != null) {
-            System.out.println("Property : sun.java2d.metal=" + str);
-            if (str.equals("true")) {
-                return true;
-            }
-        }
-        return false;
     }
     
     public CGLLayer createCGLayer() {
         return new CGLLayer(peer);
     }
 
-    public MetalLayer createMetalLayer() {
-        return new MetalLayer(peer);
+    public MTLLayer createMTLLayer() {
+        return new MTLLayer(peer);
     }
+
+
     protected void initializeBase(LWWindowPeer peer, CPlatformResponder responder) {
         this.peer = peer;
         this.responder = responder;
     }
 

@@ -118,15 +93,10 @@
      * All coordinates passed to the method should be based on the origin being in the bottom-left corner (standard
      * Cocoa coordinates).
      */
     public void setBounds(int x, int y, int width, int height) {
         execute(ptr->CWrapper.NSView.setFrame(ptr, x, y, width, height));
-
-        // TODO : Check the use case that why below code is added.
-        //if (windowMetalLayer != null) {
-                //windowMetalLayer.validate(getAWTView());
-            //}
     }
 
     // REMIND: CGLSurfaceData expects top-level's size
     public Rectangle getBounds() {
         return peer.getBounds();

@@ -143,24 +113,14 @@
     // ----------------------------------------------------------------------
     // PAINTING METHODS
     // ----------------------------------------------------------------------
     public SurfaceData replaceSurfaceData() {
         if (!LWCToolkit.getSunAwtDisableCALayers()) {
-            
-            if (isMetalSystemProperty()) {
-                surfaceData = windowMetalLayer.replaceSurfaceData();
-
-                // TODO : Why we are checking about NullSurfaceData here
-                //if (surfaceData != NullSurfaceData.theInstance) {
-                    //validateSurface();
-                    //windowMetalLayer.drawInMetalContext(getAWTView());
-                //}
-        
-            } else {
-                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 {

@@ -169,19 +129,15 @@
         }
         return surfaceData;
     }
 
     private void validateSurface() {
-
         if (surfaceData != null) {
-            // TODO : Why we are validating with View here
-            if (isMetalSystemProperty()) {
-                //((MetalSurfaceData)surfaceData).validate();
-                //windowMetalLayer.validate(getAWTView());
-                ((MetalSurfaceData)surfaceData).validate();
+            if (MacOSFlags.isMetalEnabled()) {
+                ((MTLSurfaceData) surfaceData).validate();
             } else {
-                ((CGLSurfaceData)surfaceData).validate();
+                ((CGLSurfaceData) surfaceData).validate();
             }
         }
     }
 
     public GraphicsConfiguration getGraphicsConfiguration() {

@@ -193,26 +149,20 @@
     }
 
     @Override
     public void dispose() {
         if (!LWCToolkit.getSunAwtDisableCALayers()) {
-            if (isMetalSystemProperty()) {
-                windowMetalLayer.dispose();
-            } else {
                 windowLayer.dispose();
             }
-        }
         super.dispose();
     }
 
     public long getWindowLayerPtr() {
         if (!LWCToolkit.getSunAwtDisableCALayers()) {
-            if (isMetalSystemProperty()) {
-                return windowMetalLayer.getPointer();
-            } else {
-                return windowLayer.getPointer();
-            }
+            return MacOSFlags.isMetalEnabled() ?
+                    ((MTLLayer)windowLayer).getPointer() :
+                    ((CGLLayer)windowLayer).getPointer();
         } else {
             return 0;
         }
     }
 
< prev index next >