OpenJDK / jdk / jdk
changeset 14883:524cf4063ab3
7180359: Assertion in awt_Win32GraphicsDevice.cpp when running specjbb in jprt
Reviewed-by: bae, prr
author | jgodinez |
---|---|
date | Thu, 20 Dec 2012 14:43:35 -0800 |
parents | 930f09368456 |
children | 74d1acdb7ee4 |
files | jdk/src/windows/native/sun/windows/awt_Debug.cpp |
diffstat | 1 files changed, 25 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/jdk/src/windows/native/sun/windows/awt_Debug.cpp Fri Dec 14 13:14:33 2012 -0800 +++ b/jdk/src/windows/native/sun/windows/awt_Debug.cpp Thu Dec 20 14:43:35 2012 -0800 @@ -147,6 +147,24 @@ DTrace_Shutdown(); } +static jboolean isHeadless() { + jmethodID headlessFn; + JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2); + jclass graphicsEnvClass = env->FindClass( + "java/awt/GraphicsEnvironment"); + + if (graphicsEnvClass != NULL) { + headlessFn = env->GetStaticMethodID( + graphicsEnvClass, "isHeadless", "()Z"); + if (headlessFn != NULL) { + return env->CallStaticBooleanMethod(graphicsEnvClass, + headlessFn); + } + } + return true; +} + + void AwtDebugSupport::AssertCallback(const char * expr, const char * file, int line) { static const int ASSERT_MSG_SIZE = 1024; static const char * AssertFmt = @@ -158,7 +176,8 @@ static char assertMsg[ASSERT_MSG_SIZE+1]; DWORD lastError = GetLastError(); LPSTR msgBuffer = NULL; - int ret; + int ret = IDNO; + static jboolean headless = isHeadless(); FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | @@ -183,8 +202,11 @@ fprintf(stderr, "*********************\n"); fprintf(stderr, "%s\n", assertMsg); fprintf(stderr, "*********************\n"); - ret = MessageBoxA(NULL, assertMsg, "AWT Assertion Failure", - MB_YESNO|MB_ICONSTOP|MB_TASKMODAL); + + if (!headless) { + ret = MessageBoxA(NULL, assertMsg, "AWT Assertion Failure", + MB_YESNO|MB_ICONSTOP|MB_TASKMODAL); + } // if clicked Yes, break into the debugger if ( ret == IDYES ) {