Hi,

Thanks for your patch, though it looks incomplete as many other class have the same issue.
I took liberty to upgrade your patch accordingly (see enclosed)

PS: I removed the sign-off as I altered the patch

On 2020-10-13 20:57, Jacek Caban wrote:
Signed-off-by: Jacek Caban <ja...@codeweavers.com>
---

This patch should fix the problem discussed in the other thread. It
also came out recently in Mozilla:
https://bugzilla.mozilla.org/show_bug.cgi?id=1667423

 mingw-w64-headers/include/dcomp.h | 14 ++++++++++++++
 1 file changed, 14 insertions(+)



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
From 0d7d4d3f026dac93055f1647bdf0ab790dcd9229 Mon Sep 17 00:00:00 2001
From: Jacek Caban <ja...@codeweavers.com>
Date: Wed, 14 Oct 2020 09:35:13 +0200
Subject: [PATCH] dcomp.h: Work around C++ ABI differences.

Co-authored-by: Pierre Lamot <pie...@videolabs.io>
---
 mingw-w64-headers/include/dcomp.h | 135 ++++++++++++++++++++++++++++++
 1 file changed, 135 insertions(+)

diff --git a/mingw-w64-headers/include/dcomp.h b/mingw-w64-headers/include/dcomp.h
index ec237168..58f4b846 100644
--- a/mingw-w64-headers/include/dcomp.h
+++ b/mingw-w64-headers/include/dcomp.h
@@ -60,16 +60,24 @@ DECLARE_INTERFACE_IID_(IDCompositionTransform,IDCompositionTransform3D,"fd55faa7
 #define INTERFACE IDCompositionTranslateTransform
 DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform,IDCompositionTransform,"06791122-c6f0-417d-8323-269e987f5954")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetOffsetX)(THIS_ float) PURE;
     STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetOffsetY)(THIS_ float) PURE;
     STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
+#endif
 };
 
 #undef INTERFACE
 #define INTERFACE IDCompositionScaleTransform
 DECLARE_INTERFACE_IID_(IDCompositionScaleTransform,IDCompositionTransform,"71fde914-40ef-45ef-bd51-68b037c339f9")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetScaleX)(THIS_ float) PURE;
     STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetScaleY)(THIS_ float) PURE;
@@ -78,24 +86,44 @@ DECLARE_INTERFACE_IID_(IDCompositionScaleTransform,IDCompositionTransform,"71fde
     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetCenterY)(THIS_ float) PURE;
     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetScaleX)(THIS_ float) PURE;
+    STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetScaleY)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+#endif
 };
 
 #undef INTERFACE
 #define INTERFACE IDCompositionRotateTransform
 DECLARE_INTERFACE_IID_(IDCompositionRotateTransform,IDCompositionTransform,"641ed83c-ae96-46c5-90dc-32774cc5c6d5")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetAngle)(THIS_ float) PURE;
     STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetCenterX)(THIS_ float) PURE;
     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetCenterY)(THIS_ float) PURE;
     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAngle)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+#endif
 };
 
 #undef INTERFACE
 #define INTERFACE IDCompositionSkewTransform
 DECLARE_INTERFACE_IID_(IDCompositionSkewTransform,IDCompositionTransform,"e57aa735-dcdb-4c72-9c61-0591f58889ee")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetAngleX)(THIS_ float) PURE;
     STDMETHOD(SetAngleX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetAngleY)(THIS_ float) PURE;
@@ -104,6 +132,16 @@ DECLARE_INTERFACE_IID_(IDCompositionSkewTransform,IDCompositionTransform,"e57aa7
     STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetCenterY)(THIS_ float) PURE;
     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetAngleX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAngleX)(THIS_ float) PURE;
+    STDMETHOD(SetAngleY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAngleY)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+#endif
 };
 
 #undef INTERFACE
