Merge
authorasaha
Fri, 08 Apr 2011 10:31:14 -0700
changeset 9837 8698f8c93548
parent 9836 3d2b0ec3de09 (current diff)
parent 9835 1b8f203cda76 (diff)
child 9838 8aa3ac86d7ee
Merge
--- a/jdk/src/share/native/common/jdk_util.h	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/share/native/common/jdk_util.h	Fri Apr 08 10:31:14 2011 -0700
@@ -28,6 +28,7 @@
 
 #include "jni.h"
 #include "jvm.h"
+#include "jdk_util_md.h"
 
 #ifdef __cplusplus
 extern "C" {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/solaris/native/common/jdk_util_md.h	Fri Apr 08 10:31:14 2011 -0700
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2011 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.
+ */
+
+// Currently, there are no unix specific functions defined.
--- a/jdk/src/windows/bin/java_md.c	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/bin/java_md.c	Fri Apr 08 10:31:14 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -1212,22 +1212,11 @@
    return findBootClass(env, classname);
 }
 
-typedef BOOL (WINAPI *pfn_SetDllDirectory)(LPCTSTR);
-
 void
 InitLauncher(boolean javaw)
 {
     INITCOMMONCONTROLSEX icx;
 
-    // Launcher links with kernel32
-    HMODULE hKernel32 = GetModuleHandle(TEXT("kernel32.dll"));
-    pfn_SetDllDirectory fn = (pfn_SetDllDirectory) GetProcAddress(hKernel32,
-                                 "SetDllDirectory");
-    if (fn != NULL) {
-        // Exclude CWD from Dll search path
-        fn("");
-    }
-
     /*
      * Required for javaw mode MessageBox output as well as for
      * HotSpot -XX:+ShowMessageBoxOnError in java mode, an empty
--- a/jdk/src/windows/native/common/jdk_util_md.c	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/common/jdk_util_md.c	Fri Apr 08 10:31:14 2011 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2011, 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
@@ -38,3 +38,25 @@
 void* JDK_FindJvmEntry(const char* name) {
     return (void*) GetProcAddress(jvm_handle, name);
 }
+
+JNIEXPORT HMODULE JDK_LoadSystemLibrary(const char* name) {
+    HMODULE handle = NULL;
+    char path[MAX_PATH];
+    int ret;
+
+    if (GetSystemDirectory(path, sizeof(path)) != 0) {
+        strcat(path, "\\");
+        strcat(path, name);
+        handle = LoadLibrary(path);
+    }
+
+    if (handle == NULL) {
+        if (GetWindowsDirectory(path, sizeof(path)) != 0) {
+            strcat(path, "\\");
+            strcat(path, name);
+            handle = LoadLibrary(path);
+        }
+    }
+    return handle;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/windows/native/common/jdk_util_md.h	Fri Apr 08 10:31:14 2011 -0700
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2011 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.
+ */
+
+
+#ifndef JDK_UTIL_MD_H
+#define JDK_UTIL_MD_H
+
+#include "jni.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+JNIEXPORT HMODULE JDK_LoadSystemLibrary(const char* name);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* __cplusplus */
+
+#endif /* JDK_UTIL_MD_H */
--- a/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp	Fri Apr 08 10:31:14 2011 -0700
@@ -117,7 +117,7 @@
 {
     typedef IDirect3D9 * WINAPI FnDirect3DCreate9(UINT SDKVersion);
 
-    hLibD3D9 = ::LoadLibrary(TEXT("d3d9.dll"));
+    hLibD3D9 = JDK_LoadSystemLibrary("d3d9.dll");
     if (hLibD3D9 == NULL) {
         J2dRlsTraceLn(J2D_TRACE_ERROR, "InitD3D: no d3d9.dll");
         return E_FAIL;
--- a/jdk/src/windows/native/sun/java2d/opengl/OGLFuncs_md.h	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/java2d/opengl/OGLFuncs_md.h	Fri Apr 08 10:31:14 2011 -0700
@@ -60,7 +60,7 @@
 #define OGL_LIB_IS_UNINITIALIZED() \
     (OGL_LIB_HANDLE == 0)
 #define OGL_OPEN_LIB() \
-    OGL_LIB_HANDLE = LoadLibrary(L"opengl32.dll")
+    OGL_LIB_HANDLE = JDK_LoadSystemLibrary("opengl32.dll")
 #define OGL_CLOSE_LIB() \
     FreeLibrary(OGL_LIB_HANDLE)
 #define OGL_GET_PROC_ADDRESS(f) \
--- a/jdk/src/windows/native/sun/windows/DllUtil.cpp	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/DllUtil.cpp	Fri Apr 08 10:31:14 2011 -0700
@@ -25,6 +25,7 @@
 
 
 #include "DllUtil.h"
+#include <jdk_util.h>
 
 // Disable warning about using this in the initializer list.
 #pragma warning( disable : 4355)
@@ -40,7 +41,7 @@
 HMODULE DllUtil::GetModule()
 {
     if (!module) {
-        module = ::LoadLibrary(name);
+        module = JDK_LoadSystemLibrary(name);
     }
     return module;
 }
@@ -60,7 +61,7 @@
 }
 
 DwmAPI::DwmAPI() :
-    DllUtil(_T("DWMAPI.DLL")),
+    DllUtil("DWMAPI.DLL"),
     DwmIsCompositionEnabledFunction((DllUtil*)this, "DwmIsCompositionEnabled"),
     DwmGetWindowAttributeFunction((DllUtil*)this, "DwmGetWindowAttribute")
 {
--- a/jdk/src/windows/native/sun/windows/DllUtil.h	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/DllUtil.h	Fri Apr 08 10:31:14 2011 -0700
@@ -43,7 +43,7 @@
         FARPROC GetProcAddress(LPCSTR name);
 
     protected:
-        DllUtil(const TCHAR * name) : name(name), module(NULL) {}
+        DllUtil(const char * name) : name(name), module(NULL) {}
         virtual ~DllUtil();
 
         HMODULE GetModule();
@@ -68,7 +68,7 @@
         };
 
     private:
-        const TCHAR * const name;
+        const char * const name;
         HMODULE module;
 };
 
--- a/jdk/src/windows/native/sun/windows/ShellFolder2.cpp	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/ShellFolder2.cpp	Fri Apr 08 10:31:14 2011 -0700
@@ -120,15 +120,15 @@
         return TRUE;
     }
     // Load libraries
