/
githubmirror
/
galahad
Обзор
Документация
Войти
/
githubmirror
/
galahad
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/java.desktop/macosx/classes/sun/java2d/MacOSFlags.java
149 строк
5 KB
Sergey Bylokhov
8358468: Enhance code consistency: java.desktop/macos
15 июл 2025, 23:28
15 июл 2025, 23:28
6fc032d
Код
Авторство
О чём код?
/* * Copyright (c) 2019, 2024, 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.java2d; import sun.java2d.metal.MTLGraphicsConfig; import sun.java2d.opengl.CGLGraphicsConfig; public final class MacOSFlags { /** * Description of command-line flags. All flags with [true|false] * values * metalEnabled: usage: "-Dsun.java2d.metal=[true|false]" */ private static boolean oglEnabled; private static boolean oglVerbose; private static boolean metalEnabled; private static boolean metalVerbose; private enum PropertyState {ENABLED, DISABLED, UNSPECIFIED} static { initJavaFlags(); } private static PropertyState getBooleanProp(String p, PropertyState defaultVal) { String propString = System.getProperty(p); PropertyState returnVal = defaultVal; if (propString != null) { if (propString.equals("true") || propString.equals("t") || propString.equals("True") || propString.equals("T") || propString.equals("")) // having the prop name alone { // is equivalent to true returnVal = PropertyState.ENABLED; } else if (propString.equals("false") || propString.equals("f") || propString.equals("False") || propString.equals("F")) { returnVal = PropertyState.DISABLED; } } return returnVal; } private static boolean isBooleanPropTrueVerbose(String p) { String propString = System.getProperty(p); if (propString != null) { if (propString.equals("True") || propString.equals("T")) { return true; } } return false; } private static void initJavaFlags() { PropertyState oglState = getBooleanProp("sun.java2d.opengl", PropertyState.UNSPECIFIED); PropertyState metalState = getBooleanProp("sun.java2d.metal", PropertyState.UNSPECIFIED); // Handle invalid combinations to use the default rendering pipeline // The default rendering pipeline is Metal if ((oglState == PropertyState.UNSPECIFIED && metalState == PropertyState.UNSPECIFIED) || (oglState == PropertyState.DISABLED && metalState == PropertyState.DISABLED) || (oglState == PropertyState.ENABLED && metalState == PropertyState.ENABLED)) { metalState = PropertyState.ENABLED; // Enable default pipeline oglState = PropertyState.DISABLED; // Disable non-default pipeline } if (metalState == PropertyState.UNSPECIFIED) { if (oglState == PropertyState.DISABLED) { oglEnabled = false; metalEnabled = true; } else { oglEnabled = true; metalEnabled = false; } } else if (metalState == PropertyState.ENABLED) { oglEnabled = false; metalEnabled = true; } else if (metalState == PropertyState.DISABLED) { oglEnabled = true; metalEnabled = false; } oglVerbose = isBooleanPropTrueVerbose("sun.java2d.opengl"); metalVerbose = isBooleanPropTrueVerbose("sun.java2d.metal"); if (oglEnabled && !metalEnabled) { // Check whether OGL is available if (!CGLGraphicsConfig.isCGLAvailable()) { if (oglVerbose) { System.out.println("Could not enable OpenGL pipeline (CGL not available)"); } oglEnabled = false; metalEnabled = true; } } // At this point one of the rendering pipeline must be enabled. if (!metalEnabled && !oglEnabled) { throw new InternalError("Error - unable to initialize any rendering pipeline."); } } public static boolean isMetalEnabled() { return metalEnabled; } public static boolean isMetalVerbose() { return metalVerbose; } public static boolean isOGLEnabled() { return oglEnabled; } public static boolean isOGLVerbose() { return oglVerbose; } }