Module: wine Branch: master Commit: 0c31766c882478cf78fb05d4a9156b66858d3fd5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0c31766c882478cf78fb05d4a9...
Author: Huw Davies huw@codeweavers.com Date: Thu Jun 21 12:59:02 2012 +0100
winspool: Update the devmode when we update the driver.
---
dlls/winspool.drv/info.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c index d1afe56..a8d245f 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -974,6 +974,10 @@ static BOOL update_driver( HANDLE printer ) HeapFree( GetProcessHeap(), 0, ppd_dir ); HeapFree( GetProcessHeap(), 0, ppd ); HeapFree( GetProcessHeap(), 0, queue_name ); + + /* call into the driver to update the devmode */ + DocumentPropertiesW( 0, printer, NULL, NULL, NULL, 0 ); + return ret; }
@@ -2369,7 +2373,6 @@ BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter, LPPRINTER_DEFAU /* Get the unique handle of the printer or Printserver */ *phPrinter = get_opened_printer_entry(lpPrinterName, pDefault);
- WaitForSingleObject( init_mutex, INFINITE ); if (*phPrinter) { HKEY key; @@ -2377,15 +2380,14 @@ BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter, LPPRINTER_DEFAU DWORD status; WINSPOOL_GetOpenedPrinterRegKey( *phPrinter, &key ); RegQueryValueExW( key, May_Delete_Value, NULL, &type, (LPBYTE)&deleting, &size ); + WaitForSingleObject( init_mutex, INFINITE ); status = get_dword_from_reg( key, StatusW ); + set_reg_DWORD( key, StatusW, status & ~PRINTER_STATUS_DRIVER_UPDATE_NEEDED ); + ReleaseMutex( init_mutex ); if (!deleting && (status & PRINTER_STATUS_DRIVER_UPDATE_NEEDED)) - { update_driver( *phPrinter ); - set_reg_DWORD( key, StatusW, status & ~PRINTER_STATUS_DRIVER_UPDATE_NEEDED ); - } RegCloseKey( key ); } - ReleaseMutex( init_mutex );
TRACE("returning %d with %u and %p\n", *phPrinter != NULL, GetLastError(), *phPrinter); return (*phPrinter != 0);