Print this page
rev 54883 : JDK-8220154 Improve java2d rendering performance on macOS by using Metal framework

Split Close
Expand all
Collapse all
          --- old/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m
          +++ new/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m
↓ open down ↓ 29 lines elided ↑ open up ↑
  30   30  #import "JavaComponentAccessibility.h"
  31   31  #import "JavaTextAccessibility.h"
  32   32  #import "JavaAccessibilityUtilities.h"
  33   33  #import "GeomUtilities.h"
  34   34  #import "OSVersion.h"
  35   35  #import "ThreadUtilities.h"
  36   36  
  37   37  #import <Carbon/Carbon.h>
  38   38  #import <JavaNativeFoundation/JavaNativeFoundation.h>
  39   39  
       40 +jboolean metalEnabled = JNI_FALSE;
       41 +
  40   42  @interface AWTView()
  41   43  @property (retain) CDropTarget *_dropTarget;
  42   44  @property (retain) CDragSource *_dragSource;
  43   45  
  44   46  -(void) deliverResize: (NSRect) rect;
  45   47  -(void) resetTrackingArea;
  46   48  -(void) deliverJavaKeyEventHelper: (NSEvent*) event;
  47   49  -(BOOL) isCodePointInUnicodeBlockNeedingIMEvent: (unichar) codePoint;
  48   50  -(NSMutableString *) parseString : (id) complexString;
  49   51  @end
  50   52  
  51   53  // Uncomment this line to see fprintfs of each InputMethod API being called on this View
  52   54  //#define IM_DEBUG TRUE
  53   55  //#define EXTRA_DEBUG
  54   56  
       57 +#define METAL_DEBUG
       58 +
  55   59  static BOOL shouldUsePressAndHold() {
  56   60      static int shouldUsePressAndHold = -1;
  57   61      if (shouldUsePressAndHold != -1) return shouldUsePressAndHold;
  58   62      shouldUsePressAndHold = !isSnowLeopardOrLower();
  59   63      return shouldUsePressAndHold;
  60   64  }
  61   65  
  62   66  @implementation AWTView
  63   67  
  64   68  @synthesize _dropTarget;
↓ open down ↓ 1405 lines elided ↑ open up ↑
1470 1474      [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
1471 1475          NSPoint ptWindowCoords = [[nsView window] mouseLocationOutsideOfEventStream];
1472 1476          NSPoint ptViewCoords = [nsView convertPoint:ptWindowCoords fromView:nil];
1473 1477          underMouse = [nsView hitTest:ptViewCoords] != nil;
1474 1478      }];
1475 1479  
1476 1480      JNF_COCOA_EXIT(env);
1477 1481  
1478 1482      return underMouse;
1479 1483  }
     1484 +
     1485 +jboolean GetStaticBoolean(JNIEnv *env, jclass fClass, const char *fieldName)
     1486 +{
     1487 +    jfieldID fieldID = (*env)->GetStaticFieldID(env, fClass, fieldName, "Z");
     1488 +    return (*env)->GetStaticBooleanField(env, fClass, fieldID);
     1489 +}
     1490 +
     1491 +JNIEXPORT void JNICALL
     1492 +Java_sun_java2d_macos_MacOSFlags_initNativeFlags(JNIEnv *env,
     1493 +                                                     jclass flagsClass)
     1494 +{
     1495 +  metalEnabled = GetStaticBoolean(env, flagsClass, "metalEnabled");
     1496 +#ifdef METAL_DEBUG
     1497 +  fprintf(stderr, "metalEnabled=%d\n", metalEnabled);
     1498 +#endif
     1499 +}
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX