gdi32: Make sure DCs are fully zero-initialized.
This commit is contained in:
parent
1fa1ab5437
commit
1f15ffa1e6
@ -75,43 +75,21 @@ DC *alloc_dc_ptr( WORD magic )
|
|||||||
{
|
{
|
||||||
DC *dc;
|
DC *dc;
|
||||||
|
|
||||||
if (!(dc = HeapAlloc( GetProcessHeap(), 0, sizeof(*dc) ))) return NULL;
|
if (!(dc = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*dc) ))) return NULL;
|
||||||
|
|
||||||
dc->nulldrv.funcs = &null_driver;
|
dc->nulldrv.funcs = &null_driver;
|
||||||
dc->nulldrv.next = NULL;
|
|
||||||
dc->dibdrv = NULL;
|
|
||||||
dc->physDev = &dc->nulldrv;
|
dc->physDev = &dc->nulldrv;
|
||||||
dc->thread = GetCurrentThreadId();
|
dc->thread = GetCurrentThreadId();
|
||||||
dc->refcount = 1;
|
dc->refcount = 1;
|
||||||
dc->dirty = 0;
|
|
||||||
dc->saveLevel = 0;
|
|
||||||
dc->saved_dc = 0;
|
|
||||||
dc->dwHookData = 0;
|
|
||||||
dc->hookProc = NULL;
|
|
||||||
dc->wndOrgX = 0;
|
|
||||||
dc->wndOrgY = 0;
|
|
||||||
dc->wndExtX = 1;
|
dc->wndExtX = 1;
|
||||||
dc->wndExtY = 1;
|
dc->wndExtY = 1;
|
||||||
dc->vportOrgX = 0;
|
|
||||||
dc->vportOrgY = 0;
|
|
||||||
dc->vportExtX = 1;
|
dc->vportExtX = 1;
|
||||||
dc->vportExtY = 1;
|
dc->vportExtY = 1;
|
||||||
dc->miterLimit = 10.0f; /* 10.0 is the default, from MSDN */
|
dc->miterLimit = 10.0f; /* 10.0 is the default, from MSDN */
|
||||||
dc->flags = 0;
|
|
||||||
dc->layout = 0;
|
|
||||||
dc->hClipRgn = 0;
|
|
||||||
dc->hMetaRgn = 0;
|
|
||||||
dc->hMetaClipRgn = 0;
|
|
||||||
dc->hVisRgn = 0;
|
|
||||||
dc->region = 0;
|
|
||||||
dc->hPen = GDI_inc_ref_count( GetStockObject( BLACK_PEN ));
|
dc->hPen = GDI_inc_ref_count( GetStockObject( BLACK_PEN ));
|
||||||
dc->hBrush = GDI_inc_ref_count( GetStockObject( WHITE_BRUSH ));
|
dc->hBrush = GDI_inc_ref_count( GetStockObject( WHITE_BRUSH ));
|
||||||
dc->hFont = GDI_inc_ref_count( GetStockObject( SYSTEM_FONT ));
|
dc->hFont = GDI_inc_ref_count( GetStockObject( SYSTEM_FONT ));
|
||||||
dc->hBitmap = 0;
|
|
||||||
dc->hDevice = 0;
|
|
||||||
dc->hPalette = GetStockObject( DEFAULT_PALETTE );
|
dc->hPalette = GetStockObject( DEFAULT_PALETTE );
|
||||||
dc->gdiFont = 0;
|
|
||||||
dc->path = NULL;
|
|
||||||
dc->font_code_page = CP_ACP;
|
dc->font_code_page = CP_ACP;
|
||||||
dc->ROPmode = R2_COPYPEN;
|
dc->ROPmode = R2_COPYPEN;
|
||||||
dc->polyFillMode = ALTERNATE;
|
dc->polyFillMode = ALTERNATE;
|
||||||
@ -122,18 +100,9 @@ DC *alloc_dc_ptr( WORD magic )
|
|||||||
dc->dcBrushColor = RGB( 255, 255, 255 );
|
dc->dcBrushColor = RGB( 255, 255, 255 );
|
||||||
dc->dcPenColor = RGB( 0, 0, 0 );
|
dc->dcPenColor = RGB( 0, 0, 0 );
|
||||||
dc->textColor = RGB( 0, 0, 0 );
|
dc->textColor = RGB( 0, 0, 0 );
|
||||||
dc->brushOrgX = 0;
|
|
||||||
dc->brushOrgY = 0;
|
|
||||||
dc->mapperFlags = 0;
|
|
||||||
dc->textAlign = TA_LEFT | TA_TOP | TA_NOUPDATECP;
|
dc->textAlign = TA_LEFT | TA_TOP | TA_NOUPDATECP;
|
||||||
dc->charExtra = 0;
|
|
||||||
dc->breakExtra = 0;
|
|
||||||
dc->breakRem = 0;
|
|
||||||
dc->MapMode = MM_TEXT;
|
dc->MapMode = MM_TEXT;
|
||||||
dc->GraphicsMode = GM_COMPATIBLE;
|
dc->GraphicsMode = GM_COMPATIBLE;
|
||||||
dc->pAbortProc = NULL;
|
|
||||||
dc->CursPosX = 0;
|
|
||||||
dc->CursPosY = 0;
|
|
||||||
dc->ArcDirection = AD_COUNTERCLOCKWISE;
|
dc->ArcDirection = AD_COUNTERCLOCKWISE;
|
||||||
dc->xformWorld2Wnd.eM11 = 1.0f;
|
dc->xformWorld2Wnd.eM11 = 1.0f;
|
||||||
dc->xformWorld2Wnd.eM12 = 0.0f;
|
dc->xformWorld2Wnd.eM12 = 0.0f;
|
||||||
@ -144,10 +113,6 @@ DC *alloc_dc_ptr( WORD magic )
|
|||||||
dc->xformWorld2Vport = dc->xformWorld2Wnd;
|
dc->xformWorld2Vport = dc->xformWorld2Wnd;
|
||||||
dc->xformVport2World = dc->xformWorld2Wnd;
|
dc->xformVport2World = dc->xformWorld2Wnd;
|
||||||
dc->vport2WorldValid = TRUE;
|
dc->vport2WorldValid = TRUE;
|
||||||
dc->BoundsRect.left = 0;
|
|
||||||
dc->BoundsRect.top = 0;
|
|
||||||
dc->BoundsRect.right = 0;
|
|
||||||
dc->BoundsRect.bottom = 0;
|
|
||||||
|
|
||||||
if (!(dc->hSelf = alloc_gdi_handle( &dc->header, magic, &dc_funcs )))
|
if (!(dc->hSelf = alloc_gdi_handle( &dc->header, magic, &dc_funcs )))
|
||||||
{
|
{
|
||||||
@ -371,7 +336,7 @@ INT nulldrv_SaveDC( PHYSDEV dev )
|
|||||||
{
|
{
|
||||||
DC *newdc, *dc = get_nulldrv_dc( dev );
|
DC *newdc, *dc = get_nulldrv_dc( dev );
|
||||||
|
|
||||||
if (!(newdc = HeapAlloc( GetProcessHeap(), 0, sizeof(*newdc )))) return 0;
|
if (!(newdc = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*newdc )))) return 0;
|
||||||
newdc->flags = dc->flags;
|
newdc->flags = dc->flags;
|
||||||
newdc->layout = dc->layout;
|
newdc->layout = dc->layout;
|
||||||
newdc->hPen = dc->hPen;
|
newdc->hPen = dc->hPen;
|
||||||
@ -420,11 +385,6 @@ INT nulldrv_SaveDC( PHYSDEV dev )
|
|||||||
|
|
||||||
/* Get/SetDCState() don't change hVisRgn field ("Undoc. Windows" p.559). */
|
/* Get/SetDCState() don't change hVisRgn field ("Undoc. Windows" p.559). */
|
||||||
|
|
||||||
newdc->region = 0;
|
|
||||||
newdc->hVisRgn = 0;
|
|
||||||
newdc->hClipRgn = 0;
|
|
||||||
newdc->hMetaRgn = 0;
|
|
||||||
newdc->hMetaClipRgn = 0;
|
|
||||||
if (dc->hClipRgn)
|
if (dc->hClipRgn)
|
||||||
{
|
{
|
||||||
newdc->hClipRgn = CreateRectRgn( 0, 0, 0, 0 );
|
newdc->hClipRgn = CreateRectRgn( 0, 0, 0, 0 );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user