--- old/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp 2016-09-29 18:10:43.280483500 +0300 +++ new/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp 2016-09-29 18:10:42.740482200 +0300 @@ -334,6 +334,7 @@ ::GetKeyboardState(m_lastKeyboardState); m_waitEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL); + isInDoDragDropLoop = FALSE; eventNumber = 0; } @@ -2752,7 +2753,12 @@ AwtToolkit & tk = AwtToolkit::GetInstance(); DWORD eventNumber = tk.eventNumber; tk.PostMessage(WM_SYNC_WAIT, 0, 0); - ::WaitForSingleObject(tk.m_waitEvent, INFINITE); + 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; }