diff --git a/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c b/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c index fe19f990aaa..0609c9d4f06 100644 --- a/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c +++ b/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2013, 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 @@ -346,13 +346,19 @@ JNIEXPORT jobject JNICALL awt_GetComponent(JNIEnv* env, void* platformInfo) { Window window = (Window)platformInfo; - Widget widget = NULL; jobject peer = NULL; jobject target = NULL; AWT_LOCK(); - target = (*env)->GetObjectField(env, peer, targetID); + if (window != None) { + peer = JNU_CallStaticMethodByName(env, NULL, "sun/awt/X11/XToolkit", + "windowToXWindow", "(J)Lsun/awt/X11/XBaseWindow;", (jlong)window).l; + } + if ((peer != NULL) && + (JNU_IsInstanceOfByName(env, peer, "sun/awt/X11/XWindow") == 1)) { + target = (*env)->GetObjectField(env, peer, targetID); + } if (target == NULL) { JNU_ThrowNullPointerException(env, "NullPointerException"); @@ -360,7 +366,6 @@ JNIEXPORT jobject JNICALL return (jobject)NULL; } - AWT_UNLOCK(); return target;