Dmitry Timoshkov : wineps.drv: Ignore requested resolutions not supported by device.
Alexandre Julliard
julliard at winehq.org
Thu Dec 20 12:39:56 CST 2012
Module: wine
Branch: master
Commit: d170f05ece150db8ae298e504753ec25b9d77350
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d170f05ece150db8ae298e504753ec25b9d77350
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Thu Dec 20 16:24:06 2012 +0800
wineps.drv: Ignore requested resolutions not supported by device.
---
dlls/wineps.drv/init.c | 35 +++++++++++++++++++++++++++++------
1 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/dlls/wineps.drv/init.c b/dlls/wineps.drv/init.c
index 98768a4..2085a47 100644
--- a/dlls/wineps.drv/init.c
+++ b/dlls/wineps.drv/init.c
@@ -151,20 +151,43 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved )
static void PSDRV_UpdateDevCaps( PSDRV_PDEVICE *physDev )
{
PAGESIZE *page;
- INT width = 0, height = 0;
+ RESOLUTION *res;
+ INT width = 0, height = 0, resx = 0, resy = 0;
- if (physDev->Devmode->dmPublic.dmFields & DM_PRINTQUALITY)
+ if (physDev->Devmode->dmPublic.dmFields & (DM_PRINTQUALITY | DM_YRESOLUTION | DM_LOGPIXELS))
{
- physDev->logPixelsX = physDev->Devmode->dmPublic.u1.s1.dmPrintQuality;
- physDev->logPixelsY = physDev->logPixelsX;
+ if (physDev->Devmode->dmPublic.dmFields & DM_PRINTQUALITY)
+ resx = resy = physDev->Devmode->dmPublic.u1.s1.dmPrintQuality;
+
+ if (physDev->Devmode->dmPublic.dmFields & DM_YRESOLUTION)
+ resy = physDev->Devmode->dmPublic.dmYResolution;
+
+ if (physDev->Devmode->dmPublic.dmFields & DM_LOGPIXELS)
+ resx = resy = physDev->Devmode->dmPublic.dmLogPixels;
+
+ LIST_FOR_EACH_ENTRY(res, &physDev->pi->ppd->Resolutions, RESOLUTION, entry)
+ {
+ if (res->resx == resx && res->resy == resy)
+ {
+ physDev->logPixelsX = resx;
+ physDev->logPixelsY = resy;
+ break;
+ }
+ }
+
+ if (&res->entry == &physDev->pi->ppd->Resolutions)
+ {
+ WARN("Requested resolution %dx%d is not supported by device\n", resx, resy);
+ physDev->logPixelsX = physDev->pi->ppd->DefaultResolution;
+ physDev->logPixelsY = physDev->logPixelsX;
+ }
}
else
{
+ WARN("Using default device resolution %d\n", physDev->pi->ppd->DefaultResolution);
physDev->logPixelsX = physDev->pi->ppd->DefaultResolution;
physDev->logPixelsY = physDev->logPixelsX;
}
- if (physDev->Devmode->dmPublic.dmFields & DM_YRESOLUTION)
- physDev->logPixelsY = physDev->Devmode->dmPublic.dmYResolution;
if(physDev->Devmode->dmPublic.dmFields & DM_PAPERSIZE) {
LIST_FOR_EACH_ENTRY(page, &physDev->pi->ppd->PageSizes, PAGESIZE, entry) {
More information about the wine-cvs
mailing list