[ros-dev] [ros-diffs] [tkreuzer] 65893: [GDI32] Import metafile code from wine. The wine code is unmodified (please keep it that way) and used through a wrapper function dispatcher and some helpers. Fixes 1931 wine tests.

Timo Kreuzer timo.kreuzer at web.de
Tue Mar 31 20:39:27 UTC 2015


Am 31.03.2015 um 21:11 schrieb Thomas Faber:
> Hey Timo,
>
> I was just about to sync enhmetafile.c with Wine and found that your
> original import had the following diff:
> --- win32ss/gdi/gdi32/wine/enhmetafile.c	(revision 67001)
> +++ win32ss/gdi/gdi32/wine/enhmetafile.c	(working copy)
> @@ -546,8 +546,6 @@
>   
>       if (!SetWorldTransform(hdc, &final_trans))
>       {
> -        __debugbreak();
> -        SetWorldTransform(hdc, &final_trans);
This was testing code, it should go.

>           ERR("World transform failed!\n");
>       }
>   }
> @@ -1232,12 +1230,10 @@
>       case EMR_EXTSELECTCLIPRGN:
>         {
>   	const EMREXTSELECTCLIPRGN *lpRgn = (const EMREXTSELECTCLIPRGN *)mr;
> -	const RGNDATA *pRgnData = (const RGNDATA *)lpRgn->RgnData;
> -	DWORD dwSize = sizeof(RGNDATAHEADER) + pRgnData->rdh.nCount * sizeof(RECT);
This fix is important. ExtCreateRegion with size == 0 fails, if it is 
properly implemented. I (or rather Amine) already sent a patch to wine. 
But they first wanted a test that proves that this is correct, so I 
wrote them a test, then they asked for this and that and I stopped 
caring. See 
https://www.winehq.org/pipermail/wine-cvs/2014-November/103770.html and
https://www.winehq.org/pipermail/wine-patches/2014-November/135315.html
Amine might know if the actual fixes to this file and ExtCreateRegion 
have been sent to wine as well.
We should just pass them to wine-staging.


>   	HRGN hRgn = 0;
>   
>           if (mr->nSize >= sizeof(*lpRgn) + sizeof(RGNDATAHEADER))
> -            hRgn = ExtCreateRegion( &info->init_transform, dwSize, pRgnData );
> +            hRgn = ExtCreateRegion( &info->init_transform, 0, (const RGNDATA *)lpRgn->RgnData );
>   
>   	ExtSelectClipRgn(hdc, hRgn, (INT)(lpRgn->iMode));
>   	/* ExtSelectClipRgn created a copy of the region */
>
> (this is the reverse diff, i.e. the one that would get it back in sync
>   with Wine)
>
> My guess is I should just remove this difference and get it completely
> synced (i.e. apply the above patch)? What do you think?
>
>
> On 2014-12-29 15:25, tkreuzer at svn.reactos.org wrote:
>> Author: tkreuzer
>> Date: Mon Dec 29 14:25:30 2014
>> New Revision: 65893
>>
>> URL: http://svn.reactos.org/svn/reactos?rev=65893&view=rev
>> Log:
>> [GDI32]
>> Import metafile code from wine. The wine code is unmodified (please keep it that way) and used through a wrapper function dispatcher and some helpers. Fixes 1931 wine tests.
>>
>> Added:
>>      trunk/reactos/win32ss/gdi/gdi32/include/wine/   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/include/wine/gdi_driver.h   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/CMakeLists.txt   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/enhmetafile.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/bitblt.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/dc.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/enhmetafiledrv.h   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/graphics.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/init.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/objects.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/gdi_private.h   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/metafile.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/bitblt.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/dc.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/graphics.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/init.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/metafiledrv.h   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/objects.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/text.c   (with props)
>>      trunk/reactos/win32ss/gdi/gdi32/wine/rosglue.c   (with props)
>> Modified:
>>      trunk/reactos/win32ss/gdi/gdi32/CMakeLists.txt
>>      trunk/reactos/win32ss/gdi/gdi32/include/gdi32p.h
>>      trunk/reactos/win32ss/gdi/gdi32/misc/misc.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/arc.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/bitmap.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/coord.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/dc.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/enhmfile.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/gdiobj.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/metafile.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/painting.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/palette.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/path.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/region.c
>>      trunk/reactos/win32ss/gdi/gdi32/objects/text.c
>>      trunk/reactos/win32ss/include/ntgdihdl.h
>>
>> [This mail would be too long, it was shortened to contain the URLs only.]
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/CMakeLists.txt
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/CMakeLists.txt?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/include/gdi32p.h
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/include/gdi32p.h?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/include/wine/gdi_driver.h
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/include/wine/gdi_driver.h?rev=65893
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/misc/misc.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/misc/misc.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/arc.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/arc.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/bitmap.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/bitmap.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/coord.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/coord.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/dc.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/dc.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/enhmfile.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/enhmfile.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/gdiobj.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/gdiobj.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/metafile.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/metafile.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/painting.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/painting.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/palette.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/palette.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/path.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/path.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/region.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/region.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Modified: trunk/reactos/win32ss/gdi/gdi32/objects/text.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/objects/text.c?rev=65893&r1=65892&r2=65893&view=diff
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/CMakeLists.txt
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/CMakeLists.txt?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/enhmetafile.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/enhmetafile.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/bitblt.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/bitblt.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/dc.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/dc.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/enhmetafiledrv.h
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/enhmetafiledrv.h?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/graphics.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/graphics.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/init.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/init.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/objects.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/enhmfdrv/objects.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/gdi_private.h
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/gdi_private.h?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/metafile.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/metafile.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/bitblt.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/bitblt.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/dc.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/dc.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/graphics.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/graphics.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/init.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/init.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/metafiledrv.h
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/metafiledrv.h?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/objects.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/objects.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/text.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/mfdrv/text.c?rev=65893
>>
>> Added: trunk/reactos/win32ss/gdi/gdi32/wine/rosglue.c
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/gdi32/wine/rosglue.c?rev=65893
>>
>> Modified: trunk/reactos/win32ss/include/ntgdihdl.h
>> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/include/ntgdihdl.h?rev=65893&r1=65892&r2=65893&view=diff
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev
>


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3683 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://www.reactos.org/pipermail/ros-dev/attachments/20150331/4684d1f5/attachment-0001.bin>


More information about the Ros-dev mailing list