X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=win32ss%2Fgdi%2Fgdi32%2Fwine%2Frosglue.c;h=b537b90e419fea9c97fbc4f9b78800beefe7f7c6;hp=230510148f949941575d3c834b06aedc4008fbe9;hb=333b8f19a4af478329a19d3246c8919460c98573;hpb=e1e79f248b354f0a0f257b8001932704e3eee7a5 diff --git a/win32ss/gdi/gdi32/wine/rosglue.c b/win32ss/gdi/gdi32/wine/rosglue.c index 230510148f9..b537b90e419 100644 --- a/win32ss/gdi/gdi32/wine/rosglue.c +++ b/win32ss/gdi/gdi32/wine/rosglue.c @@ -89,6 +89,7 @@ static const struct gdi_dc_funcs DummyPhysDevFuncs = (PVOID)NULL_Unused, //BOOL (*pGetCharABCWidths)(PHYSDEV,UINT,UINT,LPABC); (PVOID)NULL_Unused, //BOOL (*pGetCharABCWidthsI)(PHYSDEV,UINT,UINT,WORD*,LPABC); (PVOID)NULL_Unused, //BOOL (*pGetCharWidth)(PHYSDEV,UINT,UINT,LPINT); + (PVOID)NULL_Unused, //BOOL (*pGetCharWidthInfo)(PHYSDEV,void*); (PVOID)NULL_Unused, //INT (*pGetDeviceCaps)(PHYSDEV,INT); (PVOID)NULL_Unused, //BOOL (*pGetDeviceGammaRamp)(PHYSDEV,LPVOID); (PVOID)NULL_Unused, //DWORD (*pGetFontData)(PHYSDEV,DWORD,DWORD,LPVOID,DWORD); @@ -320,6 +321,8 @@ alloc_dc_ptr(WORD magic) return NULL; } + pWineDc->iType = LDC_EMFLDC; + /* Set the Wine DC as LDC */ GdiSetLDC(pWineDc->hdc, pWineDc); } @@ -731,7 +734,7 @@ HRGN DRIVER_PathToRegion(PHYSDEV physdev) { DPRINT1("DRIVER_PathToRegion\n"); - return (HRGN)physdev->funcs->pAbortPath( physdev ); + return (HRGN)(ULONG_PTR)physdev->funcs->pAbortPath( physdev ); } @@ -1132,6 +1135,17 @@ METADC_Dispatch( return FALSE; } + // See if this is other than a METADATA issue. + if (GDI_HANDLE_GET_TYPE(hdc) == GDILoObjType_LO_ALTDC_TYPE) + { + WINEDC* pwdc = (WINEDC*)GdiGetLDC(hdc); + if (pwdc && pwdc->iType != LDC_EMFLDC) + { + /* Let the caller handle it */ + return FALSE; + } + } + physdev = GetPhysDev(hdc); if (physdev == NULL) {