@@ -111,26 +149,41 @@ DECLARE_INTERFACE_IID_(IDCompositionSkewTransform,IDCompositionTransform,"e57aa7
 DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform,IDCompositionTransform,"16cdff07-c503-419c-83f2-0965c7af1fa6")
 {
     STDMETHOD(SetMatrix)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
     STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
+    STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
+#endif
 };
 
 #undef INTERFACE
 #define INTERFACE IDCompositionTranslateTransform3D
 DECLARE_INTERFACE_IID_(IDCompositionTranslateTransform3D,IDCompositionTransform3D,"91636d4b-9ba1-4532-aaf7-e3344994d788")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetOffsetX)(THIS_ float) PURE;
     STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetOffsetY)(THIS_ float) PURE;
     STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetOffsetZ)(THIS_ float) PURE;
     STDMETHOD(SetOffsetZ)(THIS_ IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetZ)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetZ)(THIS_ float) PURE;
+#endif
 };
 
 #undef INTERFACE
 #define INTERFACE IDCompositionScaleTransform3D
 DECLARE_INTERFACE_IID_(IDCompositionScaleTransform3D,IDCompositionTransform3D,"2a9e9ead-364b-4b15-a7c4-a1997f78b389")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetScaleX)(THIS_ float) PURE;
     STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetScaleY)(THIS_ float) PURE;
@@ -143,12 +196,27 @@ DECLARE_INTERFACE_IID_(IDCompositionScaleTransform3D,IDCompositionTransform3D,"2
     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetCenterZ)(THIS_ float) PURE;
     STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetScaleX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetScaleX)(THIS_ float) PURE;
+    STDMETHOD(SetScaleY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetScaleY)(THIS_ float) PURE;
+    STDMETHOD(SetScaleZ)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetScaleZ)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+    STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterZ)(THIS_ float) PURE;
+#endif
 };
 
 #undef INTERFACE
 #define INTERFACE IDCompositionRotateTransform3D
 DECLARE_INTERFACE_IID_(IDCompositionRotateTransform3D,IDCompositionTransform3D,"d8f5b23f-d429-4a91-b55a-d2f45fd75b18")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetAngle)(THIS_ float) PURE;
     STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetAxisX)(THIS_ float) PURE;
@@ -163,6 +231,22 @@ DECLARE_INTERFACE_IID_(IDCompositionRotateTransform3D,IDCompositionTransform3D,"
     STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetCenterZ)(THIS_ float) PURE;
     STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetAngle)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAngle)(THIS_ float) PURE;
+    STDMETHOD(SetAxisX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAxisX)(THIS_ float) PURE;
+    STDMETHOD(SetAxisY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAxisY)(THIS_ float) PURE;
+    STDMETHOD(SetAxisZ)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetAxisZ)(THIS_ float) PURE;
+    STDMETHOD(SetCenterX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterX)(THIS_ float) PURE;
+    STDMETHOD(SetCenterY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterY)(THIS_ float) PURE;
+    STDMETHOD(SetCenterZ)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetCenterZ)(THIS_ float) PURE;
+#endif
 };
 
 #undef INTERFACE
@@ -170,16 +254,26 @@ DECLARE_INTERFACE_IID_(IDCompositionRotateTransform3D,IDCompositionTransform3D,"
 DECLARE_INTERFACE_IID_(IDCompositionMatrixTransform3D,IDCompositionTransform3D,"4b3363f0-643b-41b7-b6e0-ccf22d34467c")
 {
     STDMETHOD(SetMatrix)(THIS_ const D3DMATRIX&) PURE;
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
     STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetMatrixElement)(THIS_ int,int,IDCompositionAnimation*) PURE;
+    STDMETHOD(SetMatrixElement)(THIS_ int,int,float) PURE;
+#endif
 };
 
 #undef INTERFACE
 #define INTERFACE IDCompositionEffectGroup
 DECLARE_INTERFACE_IID_(IDCompositionEffectGroup,IDCompositionEffect,"a7929a74-e6b2-4bd6-8b95-4040119ca34d")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetOpacity)(THIS_ float) PURE;
     STDMETHOD(SetOpacity)(THIS_ IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetOpacity)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOpacity)(THIS_ float) PURE;
+#endif
     STDMETHOD(SetTransform3D)(THIS_ IDCompositionTransform3D*) PURE;
 };
 
