--- old/src/java.desktop/windows/native/libawt/windows/awt_FileDialog.cpp 2016-05-31 10:06:48.860884900 +0300 +++ new/src/java.desktop/windows/native/libawt/windows/awt_FileDialog.cpp 2016-05-31 10:06:48.439884900 +0300 @@ -357,9 +357,9 @@ // show the Win32 file dialog if (mode == java_awt_FileDialog_LOAD) { - result = AwtFileDialog::GetOpenFileName(&ofn); + result = ::GetOpenFileName(&ofn); } else { - result = AwtFileDialog::GetSaveFileName(&ofn); + result = ::GetSaveFileName(&ofn); } // Fix for 4181310: FileDialog does not show up. // If the dialog is not shown because of invalid file name @@ -369,9 +369,9 @@ if (dlgerr == FNERR_INVALIDFILENAME) { _tcscpy_s(fileBuffer, bufferLimit, TEXT("")); if (mode == java_awt_FileDialog_LOAD) { - result = AwtFileDialog::GetOpenFileName(&ofn); + result = ::GetOpenFileName(&ofn); } else { - result = AwtFileDialog::GetSaveFileName(&ofn); + result = ::GetSaveFileName(&ofn); } } } @@ -430,22 +430,6 @@ delete[] ofn.lpstrFile; } -BOOL -AwtFileDialog::GetOpenFileName(LPOPENFILENAME data) { - return static_cast(reinterpret_cast( - AwtToolkit::GetInstance().InvokeFunction((void*(*)(void*)) - ::GetOpenFileName, data))); - -} - -BOOL -AwtFileDialog::GetSaveFileName(LPOPENFILENAME data) { - return static_cast(reinterpret_cast( - AwtToolkit::GetInstance().InvokeFunction((void *(*)(void *)) - ::GetSaveFileName, data))); - -} - BOOL AwtFileDialog::InheritsNativeMouseWheelBehavior() {return true;} void AwtFileDialog::_DisposeOrHide(void *param) @@ -593,9 +577,10 @@ */ jobject peerGlobal = env->NewGlobalRef(peer); - AwtToolkit::GetInstance().InvokeFunction(AwtFileDialog::Show, peerGlobal); - - env->DeleteGlobalRef(peerGlobal); + if (!AwtToolkit::GetInstance().PostMessage(WM_AWT_INVOKE_METHOD, + (WPARAM)AwtFileDialog::Show, (LPARAM)peerGlobal)) { + env->DeleteGlobalRef(peerGlobal); + } CATCH_BAD_ALLOC; }