Module: wine Branch: master Commit: f079c02ff78a49580b5132e12ee5fee12fe87bcb URL: https://gitlab.winehq.org/wine/wine/-/commit/f079c02ff78a49580b5132e12ee5fee...
Author: Piotr Caban piotr@codeweavers.com Date: Sat Dec 3 19:08:22 2022 +0100
localspl: Partially support Port handles in StartDocPrinter.
---
dlls/localspl/provider.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/localspl/provider.c b/dlls/localspl/provider.c index 7ac171892d3..7336dbaa705 100644 --- a/dlls/localspl/provider.c +++ b/dlls/localspl/provider.c @@ -1697,7 +1697,7 @@ static HANDLE port_alloc_handle(const WCHAR *name, BOOL *stop_search) return NULL; } if (!port->mon->monitor.pfnOpenPort || !port->mon->monitor.pfnWritePort - || !port->mon->monitor.pfnClosePort) + || !port->mon->monitor.pfnClosePort || !port->mon->monitor.pfnStartDocPort) { FIXME("port not supported: %s\n", debugstr_w(name)); free(port_name); @@ -3199,7 +3199,21 @@ static DWORD WINAPI fpStartDocPrinter(HANDLE hprinter, DWORD level, BYTE *doc_in hprinter, level, doc_info, debugstr_w(info->pDocName), debugstr_w(info->pOutputFile), debugstr_w(info->pDatatype));
- if (!printer || printer->header.type != HANDLE_PRINTER) + if (!printer) + { + SetLastError(ERROR_INVALID_HANDLE); + return 0; + } + + if (printer->header.type == HANDLE_PORT) + { + port_t *port = (port_t *)hprinter; + /* TODO: pass printer name and job_id */ + return port->mon->monitor.pfnStartDocPort(port->hport, + NULL, 0, level, doc_info); + } + + if (printer->header.type != HANDLE_PRINTER) { SetLastError(ERROR_INVALID_HANDLE); return 0;