>
> > > > > 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

Reply via email to