[PATCH v2 09/11] gdi32: Where possible directly access the DC instead of using GetCurrentObject().
Huw Davies
huw at codeweavers.com
Fri Jul 29 09:09:34 CDT 2016
Signed-off-by: Huw Davies <huw at codeweavers.com>
---
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 3b6c2ea..92a98df 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 d052e04..18e109e 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 a8f6fb5..9bf79e4 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 a2b4170..f903972 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -2233,7 +2233,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 be84b71..a8135d5 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.7.4
More information about the wine-patches
mailing list