1 /* 2 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.java2d.macos; 27 28 import java.security.PrivilegedAction; 29 30 public class MacOSFlags { 31 32 /** 33 * Description of command-line flags. All flags with [true|false] 34 * values 35 * metalEnabled: usage: "-Djb.java2d.metal=[true|false]" 36 */ 37 38 private static boolean metalEnabled; 39 40 static { 41 initJavaFlags(); 42 initNativeFlags(); 43 } 44 45 private static native boolean initNativeFlags(); 46 47 private static boolean getBooleanProp(String p, boolean defaultVal) { 48 String propString = System.getProperty(p); 49 boolean returnVal = defaultVal; 50 if (propString != null) { 51 if (propString.equals("true") || 52 propString.equals("t") || 53 propString.equals("True") || 54 propString.equals("T") || 55 propString.equals("")) // having the prop name alone 56 { // is equivalent to true 57 returnVal = true; 58 } else if (propString.equals("false") || 59 propString.equals("f") || 60 propString.equals("False") || 61 propString.equals("F")) 62 { 63 returnVal = false; 64 } 65 } 66 return returnVal; 67 } 68 69 70 private static boolean getPropertySet(String p) { 71 String propString = System.getProperty(p); 72 return (propString != null) ? true : false; 73 } 74 75 private static void initJavaFlags() { 76 java.security.AccessController.doPrivileged( 77 (PrivilegedAction<Object>) () -> { 78 metalEnabled = getBooleanProp("jb.java2d.metal", false); 79 return null; 80 }); 81 } 82 83 public static boolean isMetalEnabled() { 84 return metalEnabled; 85 } 86 }