gdi32: Make EnumEnhMetaFile update the DC state before calling the callback.
This makes applications with custom callbacks work properly, and fixes 'make test' in a win9x mode.
This commit is contained in:
parent
5bcb15dd7f
commit
d1fe894a7d
|
@ -756,10 +756,6 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
|
|
||||||
type = mr->iType;
|
type = mr->iType;
|
||||||
|
|
||||||
/* In Win9x mode we update the xform if the record will produce output */
|
|
||||||
if ( IS_WIN9X() && emr_produces_output(type) )
|
|
||||||
EMF_Update_MF_Xform(hdc, info);
|
|
||||||
|
|
||||||
TRACE("record %s\n", get_emr_name(type));
|
TRACE("record %s\n", get_emr_name(type));
|
||||||
switch(type)
|
switch(type)
|
||||||
{
|
{
|
||||||
|
@ -2193,13 +2189,6 @@ BOOL WINAPI PlayEnhMetaFileRecord(
|
||||||
TRACE("L:0,0 - 1000,1000 -> D:%d,%d - %d,%d\n", tmprc.left,
|
TRACE("L:0,0 - 1000,1000 -> D:%d,%d - %d,%d\n", tmprc.left,
|
||||||
tmprc.top, tmprc.right, tmprc.bottom);
|
tmprc.top, tmprc.right, tmprc.bottom);
|
||||||
|
|
||||||
if ( !IS_WIN9X() )
|
|
||||||
{
|
|
||||||
/* WinNT - update the transform (win9x updates when the next graphics output
|
|
||||||
record is played). */
|
|
||||||
EMF_Update_MF_Xform(hdc, info);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2405,9 +2394,19 @@ BOOL WINAPI EnumEnhMetaFile(
|
||||||
while(ret && offset < emh->nBytes)
|
while(ret && offset < emh->nBytes)
|
||||||
{
|
{
|
||||||
emr = (ENHMETARECORD *)((char *)emh + offset);
|
emr = (ENHMETARECORD *)((char *)emh + offset);
|
||||||
|
|
||||||
|
/* In Win9x mode we update the xform if the record will produce output */
|
||||||
|
if (hdc && IS_WIN9X() && emr_produces_output(emr->iType))
|
||||||
|
EMF_Update_MF_Xform(hdc, info);
|
||||||
|
|
||||||
TRACE("Calling EnumFunc with record %s, size %d\n", get_emr_name(emr->iType), emr->nSize);
|
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);
|
ret = (*callback)(hdc, ht, emr, emh->nHandles, (LPARAM)data);
|
||||||
offset += emr->nSize;
|
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)
|
if (hdc)
|
||||||
|
|
Loading…
Reference in New Issue