@@ -193,6 +287,7 @@ DECLARE_INTERFACE_IID_(IDCompositionClip,IUnknown,"64ac3703-9d3f-45ec-a109-7cac0
 #define INTERFACE IDCompositionRectangleClip
 DECLARE_INTERFACE_IID_(IDCompositionRectangleClip,IDCompositionClip,"9842ad7d-d9cf-4908-aed7-48b51da5e7c2")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetLeft)(THIS_ float) PURE;
     STDMETHOD(SetLeft)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetTop)(THIS_ float) PURE;
@@ -217,24 +312,64 @@ DECLARE_INTERFACE_IID_(IDCompositionRectangleClip,IDCompositionClip,"9842ad7d-d9
     STDMETHOD(SetBottomRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetBottomRightRadiusY)(THIS_ float) PURE;
     STDMETHOD(SetBottomRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
+#else
+    STDMETHOD(SetLeft)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetLeft)(THIS_ float) PURE;
+    STDMETHOD(SetTop)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTop)(THIS_ float) PURE;
+    STDMETHOD(SetRight)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetRight)(THIS_ float) PURE;
+    STDMETHOD(SetBottom)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottom)(THIS_ float) PURE;
+    STDMETHOD(SetTopLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTopLeftRadiusX)(THIS_ float) PURE;
+    STDMETHOD(SetTopLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTopLeftRadiusY)(THIS_ float) PURE;
+    STDMETHOD(SetTopRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTopRightRadiusX)(THIS_ float) PURE;
+    STDMETHOD(SetTopRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetTopRightRadiusY)(THIS_ float) PURE;
+    STDMETHOD(SetBottomLeftRadiusX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottomLeftRadiusX)(THIS_ float) PURE;
+    STDMETHOD(SetBottomLeftRadiusY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottomLeftRadiusY)(THIS_ float) PURE;
+    STDMETHOD(SetBottomRightRadiusX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottomRightRadiusX)(THIS_ float) PURE;
+    STDMETHOD(SetBottomRightRadiusY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetBottomRightRadiusY)(THIS_ float) PURE;
+#endif
 };
 
 #undef INTERFACE
 #define INTERFACE IDCompositionVisual
 DECLARE_INTERFACE_IID_(IDCompositionVisual,IUnknown,"4d93059d-097b-4651-9a60-f0f25116e2f3")
 {
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetOffsetX)(THIS_ float) PURE;
     STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetOffsetY)(THIS_ float) PURE;
     STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
     STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
     STDMETHOD(SetTransform)(THIS_ IDCompositionTransform*) PURE;
+#else
+    STDMETHOD(SetOffsetX)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetX)(THIS_ float) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ IDCompositionAnimation*) PURE;
+    STDMETHOD(SetOffsetY)(THIS_ float) PURE;
+    STDMETHOD(SetTransform)(THIS_ IDCompositionTransform*) PURE;
+    STDMETHOD(SetTransform)(THIS_ const D2D_MATRIX_3X2_F&) PURE;
+#endif
     STDMETHOD(SetTransformParent)(THIS_ IDCompositionVisual*) PURE;
     STDMETHOD(SetEffect)(THIS_ IDCompositionEffect*) PURE;
     STDMETHOD(SetBitmapInterpolationMode)(THIS_ DCOMPOSITION_BITMAP_INTERPOLATION_MODE) PURE;
     STDMETHOD(SetBorderMode)(THIS_ DCOMPOSITION_BORDER_MODE) PURE;
+#if defined(_MSC_VER) && defined(__cplusplus)
     STDMETHOD(SetClip)(THIS_ const D2D_RECT_F&) PURE;
     STDMETHOD(SetClip)(THIS_ IDCompositionClip*) PURE;
+#else
+    STDMETHOD(SetClip)(THIS_ IDCompositionClip*) PURE;
+    STDMETHOD(SetClip)(THIS_ const D2D_RECT_F&) PURE;
+#endif
     STDMETHOD(SetContent)(THIS_ IUnknown*) PURE;
     STDMETHOD(AddVisual)(THIS_ IDCompositionVisual*,BOOL,IDCompositionVisual*) PURE;
     STDMETHOD(RemoveVisual)(THIS_ IDCompositionVisual*) PURE;
-- 
2.25.1

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to