Module: wine Branch: master Commit: 72b126b2204aff20f35be6b8a7b61f589dd9be87 URL: http://source.winehq.org/git/wine.git/?a=commit;h=72b126b2204aff20f35be6b8a7...
Author: Detlef Riekenberg wine.dev@web.de Date: Fri Jan 5 01:09:46 2007 +0100
winspool: Call the Portmonitor for XcvMonitor and XcvPort in OpenPrinter.
---
dlls/winspool.drv/info.c | 12 +++++++++++- 1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c index 6bd2c92..8b16252 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -117,6 +117,7 @@ typedef struct { LPWSTR name; LPWSTR printername; monitor_t *pm; + HANDLE hXcv; jobqueue_t *queue; started_doc_t *doc; } opened_printer_t; @@ -1477,7 +1478,14 @@ static HANDLE get_opened_printer_entry(L }
if (printer->pm) { - FIXME("pm->pfnXcvOpenPort not implemented\n"); + if ((printer->pm->monitor) && (printer->pm->monitor->pfnXcvOpenPort)) { + printer->pm->monitor->pfnXcvOpenPort(&printername[len], pDefault->DesiredAccess, &printer->hXcv); + } + if (printer->hXcv == NULL) { + SetLastError(ERROR_INVALID_PARAMETER); + handle = 0; + goto end; + } } else { @@ -1523,6 +1531,7 @@ end: LeaveCriticalSection(&printer_handles_cs); if (!handle && printer) { /* Something failed: Free all resources */ + if (printer->hXcv) printer->pm->monitor->pfnXcvClosePort(printer->hXcv); monitor_unload(printer->pm); HeapFree(GetProcessHeap(), 0, printer->printername); HeapFree(GetProcessHeap(), 0, printer->name); @@ -2912,6 +2921,7 @@ BOOL WINAPI ClosePrinter(HANDLE hPrinter } HeapFree(GetProcessHeap(), 0, printer->queue); } + if (printer->hXcv) printer->pm->monitor->pfnXcvClosePort(printer->hXcv); monitor_unload(printer->pm); HeapFree(GetProcessHeap(), 0, printer->printername); HeapFree(GetProcessHeap(), 0, printer->name);