< prev index next >

src/java.desktop/windows/native/libawt/windows/WPrinterJob.cpp

Print this page

        

@@ -42,11 +42,10 @@
 
 /* constants for DeviceCapability buffer lengths */
 #define PAPERNAME_LENGTH 64
 #define TRAYNAME_LENGTH 24
 
-
 static BOOL IsSupportedLevel(HANDLE hPrinter, DWORD dwLevel) {
     BOOL isSupported = FALSE;
     DWORD cbBuf = 0;
     LPBYTE pPrinter = NULL;
 

@@ -115,11 +114,10 @@
     }
 
     CATCH_BAD_ALLOC_RET(NULL);
 }
 
-
 JNIEXPORT jobjectArray JNICALL
 Java_sun_print_PrintServiceLookupProvider_getAllPrinterNames(JNIEnv *env,
                                                           jobject peer)
 {
     TRY;

@@ -172,69 +170,22 @@
     return nameArray;
 
     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;
 
-JNIEXPORT jint JNICALL
-Java_sun_print_PrintServiceLookupProvider_notifyPrinterChange(JNIEnv *env,
-                                                           jobject peer,
-                                                           jlong chgObject) {
-    DWORD dwChange;
+    ::EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS,
+                       NULL, 4, NULL, 0, &cbNeeded, &cReturned);
 
-    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,
                                                   jstring printer,
                                                   jint  papersize)
< prev index next >