From: Detlef Riekenberg Subject: [PATCH 1/2] winspool: Accept a backend printer handle when creating a printer handle [resend] Message-Id: <1518828159-26995-1-git-send-email-wine.dev@web.de> Date: Sat, 17 Feb 2018 01:42:38 +0100 Needed to reduce the patchsize for moving AddPrinter a bit We need to move AddPrinter to allow importing CUPS printers centralized in the spooler service (bug 3507, bug 10358) -- bye bye ... Detlef Signed-off-by: Detlef Riekenberg --- dlls/winspool.drv/info.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c index 9c24256..d28ca89 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -1444,7 +1444,7 @@ static void free_printer_entry( opened_printer_t *printer ) * ToDo: * - pDefault is ignored */ -static HANDLE get_opened_printer_entry(LPWSTR name, LPPRINTER_DEFAULTSW pDefault) +static HANDLE get_opened_printer_entry(LPWSTR name, LPPRINTER_DEFAULTSW pDefault, HANDLE backend_printer) { UINT_PTR handle = nb_printer_handles, i; jobqueue_t *queue = NULL; @@ -1513,10 +1513,15 @@ static HANDLE get_opened_printer_entry(LPWSTR name, LPPRINTER_DEFAULTSW pDefault } /* get a printer handle from the backend */ - if (! backend->fpOpenPrinter(name, &printer->backend_printer, pDefault)) { - handle = 0; - goto end; + if (!backend_printer) + { + if (! backend->fpOpenPrinter(name, &printer->backend_printer, pDefault)) { + handle = 0; + goto end; + } } + else + printer->backend_printer = backend_printer; /* clone the base name. This is NULL for the printserver */ printer->printername = strdupW(printername); @@ -2547,7 +2552,7 @@ 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); + *phPrinter = get_opened_printer_entry(lpPrinterName, pDefault, NULL); if (*phPrinter && WINSPOOL_GetOpenedPrinterRegKey( *phPrinter, &key ) == ERROR_SUCCESS) { -- 2.7.4