-    libShell32 = LoadLibrary(TEXT("shell32.dll"));
+    libShell32 = JDK_LoadSystemLibrary("shell32.dll");
     if (libShell32 == NULL) {
         return FALSE;
     }
-    libUser32 = LoadLibrary(TEXT("user32.dll"));
+    libUser32 = JDK_LoadSystemLibrary("user32.dll");
     if (libUser32 == NULL) {
         return FALSE;
     }
-    libComCtl32 = LoadLibrary(TEXT("comctl32.dll"));
+    libComCtl32 = JDK_LoadSystemLibrary("comctl32.dll");
     if (libComCtl32 == NULL) {
         return FALSE;
     }
@@ -1021,7 +1021,8 @@
     (JNIEnv* env, jclass cls, jstring libName, jint iconID,
      jint cxDesired, jint cyDesired, jboolean useVGAColors)
 {
-    HINSTANCE libHandle = LoadLibrary(JNU_GetStringPlatformChars(env, libName, NULL));
+    const char *pLibName = env->GetStringUTFChars(libName, NULL);
+    HINSTANCE libHandle = (HINSTANCE)JDK_LoadSystemLibrary(pLibName);
     if (libHandle != NULL) {
         UINT fuLoad = (useVGAColors && !IS_WINXP) ? LR_VGACOLOR : 0;
         return ptr_to_jlong(LoadImage(libHandle, MAKEINTRESOURCE(iconID),
--- a/jdk/src/windows/native/sun/windows/ThemeReader.cpp	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/ThemeReader.cpp	Fri Apr 08 10:31:14 2011 -0700
@@ -150,7 +150,7 @@
 
 BOOL InitThemes() {
     static HMODULE hModThemes = NULL;
-    hModThemes = LoadLibrary(TEXT("UXTHEME.DLL"));
+    hModThemes = JDK_LoadSystemLibrary("UXTHEME.DLL");
     DTRACE_PRINTLN1("InitThemes hModThemes = %x\n", hModThemes);
     if(hModThemes) {
         DTRACE_PRINTLN("Loaded UxTheme.dll\n");
--- a/jdk/src/windows/native/sun/windows/awt_Mlib.cpp	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Mlib.cpp	Fri Apr 08 10:31:14 2011 -0700
@@ -43,12 +43,13 @@
         mlibSysFnS_t tempSysFns;
         mlib_status ret = MLIB_SUCCESS;
 
-        /* Try to load library. Routine should find the library successfully
-         * because this library is already loaded to the process space by
-         * the System.loadLibrary() call. Here we just need to get handle to
-         * initialize the pointers to required mlib routines.
+        /* Try to receive handle for the library. Routine should find
+         * the library successfully because this library is already
+         * loaded to the process space by the System.loadLibrary() call.
+         * Here we just need to get handle to initialize the pointers to
+         * required mlib routines.
          */
-        hDLL = ::LoadLibrary(TEXT("mlib_image.dll"));
+        hDLL = ::GetModuleHandle(TEXT("mlib_image.dll"));
 
         if (hDLL == NULL) {
             return MLIB_FAILURE;
@@ -94,9 +95,6 @@
             i++;
         }
 
-        if (ret != MLIB_SUCCESS) {
-            ::FreeLibrary(hDLL);
-        }
         return ret;
     }
 
--- a/jdk/src/windows/native/sun/windows/awt_TextArea.cpp	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_TextArea.cpp	Fri Apr 08 10:31:14 2011 -0700
@@ -77,7 +77,7 @@
 LPCTSTR AwtTextArea::GetClassName() {
     static BOOL richedLibraryLoaded = FALSE;
     if (!richedLibraryLoaded) {
-        ::LoadLibrary(TEXT("RICHED20.DLL"));
+        JDK_LoadSystemLibrary("RICHED20.DLL");
         richedLibraryLoaded = TRUE;
     }
     return RICHEDIT_CLASS;
--- a/jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_TrayIcon.cpp	Fri Apr 08 10:31:14 2011 -0700
@@ -185,7 +185,7 @@
     int shellVersion = 5; // WIN_2000
     // MSDN: DllGetVersion should not be implicitly called, but rather
     // loaded using GetProcAddress
-    HMODULE hShell = LoadLibrary(TEXT("Shell32.dll"));
+    HMODULE hShell = JDK_LoadSystemLibrary("Shell32.dll");
     if (hShell != NULL) {
         DLLGETVERSIONPROC proc = (DLLGETVERSIONPROC)GetProcAddress(hShell, "DllGetVersion");
         if (proc != NULL) {
--- a/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/awt_Win32GraphicsEnv.cpp	Fri Apr 08 10:31:14 2011 -0700
@@ -63,7 +63,7 @@
 
     bAlreadySet = TRUE;
 
-    HMODULE hLibUser32Dll = ::LoadLibrary(TEXT("user32.dll"));
+    HMODULE hLibUser32Dll = JDK_LoadSystemLibrary("user32.dll");
 
     if (hLibUser32Dll != NULL) {
         SetProcessDPIAwareFunc *lpSetProcessDPIAware =
--- a/jdk/src/windows/native/sun/windows/stdhdrs.h	Fri Apr 08 10:27:23 2011 -0700
+++ b/jdk/src/windows/native/sun/windows/stdhdrs.h	Fri Apr 08 10:31:14 2011 -0700
@@ -47,6 +47,7 @@
 // standard Java headers
 #include <jni.h>
 #include <jni_util.h>
+#include <jdk_util.h>
 
 } // extern "C"