7042429: jdk 7 b140: crashes in awt.dll+0xb85fb] Java_sun_awt_Win32GraphicsEnvironment_isVistaOS+0xfdf
Reviewed-by: bae, dcherepanov
--- a/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp Tue May 10 18:28:05 2011 +0400
+++ b/jdk/src/windows/native/sun/java2d/d3d/D3DPipelineManager.cpp Wed May 11 15:00:25 2011 +0400
@@ -191,6 +191,14 @@
pMgr = D3DPipelineManager::GetInstance();
RETURN_IF_NULL(pMgr);
hMon = pMgr->pd3d9->GetAdapterMonitor(adapter);
+
+ /*
+ * If we don't have devices initialized yet, no sense to clear them.
+ */
+ if (!Devices::GetInstance()){
+ return;
+ }
+
gdiScreen = AwtWin32GraphicsDevice::GetScreenFromHMONITOR(hMon);
JNU_CallStaticMethodByName(env, NULL,
--- a/jdk/src/windows/native/sun/windows/Devices.h Tue May 10 18:28:05 2011 +0400
+++ b/jdk/src/windows/native/sun/windows/Devices.h Wed May 11 15:00:25 2011 +0400
@@ -36,6 +36,7 @@
class Devices {
public:
+static Devices* GetInstance();
static BOOL UpdateInstance(JNIEnv *env);
int GetNumDevices() { return numDevices; }
AwtWin32GraphicsDevice* GetDeviceReference(int index, BOOL adjust = TRUE);
@@ -59,7 +60,6 @@
private:
Devices(int numElements);
void AddReference();
-static Devices* GetInstance();
AwtWin32GraphicsDevice** devices;
int refCount;