diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 74d374725a6..13e48fd1cf2 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -154,6 +154,12 @@ DC *alloc_dc_ptr( WORD magic ) return NULL; } dc->nulldrv.hdc = dc->hSelf; + + if (font_driver && !font_driver->pCreateDC( &dc->physDev, NULL, NULL, NULL, NULL )) + { + free_dc_ptr( dc ); + return NULL; + } return dc; } diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c index 565e0ad302b..d0b30bed94c 100644 --- a/dlls/gdi32/driver.c +++ b/dlls/gdi32/driver.c @@ -49,6 +49,8 @@ struct graphics_driver static struct list drivers = LIST_INIT( drivers ); static struct graphics_driver *display_driver; +const struct gdi_dc_funcs *font_driver = NULL; + static CRITICAL_SECTION driver_section; static CRITICAL_SECTION_DEBUG critsect_debug = { diff --git a/dlls/gdi32/gdi_private.h b/dlls/gdi32/gdi_private.h index 0d38efe2920..9ee6c044669 100644 --- a/dlls/gdi32/gdi_private.h +++ b/dlls/gdi32/gdi_private.h @@ -270,6 +270,7 @@ extern DWORD blend_bitmapinfo( const BITMAPINFO *src_info, void *src_bits, struc /* driver.c */ extern const struct gdi_dc_funcs null_driver DECLSPEC_HIDDEN; extern const struct gdi_dc_funcs dib_driver DECLSPEC_HIDDEN; +extern const struct gdi_dc_funcs *font_driver DECLSPEC_HIDDEN; extern const struct gdi_dc_funcs *DRIVER_load_driver( LPCWSTR name ) DECLSPEC_HIDDEN; extern BOOL DRIVER_GetDriverName( LPCWSTR device, LPWSTR driver, DWORD size ) DECLSPEC_HIDDEN;