From a7e3643a2c5148c8102a43ffae1c1d6c2fecdac0 Mon Sep 17 00:00:00 2001 From: jayathirthrao Date: Thu, 11 Feb 2021 15:41:32 +0530 Subject: [PATCH 1/2] Initial change --- .../classes/sun/java2d/metal/MTLLayer.java | 14 +---- .../classes/sun/java2d/opengl/CGLLayer.java | 14 +---- .../classes/sun/lwawt/macosx/CFLayer.java | 52 +++++++++++++++++++ .../lwawt/macosx/CPlatformEmbeddedFrame.java | 28 +++------- .../sun/lwawt/macosx/CPlatformView.java | 12 ++--- 5 files changed, 66 insertions(+), 54 deletions(-) create mode 100644 src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java diff --git a/src/java.desktop/macosx/classes/sun/java2d/metal/MTLLayer.java b/src/java.desktop/macosx/classes/sun/java2d/metal/MTLLayer.java index 383d95de2e0..12387e7f3c9 100644 --- a/src/java.desktop/macosx/classes/sun/java2d/metal/MTLLayer.java +++ b/src/java.desktop/macosx/classes/sun/java2d/metal/MTLLayer.java @@ -28,14 +28,14 @@ import sun.java2d.NullSurfaceData; import sun.java2d.SurfaceData; import sun.lwawt.LWWindowPeer; -import sun.lwawt.macosx.CFRetainedResource; +import sun.lwawt.macosx.CFLayer; import java.awt.GraphicsConfiguration; import java.awt.Insets; import java.awt.Rectangle; import java.awt.Transparency; -public class MTLLayer extends CFRetainedResource { +public class MTLLayer extends CFLayer { private native long nativeCreateLayer(); private static native void nativeSetScale(long layerPtr, double scale); @@ -48,8 +48,6 @@ public class MTLLayer extends CFRetainedResource { private LWWindowPeer peer; private int scale = 1; - private SurfaceData surfaceData; // represents intermediate buffer (texture) - public MTLLayer(LWWindowPeer peer) { super(0, true); @@ -57,10 +55,6 @@ public MTLLayer(LWWindowPeer peer) { this.peer = peer; } - public long getPointer() { - return ptr; - } - public Rectangle getBounds() { return peer.getBounds(); } @@ -103,10 +97,6 @@ public SurfaceData replaceSurfaceData() { return surfaceData; } - public SurfaceData getSurfaceData() { - return surfaceData; - } - public void validate(final MTLSurfaceData cglsd) { MTLRenderQueue rq = MTLRenderQueue.getInstance(); rq.lock(); diff --git a/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLLayer.java b/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLLayer.java index 56dd747bcf6..a54f2b642ff 100644 --- a/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLLayer.java +++ b/src/java.desktop/macosx/classes/sun/java2d/opengl/CGLLayer.java @@ -33,9 +33,9 @@ import sun.java2d.NullSurfaceData; import sun.java2d.SurfaceData; import sun.lwawt.LWWindowPeer; -import sun.lwawt.macosx.CFRetainedResource; +import sun.lwawt.macosx.CFLayer; -public class CGLLayer extends CFRetainedResource { +public class CGLLayer extends CFLayer { private native long nativeCreateLayer(); private static native void nativeSetScale(long layerPtr, double scale); @@ -45,8 +45,6 @@ public class CGLLayer extends CFRetainedResource { private LWWindowPeer peer; private int scale = 1; - private SurfaceData surfaceData; // represents intermediate buffer (texture) - public CGLLayer(LWWindowPeer peer) { super(0, true); @@ -54,10 +52,6 @@ public CGLLayer(LWWindowPeer peer) { this.peer = peer; } - public long getPointer() { - return ptr; - } - public Rectangle getBounds() { return peer.getBounds(); } @@ -98,10 +92,6 @@ public SurfaceData replaceSurfaceData() { return surfaceData; } - public SurfaceData getSurfaceData() { - return surfaceData; - } - public void validate(final CGLSurfaceData cglsd) { OGLRenderQueue rq = OGLRenderQueue.getInstance(); rq.lock(); diff --git a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java new file mode 100644 index 00000000000..5eb0830788d --- /dev/null +++ b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2011, 2017, 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. + */ + +package sun.lwawt.macosx; + +import sun.java2d.SurfaceData; +import sun.java2d.NullSurfaceData; + +public abstract class CFLayer extends CFRetainedResource { + protected SurfaceData surfaceData; // represents intermediate buffer (texture) + + protected CFLayer(long ptr, boolean disposeOnAppKitThread) { + super(ptr, disposeOnAppKitThread); + } + + public abstract SurfaceData replaceSurfaceData(); + + @Override + public void dispose() { + super.dispose(); + } + + public long getPointer() { + return ptr; + } + + public SurfaceData getSurfaceData() { + return surfaceData; + } +} diff --git a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java index a65cb25f635..72fe894db46 100644 --- a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java +++ b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformEmbeddedFrame.java @@ -32,9 +32,9 @@ import sun.java2d.SurfaceData; import sun.java2d.metal.MTLLayer; import sun.java2d.opengl.CGLLayer; +import sun.lwawt.macosx.CFLayer; import sun.lwawt.LWWindowPeer; import sun.lwawt.PlatformWindow; -import sun.lwawt.macosx.CFRetainedResource; import sun.util.logging.PlatformLogger; @@ -46,7 +46,7 @@ public class CPlatformEmbeddedFrame implements PlatformWindow { private static final PlatformLogger focusLogger = PlatformLogger.getLogger( "sun.lwawt.macosx.focus.CPlatformEmbeddedFrame"); - private CFRetainedResource windowLayer; + private CFLayer windowLayer; private LWWindowPeer peer; private CEmbeddedFrame target; @@ -71,20 +71,12 @@ public LWWindowPeer getPeer() { @Override public long getLayerPtr() { - if (CGraphicsDevice.usingMetalPipeline()) { - return ((MTLLayer)windowLayer).getPointer(); - } else { - return ((CGLLayer)windowLayer).getPointer(); - } + return windowLayer.getPointer(); } @Override public void dispose() { - if (CGraphicsDevice.usingMetalPipeline()) { - ((MTLLayer)windowLayer).dispose(); - } else { - ((CGLLayer)windowLayer).dispose(); - } + windowLayer.dispose(); } @Override @@ -115,20 +107,12 @@ public FontMetrics getFontMetrics(Font f) { @Override public SurfaceData getScreenSurface() { - if ( CGraphicsDevice.usingMetalPipeline()) { - return ((MTLLayer)windowLayer).getSurfaceData(); - } else { - return ((CGLLayer)windowLayer).getSurfaceData(); - } + return windowLayer.getSurfaceData(); } @Override public SurfaceData replaceSurfaceData() { - if (CGraphicsDevice.usingMetalPipeline()) { - return ((MTLLayer)windowLayer).replaceSurfaceData(); - } else { - return ((CGLLayer)windowLayer).replaceSurfaceData(); - } + return windowLayer.replaceSurfaceData(); } @Override diff --git a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java index 039e4f3f664..f2e5e18d42b 100644 --- a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java +++ b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java @@ -41,6 +41,7 @@ import sun.java2d.SurfaceData; import sun.java2d.opengl.CGLLayer; +import sun.lwawt.macosx.CFLayer; public class CPlatformView extends CFRetainedResource { private native long nativeCreateView(int x, int y, int width, int height, long windowLayerPtr); @@ -51,7 +52,7 @@ public class CPlatformView extends CFRetainedResource { private LWWindowPeer peer; private SurfaceData surfaceData; - private CFRetainedResource windowLayer; + private CFLayer windowLayer; private CPlatformResponder responder; public CPlatformView() { @@ -104,10 +105,7 @@ public void setToolTip(String msg) { // PAINTING METHODS // ---------------------------------------------------------------------- public SurfaceData replaceSurfaceData() { - surfaceData = (CGraphicsDevice.usingMetalPipeline()) ? - ((MTLLayer)windowLayer).replaceSurfaceData() : - ((CGLLayer)windowLayer).replaceSurfaceData() - ; + surfaceData = windowLayer.replaceSurfaceData(); return surfaceData; } @@ -122,9 +120,7 @@ public void dispose() { } public long getWindowLayerPtr() { - return CGraphicsDevice.usingMetalPipeline() ? - ((MTLLayer)windowLayer).getPointer() : - ((CGLLayer)windowLayer).getPointer(); + return windowLayer.getPointer(); } public void setAutoResizable(boolean toResize) { From f7d3d0767fa7fec21d1f26847c5326c3f4ee5402 Mon Sep 17 00:00:00 2001 From: jayathirthrao Date: Thu, 11 Feb 2021 16:15:37 +0530 Subject: [PATCH 2/2] Update copyright year --- .../macosx/classes/sun/lwawt/macosx/CFLayer.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java index 5eb0830788d..6c2eb5e0898 100644 --- a/src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java +++ b/src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2021, 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 @@ -28,6 +28,9 @@ import sun.java2d.SurfaceData; import sun.java2d.NullSurfaceData; +/** + * Common layer class between OpenGl and Metal. + */ public abstract class CFLayer extends CFRetainedResource { protected SurfaceData surfaceData; // represents intermediate buffer (texture)