< 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 >