Author: jimtabor
Date: Sat Aug 26 22:49:13 2017
New Revision: 75685
URL:
http://svn.reactos.org/svn/reactos?rev=75685&view=rev
Log:
[GDI32|Metafile]
- Andrew Eikum : Update metafile world transform immediately in winnt mode.
- More information at
https://www.winehq.org/pipermail/wine-cvs/2017-August/122607.html .
Modified:
trunk/reactos/win32ss/gdi/gdi32/wine/enhmetafile.c
Modified: trunk/reactos/win32ss/gdi/gdi32/wine/enhmetafile.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/enh…
==============================================================================
--- trunk/reactos/win32ss/gdi/gdi32/wine/enhmetafile.c [iso-8859-1] (original)
+++ trunk/reactos/win32ss/gdi/gdi32/wine/enhmetafile.c [iso-8859-1] Sat Aug 26 22:49:13
2017
@@ -786,6 +786,10 @@
break;
info->state.mode = pSetMapMode->iMode;
EMF_SetMapMode(hdc, info);
+
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
+
break;
}
case EMR_SETBKMODE:
@@ -887,12 +891,16 @@
info->state.wndOrgY = pSetWindowOrgEx->ptlOrigin.y;
TRACE("SetWindowOrgEx: %d,%d\n", info->state.wndOrgX,
info->state.wndOrgY);
+
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
+
break;
}
case EMR_SETWINDOWEXTEX:
{
const EMRSETWINDOWEXTEX *pSetWindowExtEx = (const EMRSETWINDOWEXTEX *)mr;
-
+
if (info->state.mode != MM_ISOTROPIC && info->state.mode !=
MM_ANISOTROPIC)
break;
info->state.wndExtX = pSetWindowExtEx->szlExtent.cx;
@@ -901,6 +909,10 @@
EMF_FixIsotropic(hdc, info);
TRACE("SetWindowExtEx: %d,%d\n",info->state.wndExtX,
info->state.wndExtY);
+
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
+
break;
}
case EMR_SETVIEWPORTORGEX:
@@ -910,6 +922,10 @@
info->state.vportOrgX = pSetViewportOrgEx->ptlOrigin.x;
info->state.vportOrgY = pSetViewportOrgEx->ptlOrigin.y;
TRACE("SetViewportOrgEx: %d,%d\n", info->state.vportOrgX,
info->state.vportOrgY);
+
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
+
break;
}
case EMR_SETVIEWPORTEXTEX:
@@ -923,6 +939,10 @@
if (info->state.mode == MM_ISOTROPIC)
EMF_FixIsotropic(hdc, info);
TRACE("SetViewportExtEx: %d,%d\n", info->state.vportExtX,
info->state.vportExtY);
+
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
+
break;
}
case EMR_CREATEPEN:
@@ -1259,6 +1279,10 @@
{
const EMRSETWORLDTRANSFORM *lpXfrm = (const EMRSETWORLDTRANSFORM *)mr;
info->state.world_transform = lpXfrm->xform;
+
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
+
break;
}
@@ -1414,6 +1438,9 @@
lpScaleViewportExtEx->xNum,lpScaleViewportExtEx->xDenom,
lpScaleViewportExtEx->yNum,lpScaleViewportExtEx->yDenom);
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
+
break;
}
@@ -1439,6 +1466,9 @@
lpScaleWindowExtEx->xNum,lpScaleWindowExtEx->xDenom,
lpScaleWindowExtEx->yNum,lpScaleWindowExtEx->yDenom);
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
+
break;
}
@@ -1451,14 +1481,20 @@
info->state.world_transform.eM11 = info->state.world_transform.eM22 =
1;
info->state.world_transform.eM12 = info->state.world_transform.eM21 =
0;
info->state.world_transform.eDx = info->state.world_transform.eDy =
0;
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
break;
case MWT_LEFTMULTIPLY:
CombineTransform(&info->state.world_transform,
&lpModifyWorldTrans->xform,
&info->state.world_transform);
+ if (!IS_WIN9X())
+ ModifyWorldTransform(hdc, &lpModifyWorldTrans->xform,
MWT_LEFTMULTIPLY);
break;
case MWT_RIGHTMULTIPLY:
CombineTransform(&info->state.world_transform,
&info->state.world_transform,
&lpModifyWorldTrans->xform);
+ if (!IS_WIN9X())
+ EMF_Update_MF_Xform(hdc, info);
break;
default:
FIXME("Unknown imode %d\n", lpModifyWorldTrans->iMode);
@@ -2435,11 +2471,6 @@
TRACE("Calling EnumFunc with record %s, size %d\n",
get_emr_name(emr->iType), emr->nSize);
ret = (*callback)(hdc, ht, emr, emh->nHandles, (LPARAM)data);
offset += emr->nSize;
-
- /* WinNT - update the transform (win9x updates when the next graphics
- output record is played). */
- if (hdc && !IS_WIN9X())
- EMF_Update_MF_Xform(hdc, info);
}
if (hdc)