diff --git a/gfx/common/d3d_common.c b/gfx/common/d3d_common.c index 2b520128a3..1e1c1fa121 100644 --- a/gfx/common/d3d_common.c +++ b/gfx/common/d3d_common.c @@ -2866,6 +2866,40 @@ bool d3dx_compile_shader( return false; } +void d3dx_font_release(void *data) +{ +#ifdef HAVE_D3DX +#if !defined(__cplusplus) || defined(CINTERFACE) + ID3DXFont *font = (ID3DXFont*)data; + if (!font) + return; + font->lpVtbl->Release(font); +#else + LPD3DXFONT font = (LPD3DXFONT)data; + if (!font) + return; + font->Release(); +#endif +#endif +} + +void d3dx_font_get_text_metrics(void *data, void *metrics) +{ +#ifdef HAVE_D3DX +#if !defined(__cplusplus) || defined(CINTERFACE) + ID3DXFont *font = (ID3DXFont*)data; + if (!font) + return; + font->lpVtbl->GetTextMetrics(font, (TEXTMETRICA*)metrics); +#else + LPD3DXFONT font = (LPD3DXFONT)data; + if (!font) + return; + font->GetTextMetricsA((TEXTMETRICA*)metrics); +#endif +#endif +} + bool d3dx_compile_shader_from_file( const char *src, const void *pdefines, diff --git a/gfx/common/d3d_common.h b/gfx/common/d3d_common.h index c9ae413557..b463bbecb7 100644 --- a/gfx/common/d3d_common.h +++ b/gfx/common/d3d_common.h @@ -220,8 +220,12 @@ bool d3d_check_device_type(void *d3d, bool d3dx_create_font_indirect(void *dev, void *desc, void **font_data); +void d3dx_font_get_text_metrics(void *data, void *metrics); + void d3dxbuffer_release(void *data); +void d3dx_font_release(void *data); + D3DTEXTUREFILTERTYPE d3d_translate_filter(unsigned type); bool d3dx_compile_shader( diff --git a/gfx/drivers_font/d3d_w32_font.c b/gfx/drivers_font/d3d_w32_font.c index 54cb78234a..38164adaf2 100644 --- a/gfx/drivers_font/d3d_w32_font.c +++ b/gfx/drivers_font/d3d_w32_font.c @@ -19,6 +19,7 @@ #endif #include "../drivers/d3d.h" +#include "../common/d3d_common.h" #include "../font_driver.h" #include "../../configuration.h" @@ -45,12 +46,8 @@ typedef struct #if !defined(__cplusplus) || defined(CINTERFACE) #define IDirect3DXFont_DrawTextA(p, a, b, c, d, e, f) (p)->lpVtbl->DrawTextA(p, a, b, c, d, e, f) -#define IDirect3DXFont_GetTextMetricsA(p, a) (p)->lpVtbl->GetTextMetricsA(p, a) -#define IDirect3DXFont_Release(p) (p)->lpVtbl->Release(p) #else #define IDirect3DXFont_DrawTextA(p, a, b, c, d, e, f) (p)->DrawTextA(a, b, c, d, e, f) -#define IDirect3DXFont_GetTextMetricsA(p, a) (p)->GetTextMetricsA(a) -#define IDirect3DXFont_Release(p) (p)->Release() #endif static void *d3dfonts_w32_init_font(void *video_data, @@ -84,7 +81,8 @@ static void *d3dfonts_w32_init_font(void *video_data, &desc, (void**)&d3dfonts->font)) goto error; - IDirect3DXFont_GetTextMetricsA(d3dfonts->font, &metrics); + + d3dx_font_get_text_metrics(d3dfonts->font, &metrics); d3dfonts->ascent = metrics.tmAscent; @@ -103,7 +101,7 @@ static void d3dfonts_w32_free_font(void *data, bool is_threaded) return; if (d3dfonts->font) - IDirect3DXFont_Release(d3dfonts->font); + d3dx_font_release(d3dfonts->font); free(d3dfonts); }