#undef WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <ddk/ntddk.h>
+#include <ddk/ntddvid.h>
#include <win32k/bitmaps.h>
#include <win32k/coord.h>
//#define NDEBUG
#include <win32k/debug1.h>
+static GDIDEVICE PrimarySurface;
+static BOOL PrimarySurfaceCreated = FALSE;
/* FIXME: DCs should probably be thread safe */
NewDC->vportExtY = OrigDC->vportExtY;
}
- DC_InitDC(hNewDC);
-
/* Create default bitmap */
if (!(hBitmap = W32kCreateBitmap( 1, 1, 1, 1, NULL )))
{
}
DC_ReleasePtr( hDC );
DC_ReleasePtr( hNewDC );
+ DC_InitDC(hNewDC);
return hNewDC;
}
-#include <ddk/ntddvid.h>
-
-static GDIDEVICE PrimarySurface;
-static BOOL PrimarySurfaceCreated = FALSE;
-
BOOL STDCALL W32kCreatePrimarySurface(LPCWSTR Driver,
LPCWSTR Device)
{
DPRINT("Bits per pel: %u\n", NewDC->w.bitsPerPixel);
+ NewDC->w.hVisRgn = W32kCreateRectRgn(0, 0, 640, 480);
+ DC_ReleasePtr( hNewDC );
+
/* Initialize the DC state */
DC_InitDC(hNewDC);
-
- NewDC->w.hVisRgn = W32kCreateRectRgn(0, 0, 640, 480);
W32kSetTextColor(hNewDC, RGB(0, 0, 0));
W32kSetTextAlign(hNewDC, TA_TOP);
- DC_ReleasePtr( hNewDC );
return hNewDC;
}
if( PalGDI ){
XlateObj = (PXLATEOBJ)EngCreateXlate(PalGDI->Mode, PAL_RGB, dc->w.hPalette, NULL);
pen = GDIOBJ_LockObj(dc->w.hPen, GO_PEN_MAGIC);
- pen->logpen.lopnColor = XLATEOBJ_iXlate(XlateObj, pen->logpen.lopnColor);
+ if( pen ){
+ pen->logpen.lopnColor = XLATEOBJ_iXlate(XlateObj, pen->logpen.lopnColor);
+ }
GDIOBJ_UnlockObj( dc->w.hPen, GO_PEN_MAGIC);
}
break;
if( PalGDI ){
XlateObj = (PXLATEOBJ)EngCreateXlate(PalGDI->Mode, PAL_RGB, dc->w.hPalette, NULL);
brush = GDIOBJ_LockObj(dc->w.hBrush, GO_BRUSH_MAGIC);
- brush->iSolidColor = XLATEOBJ_iXlate(XlateObj,
- brush->logbrush.lbColor);
+ if( brush ){
+ brush->iSolidColor = XLATEOBJ_iXlate(XlateObj, brush->logbrush.lbColor);
+ }
GDIOBJ_UnlockObj( dc->w.hBrush, GO_BRUSH_MAGIC);
}
break;
return NULL;
}
+/*!
+ * Initialize some common fields in the Device Context structure.
+*/
void DC_InitDC(HDC DCHandle)
{
// W32kRealizeDefaultPalette(DCHandle);
- PDC DCToInit;
- if( (DCToInit = DC_HandleToPtr( DCHandle ) ) ){
- W32kSetTextColor(DCHandle, DCToInit->w.textColor);
- W32kSetBkColor(DCHandle, DCToInit->w.backgroundColor);
- W32kSelectObject(DCHandle, DCToInit->w.hPen);
- W32kSelectObject(DCHandle, W32kGetStockObject( GRAY_BRUSH )); //FIXME: default should be WHITE_BRUSH
- W32kSelectObject(DCHandle, DCToInit->w.hFont);
- }
- else
- DPRINT("DC_InitDC: can't get dc for handle %d\n", DCHandle );
+
+ W32kSelectObject(DCHandle, W32kGetStockObject( WHITE_BRUSH ));
+ //W32kSelectObject(DCHandle, hPen);
+ //W32kSelectObject(DCHandle, hFont);
+
// CLIPPING_UpdateGCRegion(DCToInit);
+
}
void DC_FreeDC(HDC DCToFree)