< prev index next >
src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp
Print this page
*** 319,328 ****
--- 319,329 ----
// initialize kb state array
::GetKeyboardState(m_lastKeyboardState);
m_waitEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
+ isInDoDragDropLoop = FALSE;
eventNumber = 0;
}
AwtToolkit::~AwtToolkit() {
/*
*** 2661,2672 ****
JNIEXPORT jboolean JNICALL
Java_sun_awt_windows_WToolkit_syncNativeQueue(JNIEnv *env, jobject self, jlong timeout)
{
AwtToolkit & tk = AwtToolkit::GetInstance();
DWORD eventNumber = tk.eventNumber;
tk.PostMessage(WM_SYNC_WAIT, 0, 0);
! ::WaitForSingleObject(tk.m_waitEvent, INFINITE);
DWORD newEventNumber = tk.eventNumber;
return (newEventNumber - eventNumber) > 2;
}
} /* extern "C" */
--- 2662,2680 ----
JNIEXPORT jboolean JNICALL
Java_sun_awt_windows_WToolkit_syncNativeQueue(JNIEnv *env, jobject self, jlong timeout)
{
AwtToolkit & tk = AwtToolkit::GetInstance();
DWORD eventNumber = tk.eventNumber;
+ if (!tk.isInDoDragDropLoop) {
tk.PostMessage(WM_SYNC_WAIT, 0, 0);
! for(long t = 2; t < timeout &&
! WAIT_TIMEOUT == ::WaitForSingleObject(tk.m_waitEvent, 2); t+=2) {
! if (tk.isInDoDragDropLoop) {
! break;
! }
! }
! }
DWORD newEventNumber = tk.eventNumber;
return (newEventNumber - eventNumber) > 2;
}
} /* extern "C" */
< prev index next >