Index: modules/awt/src/main/native/x11wrapper/unix/org_apache_harmony_awt_nativebridge_linux_X11.cpp =================================================================== --- modules/awt/src/main/native/x11wrapper/unix/org_apache_harmony_awt_nativebridge_linux_X11.cpp (revision 775307) +++ modules/awt/src/main/native/x11wrapper/unix/org_apache_harmony_awt_nativebridge_linux_X11.cpp (working copy) @@ -27,6 +27,9 @@ static libHandler libX11; static libHandler libXmu; static libHandler libXtst; +void (* p_nbridge_XLockDisplay) (void *) = NULL; +void (* p_nbridge_XUnlockDisplay) (void *) = NULL; + JNIEXPORT void JNICALL Java_org_apache_harmony_awt_nativebridge_linux_X11_init (JNIEnv * env, jclass cls) { LOAD_LIB_VER(libX11, X11, 6); if (libX11 == NULL) { @@ -57,6 +60,10 @@ XInitThreads(); XSetErrorHandler(errorHandler); + p_nbridge_XLockDisplay = + (void (*) (void *)) FindFunction(libX11, "XLockDisplay"); + p_nbridge_XUnlockDisplay = + (void (*) (void *)) FindFunction(libX11, "XUnlockDisplay"); } JNIEXPORT jlong JNICALL Java_org_apache_harmony_awt_nativebridge_linux_X11_proxycall0( JNIEnv *env, jobject self, jlong fnptr1234, jlong param_0, jlong param_1, jint param_2, jint param_3, jint param_4, jlong param_5, jint param_6, jint param_7, jint param_8, jint param_9) { @@ -858,10 +865,14 @@ int (* p_nbridge_XNextEvent) (void *, void *) = NULL; JNIEXPORT jint JNICALL Java_org_apache_harmony_awt_nativebridge_linux_X11_XNextEvent( JNIEnv *env, jobject self, jlong param_0, jlong param_1) { + jint res; if (p_nbridge_XNextEvent == NULL) { p_nbridge_XNextEvent = (int (*) (void *, void *)) FindFunction(libX11, "XNextEvent"); } - return (jint) (* p_nbridge_XNextEvent)((void*)(size_t) param_0, (void*)(size_t) param_1); + (* p_nbridge_XLockDisplay)((void*)(size_t) param_0); + res = (jint) (* p_nbridge_XNextEvent)((void*)(size_t) param_0, (void*)(size_t) param_1); + (* p_nbridge_XUnlockDisplay)((void*)(size_t) param_0); + return res; } void * (* p_nbridge_XDefaultVisual) (void *, int) = NULL;