Module: wine Branch: master Commit: a28ddddcbcd3307e58a8de42a8e4d488080353e5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a28ddddcbcd3307e58a8de42a8...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Sep 7 17:01:29 2011 +0200
gdi32: Leave it up to the driver to push the new device on the DC stack in CreateDC.
---
dlls/gdi32/dc.c | 4 +--- dlls/gdi32/driver.c | 2 +- dlls/wineps.drv/init.c | 8 ++++---- dlls/winex11.drv/init.c | 6 +++--- include/wine/gdi_driver.h | 4 ++-- 5 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 7c1ebc0..5ba4e59 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -628,13 +628,11 @@ HDC WINAPI CreateDCW( LPCWSTR driver, LPCWSTR device, LPCWSTR output,
if (funcs->pCreateDC) { - PHYSDEV physdev; - if (!funcs->pCreateDC( hdc, &physdev, buf, device, output, initData )) + if (!funcs->pCreateDC( &dc->physDev, buf, device, output, initData )) { WARN("creation aborted by device\n" ); goto error; } - push_dc_driver( &dc->physDev, physdev, funcs ); }
dc->vis_rect.left = 0; diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c index 4d1054e..51e241f 100644 --- a/dlls/gdi32/driver.c +++ b/dlls/gdi32/driver.c @@ -224,7 +224,7 @@ static BOOL nulldrv_CreateCompatibleDC( PHYSDEV orig, PHYSDEV *pdev ) return display_driver->funcs->pCreateCompatibleDC( NULL, pdev ); }
-static BOOL nulldrv_CreateDC( HDC hdc, PHYSDEV *dev, LPCWSTR driver, LPCWSTR device, +static BOOL nulldrv_CreateDC( PHYSDEV *dev, LPCWSTR driver, LPCWSTR device, LPCWSTR output, const DEVMODEW *devmode ) { assert(0); /* should never be called */ diff --git a/dlls/wineps.drv/init.c b/dlls/wineps.drv/init.c index a1ed1a2..e7e545e 100644 --- a/dlls/wineps.drv/init.c +++ b/dlls/wineps.drv/init.c @@ -323,8 +323,8 @@ static PSDRV_PDEVICE *create_psdrv_physdev( PRINTERINFO *pi ) /********************************************************************** * PSDRV_CreateDC */ -static BOOL PSDRV_CreateDC( HDC hdc, PHYSDEV *pdev, LPCWSTR driver, LPCWSTR device, - LPCWSTR output, const DEVMODEW* initData ) +static BOOL PSDRV_CreateDC( PHYSDEV *pdev, LPCWSTR driver, LPCWSTR device, + LPCWSTR output, const DEVMODEW* initData ) { PSDRV_PDEVICE *physDev; PRINTERINFO *pi; @@ -354,7 +354,6 @@ static BOOL PSDRV_CreateDC( HDC hdc, PHYSDEV *pdev, LPCWSTR driver, LPCWSTR devi }
if (!(physDev = create_psdrv_physdev( pi ))) return FALSE; - *pdev = &physDev->dev;
if (output && *output) { INT len = WideCharToMultiByte( CP_ACP, 0, output, -1, NULL, 0, NULL, NULL ); @@ -369,7 +368,8 @@ static BOOL PSDRV_CreateDC( HDC hdc, PHYSDEV *pdev, LPCWSTR driver, LPCWSTR devi }
PSDRV_UpdateDevCaps(physDev); - SelectObject( hdc, PSDRV_DefaultFont ); + SelectObject( (*pdev)->hdc, PSDRV_DefaultFont ); + push_dc_driver( pdev, &physDev->dev, &psdrv_funcs ); return TRUE; }
diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c index ea96d0c..2b0df17 100644 --- a/dlls/winex11.drv/init.c +++ b/dlls/winex11.drv/init.c @@ -144,8 +144,8 @@ static X11DRV_PDEVICE *create_x11_physdev( Drawable drawable ) /********************************************************************** * X11DRV_CreateDC */ -static BOOL X11DRV_CreateDC( HDC hdc, PHYSDEV *pdev, LPCWSTR driver, LPCWSTR device, - LPCWSTR output, const DEVMODEW* initData ) +static BOOL X11DRV_CreateDC( PHYSDEV *pdev, LPCWSTR driver, LPCWSTR device, + LPCWSTR output, const DEVMODEW* initData ) { X11DRV_PDEVICE *physDev = create_x11_physdev( root_window );
@@ -156,7 +156,7 @@ static BOOL X11DRV_CreateDC( HDC hdc, PHYSDEV *pdev, LPCWSTR driver, LPCWSTR dev physDev->drawable_rect = virtual_screen_rect; SetRect( &physDev->dc_rect, 0, 0, virtual_screen_rect.right - virtual_screen_rect.left, virtual_screen_rect.bottom - virtual_screen_rect.top ); - *pdev = &physDev->dev; + push_dc_driver( pdev, &physDev->dev, &x11drv_funcs ); return TRUE; }
diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h index 3f67d81..1e7ebdb 100644 --- a/include/wine/gdi_driver.h +++ b/include/wine/gdi_driver.h @@ -66,7 +66,7 @@ struct gdi_dc_funcs BOOL (*pCloseFigure)(PHYSDEV); BOOL (*pCreateBitmap)(PHYSDEV,HBITMAP); BOOL (*pCreateCompatibleDC)(PHYSDEV,PHYSDEV*); - BOOL (*pCreateDC)(HDC,PHYSDEV *,LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*); + BOOL (*pCreateDC)(PHYSDEV*,LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODEW*); HBITMAP (*pCreateDIBSection)(PHYSDEV,HBITMAP,BITMAPINFO *,UINT); BOOL (*pDeleteBitmap)(HBITMAP); BOOL (*pDeleteDC)(PHYSDEV); @@ -189,7 +189,7 @@ struct gdi_dc_funcs };
/* increment this when you change the DC function table */ -#define WINE_GDI_DRIVER_VERSION 12 +#define WINE_GDI_DRIVER_VERSION 13
static inline PHYSDEV get_physdev_entry_point( PHYSDEV dev, size_t offset ) {