< prev index next >

src/java.desktop/windows/native/libawt/java2d/windows/WindowsFlags.cpp

Print this page




  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 #include <awt.h>
  27 #include "Trace.h"
  28 #include "WindowsFlags.h"
  29 
  30 BOOL      accelReset;         // reset registry 2d acceleration settings
  31 BOOL      useD3D = TRUE;      // d3d enabled flag
  32                               // initially is TRUE to allow D3D preloading
  33 BOOL      forceD3DUsage;      // force d3d on or off
  34 jboolean  g_offscreenSharing; // JAWT accelerated surface sharing
  35 BOOL      checkRegistry;      // Diagnostic tool: outputs 2d registry settings
  36 BOOL      disableRegistry;    // Diagnostic tool: disables registry interaction
  37 BOOL      setHighDPIAware;    // Whether to set the high-DPI awareness flag
  38 
  39 extern WCHAR *j2dAccelKey;       // Name of java2d root key
  40 extern WCHAR *j2dAccelDriverKey; // Name of j2d per-device key
  41 
  42 static jfieldID d3dEnabledID;
  43 static jfieldID d3dSetID;
  44 static jclass   wFlagsClassID;
  45 
  46 void SetIDs(JNIEnv *env, jclass wFlagsClass)
  47 {
  48     wFlagsClassID = (jclass)env->NewGlobalRef(wFlagsClass);
  49     d3dEnabledID = env->GetStaticFieldID(wFlagsClass, "d3dEnabled", "Z");
  50     CHECK_NULL(d3dEnabledID);
  51     d3dSetID = env->GetStaticFieldID(wFlagsClass, "d3dSet", "Z");
  52     CHECK_NULL(d3dSetID);
  53 }
  54 
  55 BOOL GetStaticBoolean(JNIEnv *env, jclass wfClass, const char *fieldName)
  56 {


  78         char *d3dEnv = getenv("J2D_D3D");
  79         if (d3dEnv) {
  80             if (strcmp(d3dEnv, "false") == 0) {
  81                 // printf("Java2D Direct3D usage disabled by J2D_D3D env\n");
  82                 d3dEnabled = FALSE;
  83                 d3dSet = TRUE;
  84                 SetD3DEnabledFlag(env, d3dEnabled, d3dSet);
  85             } else if (strcmp(d3dEnv, "true") == 0) {
  86                 // printf("Java2D Direct3D usage forced on by J2D_D3D env\n");
  87                 d3dEnabled = TRUE;
  88                 d3dSet = TRUE;
  89                 SetD3DEnabledFlag(env, d3dEnabled, d3dSet);
  90             }
  91         }
  92     }
  93     useD3D = d3dEnabled;
  94     forceD3DUsage = d3dSet;
  95     g_offscreenSharing = GetStaticBoolean(env, wFlagsClass,
  96                                           "offscreenSharingEnabled");
  97     JNU_CHECK_EXCEPTION(env);
  98     accelReset = GetStaticBoolean(env, wFlagsClass, "accelReset");
  99     JNU_CHECK_EXCEPTION(env);
 100     checkRegistry = GetStaticBoolean(env, wFlagsClass, "checkRegistry");
 101     JNU_CHECK_EXCEPTION(env);
 102     disableRegistry = GetStaticBoolean(env, wFlagsClass, "disableRegistry");
 103     JNU_CHECK_EXCEPTION(env);
 104 
 105     setHighDPIAware =
 106         (IS_WINVISTA && GetStaticBoolean(env, wFlagsClass, "setHighDPIAware"));
 107     JNU_CHECK_EXCEPTION(env);
 108 
 109     J2dTraceLn(J2D_TRACE_INFO, "WindowsFlags (native):");
 110     J2dTraceLn1(J2D_TRACE_INFO, "  d3dEnabled = %s",
 111                 (useD3D ? "true" : "false"));
 112     J2dTraceLn1(J2D_TRACE_INFO, "  d3dSet = %s",
 113                 (forceD3DUsage ? "true" : "false"));
 114     J2dTraceLn1(J2D_TRACE_INFO, "  offscreenSharing = %s",
 115                 (g_offscreenSharing ? "true" : "false"));
 116     J2dTraceLn1(J2D_TRACE_INFO, "  accelReset = %s",
 117                 (accelReset ? "true" : "false"));
 118     J2dTraceLn1(J2D_TRACE_INFO, "  checkRegistry = %s",
 119                 (checkRegistry ? "true" : "false"));
 120     J2dTraceLn1(J2D_TRACE_INFO, "  disableRegistry = %s",
 121                 (disableRegistry ? "true" : "false"));
 122     J2dTraceLn1(J2D_TRACE_INFO, "  setHighDPIAware = %s",
 123                 (setHighDPIAware ? "true" : "false"));
 124 }
 125 
 126 void SetD3DEnabledFlag(JNIEnv *env, BOOL d3dEnabled, BOOL d3dSet)
 127 {
 128     useD3D = d3dEnabled;
 129     forceD3DUsage = d3dSet;
 130     if (env == NULL) {
 131         env = (JNIEnv * ) JNU_GetEnv(jvm, JNI_VERSION_1_2);
 132     }
 133     env->SetStaticBooleanField(wFlagsClassID, d3dEnabledID, d3dEnabled);
 134     if (d3dSet) {
 135         env->SetStaticBooleanField(wFlagsClassID, d3dSetID, d3dSet);
 136     }
 137 }
 138 
 139 BOOL IsD3DEnabled() {
 140     return useD3D;
 141 }




  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 #include <awt.h>
  27 #include "Trace.h"
  28 #include "WindowsFlags.h"
  29 

  30 BOOL      useD3D = TRUE;      // d3d enabled flag
  31                               // initially is TRUE to allow D3D preloading
  32 BOOL      forceD3DUsage;      // force d3d on or off
  33 jboolean  g_offscreenSharing; // JAWT accelerated surface sharing


  34 BOOL      setHighDPIAware;    // Whether to set the high-DPI awareness flag
  35 
  36 extern WCHAR *j2dAccelKey;       // Name of java2d root key
  37 extern WCHAR *j2dAccelDriverKey; // Name of j2d per-device key
  38 
  39 static jfieldID d3dEnabledID;
  40 static jfieldID d3dSetID;
  41 static jclass   wFlagsClassID;
  42 
  43 void SetIDs(JNIEnv *env, jclass wFlagsClass)
  44 {
  45     wFlagsClassID = (jclass)env->NewGlobalRef(wFlagsClass);
  46     d3dEnabledID = env->GetStaticFieldID(wFlagsClass, "d3dEnabled", "Z");
  47     CHECK_NULL(d3dEnabledID);
  48     d3dSetID = env->GetStaticFieldID(wFlagsClass, "d3dSet", "Z");
  49     CHECK_NULL(d3dSetID);
  50 }
  51 
  52 BOOL GetStaticBoolean(JNIEnv *env, jclass wfClass, const char *fieldName)
  53 {


  75         char *d3dEnv = getenv("J2D_D3D");
  76         if (d3dEnv) {
  77             if (strcmp(d3dEnv, "false") == 0) {
  78                 // printf("Java2D Direct3D usage disabled by J2D_D3D env\n");
  79                 d3dEnabled = FALSE;
  80                 d3dSet = TRUE;
  81                 SetD3DEnabledFlag(env, d3dEnabled, d3dSet);
  82             } else if (strcmp(d3dEnv, "true") == 0) {
  83                 // printf("Java2D Direct3D usage forced on by J2D_D3D env\n");
  84                 d3dEnabled = TRUE;
  85                 d3dSet = TRUE;
  86                 SetD3DEnabledFlag(env, d3dEnabled, d3dSet);
  87             }
  88         }
  89     }
  90     useD3D = d3dEnabled;
  91     forceD3DUsage = d3dSet;
  92     g_offscreenSharing = GetStaticBoolean(env, wFlagsClass,
  93                                           "offscreenSharingEnabled");
  94     JNU_CHECK_EXCEPTION(env);






  95 
  96     setHighDPIAware =
  97         (IS_WINVISTA && GetStaticBoolean(env, wFlagsClass, "setHighDPIAware"));
  98     JNU_CHECK_EXCEPTION(env);
  99 
 100     J2dTraceLn(J2D_TRACE_INFO, "WindowsFlags (native):");
 101     J2dTraceLn1(J2D_TRACE_INFO, "  d3dEnabled = %s",
 102                 (useD3D ? "true" : "false"));
 103     J2dTraceLn1(J2D_TRACE_INFO, "  d3dSet = %s",
 104                 (forceD3DUsage ? "true" : "false"));
 105     J2dTraceLn1(J2D_TRACE_INFO, "  offscreenSharing = %s",
 106                 (g_offscreenSharing ? "true" : "false"));






 107     J2dTraceLn1(J2D_TRACE_INFO, "  setHighDPIAware = %s",
 108                 (setHighDPIAware ? "true" : "false"));
 109 }
 110 
 111 void SetD3DEnabledFlag(JNIEnv *env, BOOL d3dEnabled, BOOL d3dSet)
 112 {
 113     useD3D = d3dEnabled;
 114     forceD3DUsage = d3dSet;
 115     if (env == NULL) {
 116         env = (JNIEnv * ) JNU_GetEnv(jvm, JNI_VERSION_1_2);
 117     }
 118     env->SetStaticBooleanField(wFlagsClassID, d3dEnabledID, d3dEnabled);
 119     if (d3dSet) {
 120         env->SetStaticBooleanField(wFlagsClassID, d3dSetID, d3dSet);
 121     }
 122 }
 123 
 124 BOOL IsD3DEnabled() {
 125     return useD3D;
 126 }


< prev index next >