Huw Davies : winspool: Set the printer registry values before calling into the driver.

Alexandre Julliard julliard at winehq.org
Fri Jun 15 13:34:39 CDT 2012


Module: wine
Branch: master
Commit: a294ad42e0cc16225974f1f6078187a542a46bfc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a294ad42e0cc16225974f1f6078187a542a46bfc

Author: Huw Davies <huw at codeweavers.com>
Date:   Fri Jun 15 12:53:52 2012 +0100

winspool: Set the printer registry values before calling into the driver.

---

 dlls/winspool.drv/info.c |   45 +++++++++++++++++++--------------------------
 1 files changed, 19 insertions(+), 26 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 512e11f..362ff27 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -3029,21 +3029,31 @@ HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter)
     }
 
     set_devices_and_printerports(pi);
+
     set_reg_DWORD(hkeyPrinter, AttributesW, pi->Attributes);
     set_reg_szW(hkeyPrinter, DatatypeW, pi->pDatatype);
+    set_reg_szW(hkeyPrinter, DescriptionW, pi->pComment);
+    set_reg_DWORD(hkeyPrinter, dnsTimeoutW, 0);
+    set_reg_szW(hkeyPrinter, LocationW, pi->pLocation);
+    set_reg_szW(hkeyPrinter, NameW, pi->pPrinterName);
+    set_reg_szW(hkeyPrinter, ParametersW, pi->pParameters);
+    set_reg_szW(hkeyPrinter, PortW, pi->pPortName);
+    set_reg_szW(hkeyPrinter, Print_ProcessorW, pi->pPrintProcessor);
+    set_reg_szW(hkeyPrinter, Printer_DriverW, pi->pDriverName);
+    set_reg_DWORD(hkeyPrinter, PriorityW, pi->Priority);
+    set_reg_szW(hkeyPrinter, Separator_FileW, pi->pSepFile);
+    set_reg_szW(hkeyPrinter, Share_NameW, pi->pShareName);
+    set_reg_DWORD(hkeyPrinter, StartTimeW, pi->StartTime);
+    set_reg_DWORD(hkeyPrinter, StatusW, pi->Status);
+    set_reg_DWORD(hkeyPrinter, txTimeoutW, 0);
+    set_reg_DWORD(hkeyPrinter, UntilTimeW, pi->UntilTime);
 
-    /* See if we can load the driver.  We may need the devmode structure anyway
-     *
-     * FIXME:
-     * Note that DocumentPropertiesW will briefly try to open the printer we
-     * just create to find a DEVMODE struct (it will use the WINEPS default
-     * one in case it is not there, so we are ok).
-     */
     size = DocumentPropertiesW(0, 0, pi->pPrinterName, NULL, NULL, 0);
 
-    if(size < 0) {
+    if (size < 0)
+    {
         FIXME("DocumentPropertiesW on printer %s fails\n", debugstr_w(pi->pPrinterName));
-	size = sizeof(DEVMODEW);
+        size = sizeof(DEVMODEW);
     }
     if(pi->pDevMode)
         dm = pi->pDevMode;
@@ -3067,23 +3077,6 @@ HANDLE WINAPI AddPrinterW(LPWSTR pName, DWORD Level, LPBYTE pPrinter)
     set_reg_devmode( hkeyPrinter, Default_DevModeW, dm );
     if (!pi->pDevMode) HeapFree( GetProcessHeap(), 0, dm );
 
-    set_reg_szW(hkeyPrinter, DescriptionW, pi->pComment);
-    set_reg_DWORD(hkeyPrinter, dnsTimeoutW, 0);
-    set_reg_szW(hkeyPrinter, LocationW, pi->pLocation);
-    set_reg_szW(hkeyPrinter, NameW, pi->pPrinterName);
-    set_reg_szW(hkeyPrinter, ParametersW, pi->pParameters);
-
-    set_reg_szW(hkeyPrinter, PortW, pi->pPortName);
-    set_reg_szW(hkeyPrinter, Print_ProcessorW, pi->pPrintProcessor);
-    set_reg_szW(hkeyPrinter, Printer_DriverW, pi->pDriverName);
-    set_reg_DWORD(hkeyPrinter, PriorityW, pi->Priority);
-    set_reg_szW(hkeyPrinter, Separator_FileW, pi->pSepFile);
-    set_reg_szW(hkeyPrinter, Share_NameW, pi->pShareName);
-    set_reg_DWORD(hkeyPrinter, StartTimeW, pi->StartTime);
-    set_reg_DWORD(hkeyPrinter, StatusW, pi->Status);
-    set_reg_DWORD(hkeyPrinter, txTimeoutW, 0);
-    set_reg_DWORD(hkeyPrinter, UntilTimeW, pi->UntilTime);
-
     RegCloseKey(hkeyPrinter);
     RegCloseKey(hkeyPrinters);
     if(!OpenPrinterW(pi->pPrinterName, &retval, NULL)) {




More information about the wine-cvs mailing list