> > > > > > Could you post your converted source somewhere? It could be an > issue > > > with > > > > > particular method prototype, > > > > > for example for GetSize() correct C prototype would be: > > > > > > > > > > D2D1_SIZE_F * target_GetSize(ID2D1HwndRenderTarget *iface, > > D2D1_SIZE_F > > > > > *size) > > > > > > > > > > > > > I've uploaded complete buildable source here[1]. It also includes a > > > > temporary fix at line 215 of WicViewerD2D.c that you need to remove > to > > > see > > > > the problem. > > > > > > > > > > Thanks, I think mingw headers are broken when in C mode. Like I said, > > vtbl > > > method prototype should be: > > > > > > D2D1_SIZE_F * (STDMETHODCALLTYPE *GetSize)( > > > ID2D1HwndRenderTarget *This, > > > D2D1_SIZE_F *__ret); > > > > > > In Wine we generate it from .idl sources, fixed up inline wrapper is > like > > > this: > > > > > > static FORCEINLINE D2D1_SIZE_F > > > ID2D1HwndRenderTarget_GetSize(ID2D1HwndRenderTarget* This) { > > > D2D1_SIZE_F __ret; > > > return *This->lpVtbl->GetSize(This,&__ret); > > > } > > > > > > > > > > > > > > > > > [1] https://github.com/udbr/WicViewerD2D-C > > > > > > > > > > > Sorry, I think I got lost here. That fixed up wrapper should have to do > > with GetSize() returning incorrect data, right? Or is it related with the > > SIGSERV with gcc 9? > > > > I think it's the same issue. >
I'm not sure they are the same, since I can still make it work by implementing a pseudo ID2D1HwndRenderTarget_GetSize with assembly code which is exactly the same with the exception of rax and rdx swapped. And by working, I mean not crashing, I still need the workaround for the wrong data which you pointed, and that I implement directly into code. _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public