https://bugs.winehq.org/show_bug.cgi?id=54226
Zeb Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #1 from Zeb Figura z.figura12@gmail.com --- (In reply to Alvin Wong from comment #0)
(I have not checked what `/cstruct_out` on MIDL actually does to the C bindings.)
This, basically:
@@ -129,8 +129,9 @@ EXTERN_C const IID IID_ID2D1Bitmap; ID2D1Bitmap * This);
DECLSPEC_XFGVIRT(ID2D1Bitmap, b) - struct apple ( STDMETHODCALLTYPE *b )( - ID2D1Bitmap * This); + struct apple *( STDMETHODCALLTYPE *b )( + ID2D1Bitmap * This, + apple * RetVal);
END_INTERFACE } ID2D1BitmapVtbl; @@ -158,8 +159,8 @@ EXTERN_C const IID IID_ID2D1Bitmap; #define ID2D1Bitmap_a(This) \ ( (This)->lpVtbl -> a(This) )
-#define ID2D1Bitmap_b(This) \ - ( (This)->lpVtbl -> b(This) ) +#define ID2D1Bitmap_b(This,RetVal) \ + ( (This)->lpVtbl -> b(This,RetVal) )
#endif /* COBJMACROS */
But we already emit the C type definition (the first hunk) with ABI compatibility in all cases. For the macro we currently have e.g.
#define ID2D1Bitmap_a(This) (This)->lpVtbl->a(This) #define ID2D1Bitmap_b(This) ID2D1Bitmap_b_define_WIDL_C_INLINE_WRAPPERS_for_aggregate_return_support
but is there really any point to doing this? Do we care about API compatibility if the API is just broken? Should we just implement the ABI-compatible behaviour for the macros and not bother checking cstruct_out?