d3dx8 [2/2]: add basic functions for MatrixStack

H. Verbeet hverbeet at gmail.com
Thu Dec 6 02:38:51 CST 2007

On 05/12/2007, Stefan Dösinger <stefandoesinger at gmx.at> wrote:
> Am Mittwoch, 5. Dezember 2007 18:13:30 schrieb David.Adam at math.cnrs.fr:
> > This is my first attempt with ICOM objects. So, all the advices are
> > welcome.
> A few suggestions:
> +HRESULT WINAPI ID3DXMatrixStackImpl_QueryInterface(ID3DXMatrixStack *iface,
> REFIID riid, void **ppvObject)
> + ...
> +     IClassFactory_AddRef(iface);
> It is better to use ID3DXMatrixStack_AddRef(iface) here. It is essentially the
> same, but it looks more consistent
> The AddRef() and Release() methods should have a TRACE which write either the
> new or old refcount, otherwise tracking refcounting bugs is hell.
Having a TRACE in QueryInterface is occasionally useful as well.

A few more comments:
  - QueryInterface should return S_OK rather than D3D_OK, unless
you've got tests to prove it doesn't.
  - AFAIK on failure you should set *ppvObject to NULL.
  - There's no real reason to stick to MS names for parameters.

More information about the wine-devel mailing list