Markus Amsler wrote:
@@ -4704,7 +4704,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl TRACE("(%p) : ppDecl=%p\n", This, ppDecl);
*ppDecl = This->stateBlock->vertexDecl;
- if (NULL != *ppDecl) IWineD3DVertexDeclaration_AddRef(*ppDecl); return WINED3D_OK;
These patches violate COM rules. Is this for performance or other reasons?
On 22/11/06, Robert Shearman rob@codeweavers.com wrote:
Markus Amsler wrote:
@@ -4704,7 +4704,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl TRACE("(%p) : ppDecl=%p\n", This, ppDecl);
*ppDecl = This->stateBlock->vertexDecl;
- if (NULL != *ppDecl) IWineD3DVertexDeclaration_AddRef(*ppDecl); return WINED3D_OK;
These patches violate COM rules. Is this for performance or other reasons?
The plan seems to be to not use COM for wined3d anymore, mainly because the layering of d3d87/8/9 on top of wined3d is causing some problems with reference counts. Those could probably be solved by using eg aggregation, but I think the general feeling is that COM only makes things harder in wined3d.
H. Verbeet wrote:
On 22/11/06, Robert Shearman rob@codeweavers.com wrote:
These patches violate COM rules. Is this for performance or other reasons?
The plan seems to be to not use COM for wined3d anymore, mainly because the layering of d3d87/8/9 on top of wined3d is causing some problems with reference counts. Those could probably be solved by using eg aggregation, but I think the general feeling is that COM only makes things harder in wined3d.
It's about simplifying code, with the side effect of perhaps small performance gains. It's also the first step to drop COM in wined3d, but that's not my intention (it seems Stefan likes the idea).
Wined3d refcounting is not causing refcount problems in d3dx, they are completly different. It just makes things easier.
On 22/11/06, Markus Amsler markus.amsler@oribi.org wrote:
It's about simplifying code, with the side effect of perhaps small performance gains. It's also the first step to drop COM in wined3d, but that's not my intention (it seems Stefan likes the idea).
Well, you can't half-remove COM. If you start removing refcounts like this you have to follow it all the way through, imo.
H. Verbeet wrote:
On 22/11/06, Markus Amsler markus.amsler@oribi.org wrote:
It's about simplifying code, with the side effect of perhaps small performance gains. It's also the first step to drop COM in wined3d, but that's not my intention (it seems Stefan likes the idea).
Well, you can't half-remove COM. If you start removing refcounts like this you have to follow it all the way through, imo.
I'm not half removing COM (at most 3% :-) ). lpVtble, IUnknown, IID_*, ... is still in place. I just simplified some refcount behaviour in wined3d, which happens to make wined3d less dependandt on the refcount COM feature. Which in turn makes it easier to remove COM. I dont' dare even trying to remove COM. That would be far over my skills.