--- old/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java 2019-06-19 14:01:55.000000000 +0530 +++ new/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java 2019-06-19 14:01:55.000000000 +0530 @@ -1,5 +1,5 @@ /* - * 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 @@ -33,15 +33,14 @@ 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); @@ -52,55 +51,31 @@ 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; @@ -120,11 +95,6 @@ */ 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 @@ -145,20 +115,10 @@ // ---------------------------------------------------------------------- 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(); @@ -171,15 +131,11 @@ } 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(); } } } @@ -195,22 +151,16 @@ @Override public void dispose() { if (!LWCToolkit.getSunAwtDisableCALayers()) { - if (isMetalSystemProperty()) { - windowMetalLayer.dispose(); - } else { - windowLayer.dispose(); - } + 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; } @@ -278,18 +228,18 @@ if (event.getType() == CocoaConstants.NSScrollWheel) { responder.handleScrollEvent(x, y, absX, absY, event.getModifierFlags(), - event.getScrollDeltaX(), event.getScrollDeltaY(), - event.getScrollPhase()); + event.getScrollDeltaX(), event.getScrollDeltaY(), + event.getScrollPhase()); } else { responder.handleMouseEvent(event.getType(), event.getModifierFlags(), event.getButtonNumber(), - event.getClickCount(), x, y, - absX, absY); + event.getClickCount(), x, y, + absX, absY); } } private void deliverKeyEvent(NSEvent event) { responder.handleKeyEvent(event.getType(), event.getModifierFlags(), event.getCharacters(), - event.getCharactersIgnoringModifiers(), event.getKeyCode(), true, false); + event.getCharactersIgnoringModifiers(), event.getKeyCode(), true, false); } /**