Matteo Bruni (@Mystral) commented about include/d3dx9anim.h:
#define INTERFACE ID3DXLoadUserData DECLARE_INTERFACE(ID3DXLoadUserData) { - STDMETHOD(LoadTopLevelData)(ID3DXFileData *child_data) PURE; - STDMETHOD(LoadFrameChildData)(D3DXFRAME *frame, ID3DXFileData *child_data) PURE; - STDMETHOD(LoadMeshChildData)(D3DXMESHCONTAINER *mesh_container, ID3DXFileData *child_data) PURE; + STDMETHOD(LoadTopLevelData)(ID3DXLoadUserData *user_data, ID3DXFileData *child_data) PURE; + STDMETHOD(LoadFrameChildData)(ID3DXLoadUserData *user_data, D3DXFRAME *frame, ID3DXFileData *child_data) PURE; + STDMETHOD(LoadMeshChildData)(ID3DXLoadUserData *user_data, D3DXMESHCONTAINER *mesh_container, ID3DXFileData *child_data) PURE; Soooo, this is awkward...
This would be more idiomatic as: ``` STDMETHOD(LoadTopLevelData)(THIS_ ID3DXFileData *child_data) PURE; ``` and such. But that's no big deal. Except, in all the copies of the DX SDK I have readily around (30, 41 and 43, for the records) the MS header is incredibly missing the This pointer as well :expressionless: We probably still want the correct definitions but this is quite unfortunate. I'd at least add a comment clarifying that we're intentionally diverging from the broken DX SDK header here. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4459#note_53274