Print this page
Added gradle and cmake project

Split Close
Expand all
Collapse all
          --- old/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java
          +++ new/src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java
↓ open down ↓ 25 lines elided ↑ open up ↑
  26   26  package sun.lwawt.macosx;
  27   27  
  28   28  import java.awt.*;
  29   29  import java.awt.geom.Rectangle2D;
  30   30  import java.util.concurrent.atomic.AtomicBoolean;
  31   31  import java.util.concurrent.atomic.AtomicInteger;
  32   32  import java.util.concurrent.atomic.AtomicReference;
  33   33  
  34   34  import sun.awt.CGraphicsConfig;
  35   35  import sun.awt.CGraphicsEnvironment;
       36 +import sun.java2d.macos.MacOSFlags;
       37 +import sun.java2d.metal.MTLLayer;
       38 +import sun.java2d.metal.MTLSurfaceData;
  36   39  import sun.lwawt.LWWindowPeer;
  37   40  
  38   41  import sun.java2d.SurfaceData;
  39   42  import sun.java2d.opengl.CGLLayer;
  40   43  import sun.java2d.opengl.CGLSurfaceData;
  41   44  
  42   45  public class CPlatformView extends CFRetainedResource {
  43   46      private native long nativeCreateView(int x, int y, int width, int height, long windowLayerPtr);
  44   47      private static native void nativeSetAutoResizable(long awtView, boolean toResize);
  45   48      private static native int nativeGetNSViewDisplayID(long awtView);
  46   49      private static native Rectangle2D nativeGetLocationOnScreen(long awtView);
  47   50      private static native boolean nativeIsViewUnderMouse(long ptr);
  48   51  
  49   52      private LWWindowPeer peer;
  50   53      private SurfaceData surfaceData;
  51      -    private CGLLayer windowLayer;
       54 +    private CFRetainedResource windowLayer;
  52   55      private CPlatformResponder responder;
  53   56  
  54   57      public CPlatformView() {
  55   58          super(0, true);
  56   59      }
  57   60  
  58   61      public void initialize(LWWindowPeer peer, CPlatformResponder responder) {
  59   62          initializeBase(peer, responder);
  60   63  
  61   64          if (!LWCToolkit.getSunAwtDisableCALayers()) {
  62      -            this.windowLayer = createCGLayer();
       65 +            this.windowLayer = MacOSFlags.isMetalEnabled()? createMTLLayer() : createCGLayer();
  63   66          }
  64   67          setPtr(nativeCreateView(0, 0, 0, 0, getWindowLayerPtr()));
  65   68      }
  66   69  
  67   70      public CGLLayer createCGLayer() {
  68   71          return new CGLLayer(peer);
  69   72      }
  70   73  
       74 +    public MTLLayer createMTLLayer() {
       75 +        return new MTLLayer(peer);
       76 +    }
       77 +
       78 +
  71   79      protected void initializeBase(LWWindowPeer peer, CPlatformResponder responder) {
  72   80          this.peer = peer;
  73   81          this.responder = responder;
  74   82      }
  75   83  
  76   84      public long getAWTView() {
  77   85          return ptr;
  78   86      }
  79   87  
  80   88      public boolean isOpaque() {
↓ open down ↓ 19 lines elided ↑ open up ↑
 100  108  
 101  109      public void setToolTip(String msg) {
 102  110          execute(ptr -> CWrapper.NSView.setToolTip(ptr, msg));
 103  111      }
 104  112  
 105  113      // ----------------------------------------------------------------------
 106  114      // PAINTING METHODS
 107  115      // ----------------------------------------------------------------------
 108  116      public SurfaceData replaceSurfaceData() {
 109  117          if (!LWCToolkit.getSunAwtDisableCALayers()) {
 110      -            surfaceData = windowLayer.replaceSurfaceData();
      118 +            surfaceData = (MacOSFlags.isMetalEnabled()) ?
      119 +                    ((MTLLayer)windowLayer).replaceSurfaceData() :
      120 +                    ((CGLLayer)windowLayer).replaceSurfaceData()
      121 +            ;
 111  122          } else {
 112  123              if (surfaceData == null) {
 113  124                  CGraphicsConfig graphicsConfig = (CGraphicsConfig)getGraphicsConfiguration();
 114  125                  surfaceData = graphicsConfig.createSurfaceData(this);
 115  126              } else {
 116  127                  validateSurface();
 117  128              }
 118  129          }
 119  130          return surfaceData;
 120  131      }
 121  132  
 122  133      private void validateSurface() {
 123  134          if (surfaceData != null) {
 124      -            ((CGLSurfaceData)surfaceData).validate();
      135 +            if (MacOSFlags.isMetalEnabled()) {
      136 +                ((MTLSurfaceData) surfaceData).validate();
      137 +            } else {
      138 +                ((CGLSurfaceData) surfaceData).validate();
      139 +            }
 125  140          }
 126  141      }
 127  142  
 128  143      public GraphicsConfiguration getGraphicsConfiguration() {
 129  144          return peer.getGraphicsConfiguration();
 130  145      }
 131  146  
 132  147      public SurfaceData getSurfaceData() {
 133  148          return surfaceData;
 134  149      }
↓ open down ↓ 1 lines elided ↑ open up ↑
 136  151      @Override
 137  152      public void dispose() {
 138  153          if (!LWCToolkit.getSunAwtDisableCALayers()) {
 139  154              windowLayer.dispose();
 140  155          }
 141  156          super.dispose();
 142  157      }
 143  158  
 144  159      public long getWindowLayerPtr() {
 145  160          if (!LWCToolkit.getSunAwtDisableCALayers()) {
 146      -            return windowLayer.getPointer();
      161 +            return MacOSFlags.isMetalEnabled() ?
      162 +                    ((MTLLayer)windowLayer).getPointer() :
      163 +                    ((CGLLayer)windowLayer).getPointer();
 147  164          } else {
 148  165              return 0;
 149  166          }
 150  167      }
 151  168  
 152  169      public void setAutoResizable(boolean toResize) {
 153  170          execute(ptr -> nativeSetAutoResizable(ptr, toResize));
 154  171      }
 155  172  
 156  173      public boolean isUnderMouse() {
↓ open down ↓ 79 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX