--- old/src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp 2018-06-20 15:17:27.638508400 +0530 +++ new/src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp 2018-06-20 15:17:25.129540300 +0530 @@ -44,7 +44,6 @@ #define PAPERNAME_LENGTH 64 #define TRAYNAME_LENGTH 24 - static BOOL IsSupportedLevel(HANDLE hPrinter, DWORD dwLevel) { BOOL isSupported = FALSE; DWORD cbBuf = 0; @@ -117,7 +116,6 @@ CATCH_BAD_ALLOC_RET(NULL); } - JNIEXPORT jobjectArray JNICALL Java_sun_print_PrintServiceLookupProvider_getAllPrinterNames(JNIEnv *env, jobject peer) @@ -174,65 +172,18 @@ CATCH_BAD_ALLOC_RET(NULL); } - JNIEXPORT jlong JNICALL -Java_sun_print_PrintServiceLookupProvider_notifyFirstPrinterChange(JNIEnv *env, - jobject peer, - jstring printer) { - HANDLE hPrinter; - - LPTSTR printerName = NULL; - if (printer != NULL) { - printerName = (LPTSTR)JNU_GetStringPlatformChars(env, - printer, - NULL); - JNU_ReleaseStringPlatformChars(env, printer, printerName); - } - - // printerName - "Win NT/2K/XP: If NULL, it indicates the local printer - // server" - MSDN. Win9x : OpenPrinter returns 0. - BOOL ret = OpenPrinter(printerName, &hPrinter, NULL); - if (!ret) { - return (jlong)-1; - } - - // PRINTER_CHANGE_PRINTER = PRINTER_CHANGE_ADD_PRINTER | - // PRINTER_CHANGE_SET_PRINTER | - // PRINTER_CHANGE_DELETE_PRINTER | - // PRINTER_CHANGE_FAILED_CONNECTION_PRINTER - HANDLE chgObj = FindFirstPrinterChangeNotification(hPrinter, - PRINTER_CHANGE_PRINTER, - 0, - NULL); - return (chgObj == INVALID_HANDLE_VALUE) ? (jlong)-1 : (jlong)chgObj; -} - - - -JNIEXPORT void JNICALL -Java_sun_print_PrintServiceLookupProvider_notifyClosePrinterChange(JNIEnv *env, - jobject peer, - jlong chgObject) { - FindClosePrinterChangeNotification((HANDLE)chgObject); -} +Java_sun_print_PrintServiceLookupProvider_GetRemotePrintersCount(JNIEnv *env, + jobject peer) { + DWORD cbNeeded = 0; + DWORD cReturned = 0; + ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, + NULL, 4, NULL, 0, &cbNeeded, &cReturned); -JNIEXPORT jint JNICALL -Java_sun_print_PrintServiceLookupProvider_notifyPrinterChange(JNIEnv *env, - jobject peer, - jlong chgObject) { - DWORD dwChange; - - DWORD ret = WaitForSingleObject((HANDLE)chgObject, INFINITE); - if (ret == WAIT_OBJECT_0) { - return(FindNextPrinterChangeNotification((HANDLE)chgObject, - &dwChange, NULL, NULL)); - } else { - return 0; - } + return (cbNeeded/sizeof(PRINTER_INFO_4)); } - JNIEXPORT jfloatArray JNICALL Java_sun_print_Win32PrintService_getMediaPrintableArea(JNIEnv *env, jobject peer,