From aa4934783fb213c781e7ea4e5d54782ec5e570e6 Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Fri, 29 Jul 2016 15:09:34 +0100 Subject: [PATCH] gdi32: Where possible directly access the DC instead of using GetCurrentObject(). Signed-off-by: Huw Davies Signed-off-by: Alexandre Julliard --- dlls/gdi32/dc.c | 6 +++--- dlls/gdi32/driver.c | 4 ++-- dlls/gdi32/enhmfdrv/objects.c | 6 ++++-- dlls/gdi32/font.c | 2 +- dlls/gdi32/palette.c | 3 ++- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 3b6c2eaccf3..92a98df09bd 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -354,8 +354,8 @@ void DC_UpdateXforms( DC *dc ) if (memcmp(&oldworld2vport, &dc->xformWorld2Vport, sizeof(oldworld2vport)) && !GdiIsMetaFileDC(dc->hSelf)) { - SelectObject(dc->hSelf, GetCurrentObject(dc->hSelf, OBJ_FONT)); - SelectObject(dc->hSelf, GetCurrentObject(dc->hSelf, OBJ_PEN)); + SelectObject(dc->hSelf, dc->hFont); + SelectObject(dc->hSelf, dc->hPen); } } @@ -1038,7 +1038,7 @@ INT WINAPI SetGraphicsMode( HDC hdc, INT mode ) dc->GraphicsMode = mode; } /* font metrics depend on the graphics mode */ - if (ret != mode) SelectObject(dc->hSelf, GetCurrentObject(dc->hSelf, OBJ_FONT)); + if (ret != mode) SelectObject(dc->hSelf, dc->hFont); release_dc_ptr( dc ); return ret; } diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c index d052e04500b..18e109e74c7 100644 --- a/dlls/gdi32/driver.c +++ b/dlls/gdi32/driver.c @@ -390,9 +390,9 @@ static INT nulldrv_GetTextFace( PHYSDEV dev, INT size, LPWSTR name ) { INT ret = 0; LOGFONTW font; - HFONT hfont = GetCurrentObject( dev->hdc, OBJ_FONT ); + DC *dc = get_nulldrv_dc( dev ); - if (GetObjectW( hfont, sizeof(font), &font )) + if (GetObjectW( dc->hFont, sizeof(font), &font )) { ret = strlenW( font.lfFaceName ) + 1; if (name) diff --git a/dlls/gdi32/enhmfdrv/objects.c b/dlls/gdi32/enhmfdrv/objects.c index a8f6fb55189..9bf79e42c9d 100644 --- a/dlls/gdi32/enhmfdrv/objects.c +++ b/dlls/gdi32/enhmfdrv/objects.c @@ -463,10 +463,11 @@ found: COLORREF EMFDRV_SetDCBrushColor( PHYSDEV dev, COLORREF color ) { EMFDRV_PDEVICE *physDev = get_emf_physdev( dev ); + DC *dc = get_physdev_dc( dev ); EMRSELECTOBJECT emr; DWORD index; - if (GetCurrentObject( dev->hdc, OBJ_BRUSH ) != GetStockObject( DC_BRUSH )) return color; + if (dc->hBrush != GetStockObject( DC_BRUSH )) return color; if (physDev->dc_brush) DeleteObject( physDev->dc_brush ); if (!(physDev->dc_brush = CreateSolidBrush( color ))) return CLR_INVALID; @@ -484,11 +485,12 @@ COLORREF EMFDRV_SetDCBrushColor( PHYSDEV dev, COLORREF color ) COLORREF EMFDRV_SetDCPenColor( PHYSDEV dev, COLORREF color ) { EMFDRV_PDEVICE *physDev = get_emf_physdev( dev ); + DC *dc = get_physdev_dc( dev ); EMRSELECTOBJECT emr; DWORD index; LOGPEN logpen = { PS_SOLID, { 0, 0 }, color }; - if (GetCurrentObject( dev->hdc, OBJ_PEN ) != GetStockObject( DC_PEN )) return color; + if (dc->hPen != GetStockObject( DC_PEN )) return color; if (physDev->dc_pen) DeleteObject( physDev->dc_pen ); if (!(physDev->dc_pen = CreatePenIndirect( &logpen ))) return CLR_INVALID; diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index afeebb83390..0dad0243ece 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -2269,7 +2269,7 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x, INT y, UINT flags, } GetTextMetricsW(hdc, &tm); - GetObjectW(GetCurrentObject(hdc, OBJ_FONT), sizeof(lf), &lf); + GetObjectW(dc->hFont, sizeof(lf), &lf); if(!(tm.tmPitchAndFamily & TMPF_VECTOR)) /* Non-scalable fonts shouldn't be rotated */ lf.lfEscapement = 0; diff --git a/dlls/gdi32/palette.c b/dlls/gdi32/palette.c index be84b71a416..a8135d5a376 100644 --- a/dlls/gdi32/palette.c +++ b/dlls/gdi32/palette.c @@ -503,6 +503,7 @@ UINT WINAPI GetNearestPaletteIndex( COLORREF nulldrv_GetNearestColor( PHYSDEV dev, COLORREF color ) { unsigned char spec_type; + DC *dc = get_nulldrv_dc( dev ); if (!(GetDeviceCaps( dev->hdc, RASTERCAPS ) & RC_PALETTE)) return color; @@ -512,7 +513,7 @@ COLORREF nulldrv_GetNearestColor( PHYSDEV dev, COLORREF color ) /* we need logical palette for PALETTERGB and PALETTEINDEX colorrefs */ UINT index; PALETTEENTRY entry; - HPALETTE hpal = GetCurrentObject( dev->hdc, OBJ_PAL ); + HPALETTE hpal = dc->hPalette; if (!hpal) hpal = GetStockObject( DEFAULT_PALETTE ); if (spec_type == 2) /* PALETTERGB */ -- 2.11.4.GIT