Module: wine Branch: master Commit: 3b9332a41d0d1c847316aa3ca9dd87efbe678164 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3b9332a41d0d1c847316aa3ca9...
Author: Tony Wasserka tony.wasserka@freenet.de Date: Mon Mar 9 17:10:28 2009 +0100
d3dx9: Recognize the D3DXSPRITE_DO_NOT_ADDREF_TEXTURE flag.
---
dlls/d3dx9_36/sprite.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/d3dx9_36/sprite.c b/dlls/d3dx9_36/sprite.c index afca6cf..ce9938e 100644 --- a/dlls/d3dx9_36/sprite.c +++ b/dlls/d3dx9_36/sprite.c @@ -222,7 +222,6 @@ D3DXSPRITE_OBJECTSPACE: do not change device transforms D3DXSPRITE_SORT_DEPTH_BACKTOFRONT: sort by position D3DXSPRITE_SORT_DEPTH_FRONTTOBACK: sort by position D3DXSPRITE_SORT_TEXTURE: sort by texture (so that it doesn't change too often) -D3DXSPRITE_DO_NOT_ADDREF_TEXTURE: don't call AddRef/Release on every Draw/Flush call */ if(This->vdecl==NULL) { static const D3DVERTEXELEMENT9 elements[] = @@ -283,7 +282,8 @@ static HRESULT WINAPI ID3DXSpriteImpl_Draw(LPD3DXSPRITE iface, LPDIRECT3DTEXTURE This->sprites=HeapReAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, This->sprites, This->allocated_sprites*sizeof(SPRITE)); } This->sprites[This->sprite_count].texture=texture; - IUnknown_AddRef(texture); + if(!(This->flags & D3DXSPRITE_DO_NOT_ADDREF_TEXTURE)) + IDirect3DTexture9_AddRef(texture);
/* Reuse the texture desc if possible */ if(This->sprite_count) { @@ -381,8 +381,8 @@ static HRESULT WINAPI ID3DXSpriteImpl_Flush(LPD3DXSPRITE iface) } HeapFree(GetProcessHeap(), 0, vertices);
- for(i=0;i<This->sprite_count;i++) - if(This->sprites[i].texture) + if(!(This->flags & D3DXSPRITE_DO_NOT_ADDREF_TEXTURE)) + for(i=0;i<This->sprite_count;i++) IDirect3DTexture9_Release(This->sprites[i].texture);
This->sprite_count=0;