diff --git a/gfx/common/d3d_common.c b/gfx/common/d3d_common.c index 1192c9e907..aa8c391d33 100644 --- a/gfx/common/d3d_common.c +++ b/gfx/common/d3d_common.c @@ -1477,3 +1477,24 @@ bool d3dx_create_font_indirect(LPDIRECT3DDEVICE dev, return false; #endif } + +void d3dxbuffer_release(void *data) +{ +#ifdef HAVE_D3D9 +#ifdef HAVE_D3DX +#ifdef __cplusplus + ID3DXBuffer *p = (ID3DXBuffer*)data; +#else + LPD3DXBUFFER p = (LPD3DXBUFFER)data; +#endif + if (!p) + return; + +#ifdef __cplusplus + p->Release(); +#else + p->lpVtbl->Release(p); +#endif +#endif +#endif +} diff --git a/gfx/common/d3d_common.h b/gfx/common/d3d_common.h index 2a4a04275c..4e0cf67adc 100644 --- a/gfx/common/d3d_common.h +++ b/gfx/common/d3d_common.h @@ -192,6 +192,8 @@ bool d3d_check_device_type(LPDIRECT3D d3d, bool d3dx_create_font_indirect(LPDIRECT3DDEVICE dev, void *desc, void **font_data); +void d3dxbuffer_release(void *data); + D3DTEXTUREFILTERTYPE d3d_translate_filter(unsigned type); RETRO_END_DECLS diff --git a/gfx/drivers_font/xdk360_fonts.cpp b/gfx/drivers_font/xdk360_fonts.cpp index de923944cb..4769e406b1 100644 --- a/gfx/drivers_font/xdk360_fonts.cpp +++ b/gfx/drivers_font/xdk360_fonts.cpp @@ -409,8 +409,8 @@ typedef struct GLYPH_ATTR typedef struct { D3DVertexDeclaration *m_pFontVertexDecl; - D3DVertexShader *m_pFontVertexShader; - D3DPixelShader *m_pFontPixelShader; + D3DVertexShader *m_pFontVertexShader; + D3DPixelShader *m_pFontPixelShader; } Font_Locals_t; typedef struct @@ -486,7 +486,7 @@ static HRESULT xdk360_video_font_create_shaders(xdk360_video_font_t * font) { hr = d3dr->CreateVertexShader((const DWORD*)pShaderCode->GetBufferPointer(), &font->s_FontLocals.m_pFontVertexShader ); - pShaderCode->Release(); + d3dxbuffer_release(pShaderCode); if (hr >= 0) { @@ -497,7 +497,7 @@ static HRESULT xdk360_video_font_create_shaders(xdk360_video_font_t * font) { hr = d3dr->CreatePixelShader((DWORD*)pShaderCode->GetBufferPointer(), &font->s_FontLocals.m_pFontPixelShader ); - pShaderCode->Release(); + d3dxbuffer_release(pShaderCode); if (hr >= 0) { diff --git a/gfx/drivers_shader/shader_hlsl.c b/gfx/drivers_shader/shader_hlsl.c index d520a04ca5..1df13a0aa5 100644 --- a/gfx/drivers_shader/shader_hlsl.c +++ b/gfx/drivers_shader/shader_hlsl.c @@ -77,12 +77,8 @@ typedef struct hlsl_shader_data hlsl_shader_data_t; #define ID3DXConstantTable_GetBufferPointer(p) (p)->GetBufferPointer() #endif -#ifndef ID3DXBuffer_Release -#define ID3DXBuffer_Release(p) (p)->Release() -#endif - -#ifndef ID3DXConstantTable_GetConstantByName -#define ID3DXConstantTable_GetConstantByName(p,a,b) ((p)->GetConstantByName(a, b)) +#ifndef ID3DXConstantTable_GetConstantByName +#define ID3DXConstantTable_GetConstantByName(p,a,b) ((p)->GetConstantByName(a, b)) #endif #ifndef IDirect3DDevice9_CreatePixelShader @@ -127,12 +123,8 @@ typedef struct hlsl_shader_data hlsl_shader_data_t; #define ID3DXConstantTable_GetBufferPointer(p) (p)->lpVtbl->GetBufferPointer(p) #endif -#ifndef ID3DXBuffer_Release -#define ID3DXBuffer_Release(p) (p)->lpVtbl->Release(p) -#endif - -#ifndef ID3DXConstantTable_GetConstantByName -#define ID3DXConstantTable_GetConstantByName(p,a,b) ((p)->lpVtbl->GetConstantByName(p, a, b)) +#ifndef ID3DXConstantTable_GetConstantByName +#define ID3DXConstantTable_GetConstantByName(p,a,b) ((p)->lpVtbl->GetConstantByName(p, a, b)) #endif #ifndef ID3DXConstantTable_SetMatrix @@ -303,18 +295,14 @@ static bool hlsl_compile_program( IDirect3DDevice9_CreatePixelShader(d3dr, (const DWORD*)ID3DXConstantTable_GetBufferPointer(code_f), &program->fprg); IDirect3DDevice9_CreateVertexShader(d3dr, (const DWORD*)ID3DXConstantTable_GetBufferPointer(code_v), &program->vprg); - ID3DXBuffer_Release(code_f); - ID3DXBuffer_Release(code_v); + d3dxbuffer_release((void*)code_f); + d3dxbuffer_release((void*)code_v); end: if (listing_f) - { - ID3DXBuffer_Release(listing_f); - } + d3dxbuffer_release((void*)listing_f); if (listing_v) - { - ID3DXBuffer_Release(listing_v); - } + d3dxbuffer_release((void*)listing_v); return ret; } @@ -643,4 +631,4 @@ const shader_backend_t hlsl_backend = { RARCH_SHADER_HLSL, "hlsl" -}; \ No newline at end of file +};