29 if (
Device->DriverFunctions.SynchronizeSurface)
31 Device->DriverFunctions.SynchronizeSurface(Surface,
Rect,
fl);
35 if (
Device->DriverFunctions.Synchronize)
77 pdcattr =
dc->pdcattr;
87 DPRINT1(
"WARNING! GdiBatch Fault!\n");
99 COLORREF crColor, crBkColor, crBrushClr;
100 ULONG ulForegroundClr, ulBackgroundClr, ulBrushClr;
104 dwRop = pgDPB->
dwRop;
105 dwRop =
MAKEROP4(dwRop & 0xFF0000, dwRop);
113 if (
dc->dclevel.pSurface ==
NULL)
119 crColor =
dc->pdcattr->crForegroundClr;
120 crBkColor =
dc->pdcattr->ulBackgroundClr;
121 crBrushClr =
dc->pdcattr->crBrushClr;
122 ulForegroundClr =
dc->pdcattr->ulForegroundClr;
123 ulBackgroundClr =
dc->pdcattr->ulBackgroundClr;
124 ulBrushClr =
dc->pdcattr->ulBrushClr;
125 hOrgBrush =
dc->pdcattr->hbrush;
128 dc->pdcattr->hbrush = pgDPB->
hbrush;
145 dc->pdcattr->hbrush = hOrgBrush;
146 dc->pdcattr->crForegroundClr = crColor;
147 dc->pdcattr->crBackgroundClr = crBkColor;
148 dc->pdcattr->crBrushClr = crBrushClr;
149 dc->pdcattr->ulForegroundClr = ulForegroundClr;
150 dc->pdcattr->ulBackgroundClr = ulBackgroundClr;
151 dc->pdcattr->ulBrushClr = ulBrushClr;
152 dc->pdcattr->ulDirty_ |=
flags;
164 COLORREF crColor, crBkColor, crBrushClr;
165 ULONG ulForegroundClr, ulBackgroundClr, ulBrushClr;
170 dwRop =
MAKEROP4(dwRop & 0xFF0000, dwRop);
178 if (
dc->dclevel.pSurface ==
NULL)
184 crColor =
dc->pdcattr->crForegroundClr;
185 crBkColor =
dc->pdcattr->ulBackgroundClr;
186 crBrushClr =
dc->pdcattr->crBrushClr;
187 ulForegroundClr =
dc->pdcattr->ulForegroundClr;
188 ulBackgroundClr =
dc->pdcattr->ulBackgroundClr;
189 ulBrushClr =
dc->pdcattr->ulBrushClr;
204 DPRINT1(
"GdiBCPolyPatBlt Testing\n");
205 pRects = &pgDPB->
pRect[0];
234 dc->pdcattr->crForegroundClr = crColor;
235 dc->pdcattr->crBackgroundClr = crBkColor;
236 dc->pdcattr->crBrushClr = crBrushClr;
237 dc->pdcattr->ulForegroundClr = ulForegroundClr;
238 dc->pdcattr->ulBackgroundClr = ulBackgroundClr;
239 dc->pdcattr->ulBrushClr = ulBrushClr;
240 dc->pdcattr->ulDirty_ |=
flags;
248 ULONG ulForegroundClr, ulBackgroundClr;
249 DWORD flags = 0, flXform = 0, saveflags, saveflXform = 0;
250 FLONG flTextAlign = -1;
265 crColor =
dc->pdcattr->crForegroundClr;
267 ulForegroundClr =
dc->pdcattr->ulForegroundClr;
273 crBkColor =
dc->pdcattr->ulBackgroundClr;
275 ulBackgroundClr =
dc->pdcattr->ulBackgroundClr;
281 flTextAlign =
dc->pdcattr->flTextAlign;
286 hlfntNew =
dc->pdcattr->hlfntNew;
288 dc->pdcattr->ulDirty_ &= ~SLOW_WIDTHS;
296 ptlViewportOrg =
dc->pdcattr->ptlViewportOrg;
301 dc->pdcattr->flXform |= flXform;
302 dc->pdcattr->ulDirty_ |=
flags;
304 jBkMode =
dc->pdcattr->jBkMode;
306 lBkMode =
dc->pdcattr->lBkMode;
323 dc->pdcattr->jBkMode = jBkMode;
324 dc->pdcattr->lBkMode = lBkMode;
328 dc->pdcattr->ptlViewportOrg = ptlViewportOrg;
329 dc->pdcattr->flXform |= saveflXform|flXform;
334 dc->pdcattr->crForegroundClr = crColor;
335 dc->pdcattr->ulForegroundClr = ulForegroundClr;
339 dc->pdcattr->crBackgroundClr = crBkColor;
340 dc->pdcattr->ulBackgroundClr = ulBackgroundClr;
342 if (flTextAlign != -1)
344 dc->pdcattr->flTextAlign = flTextAlign;
349 dc->pdcattr->hlfntNew = hlfntNew;
350 dc->pdcattr->ulDirty_ &= ~SLOW_WIDTHS;
352 dc->pdcattr->ulDirty_ |= saveflags |
flags;
353 dc->pdcattr->flXform |= saveflXform | flXform;
361 ULONG ulBackgroundClr;
363 DWORD flags = 0, flXform = 0, saveflags, saveflXform = 0;
371 crBkColor =
dc->pdcattr->crBackgroundClr;
372 ulBackgroundClr =
dc->pdcattr->ulBackgroundClr;
382 ptlViewportOrg =
dc->pdcattr->ptlViewportOrg;
387 dc->pdcattr->flXform |= flXform;
388 dc->pdcattr->ulDirty_ |=
flags;
402 dc->pdcattr->ptlViewportOrg = ptlViewportOrg;
403 dc->pdcattr->flXform |= saveflXform|flXform;
408 dc->pdcattr->crBackgroundClr = crBkColor;
409 dc->pdcattr->ulBackgroundClr = ulBackgroundClr;
411 dc->pdcattr->ulDirty_ |= saveflags |
flags;
412 dc->pdcattr->flXform |= saveflXform | flXform;
447 DPRINT(
"Delete Region Object!\n");
499 if (
hDC || GdiBatchCount)
510 for (; GdiBatchCount > 0; GdiBatchCount--)
int FASTCALL IntGdiExtSelectClipRect(PDC, PRECTL, int)
HFONT NTAPI DC_hSelectFont(_In_ PDC pdc, _In_ HFONT hlfntNew)
FORCEINLINE VOID DC_UnlockDc(PDC pdc)
VOID FASTCALL DC_vUpdateTextBrush(PDC pdc)
VOID FASTCALL DC_vUpdateBackgroundBrush(PDC pdc)
VOID NTAPI DC_vSetBrushOrigin(PDC pdc, LONG x, LONG y)
VOID FASTCALL DC_vUpdateFillBrush(PDC pdc)
FORCEINLINE PDC DC_LockDc(HDC hdc)
VOID NTAPI EBRUSHOBJ_vInitFromDC(EBRUSHOBJ *pebo, PBRUSH pbrush, PDC pdc)
VOID NTAPI EBRUSHOBJ_vCleanup(EBRUSHOBJ *pebo)
#define BRUSH_ShareLockBrush(hBrush)
#define BRUSH_ShareUnlockBrush(pBrush)
#define GDI_HANDLE_GET_TYPE(h)
@ GDILoObjType_LO_DC_TYPE
VOID FASTCALL DoDeviceSync(SURFOBJ *Surface, PRECTL Rect, FLONG fl)
__kernel_entry NTSTATUS APIENTRY NtGdiFlush(VOID)
NTSTATUS APIENTRY NtGdiFlushUserBatch(VOID)
BOOL APIENTRY IntExtTextOutW(IN PDC, IN INT, IN INT, IN UINT, IN OPTIONAL PRECTL, IN LPCWSTR, IN INT, IN OPTIONAL LPINT, IN DWORD)
BOOL FASTCALL IntPatBlt(PDC, INT, INT, INT, INT, DWORD, PEBRUSHOBJ)
ULONG FASTCALL GdiFlushUserBatch(PDC dc, PGDIBATCHHDR pHdr)
VOID FASTCALL SynchronizeDriver(FLONG Flags)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define EXCEPTION_EXECUTE_HANDLER
#define WIN32_ROP4_USES_SOURCE(Rop)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define WORLD_XFORM_CHANGED
#define DEVICE_TO_WORLD_INVALID
#define PAGE_XLATE_CHANGED
struct _GDIBSEXTTEXTOUT * PGDIBSEXTTEXTOUT
struct _GDIBSPPATBLT * PGDIBSPPATBLT
struct _GDIBSSETBRHORG * PGDIBSSETBRHORG
struct _GDIBSTEXTOUT * PGDIBSTEXTOUT
struct _GDIBSOBJECT * PGDIBSOBJECT
struct _GDIBSEXTSELCLPRGN * PGDIBSEXTSELCLPRGN
struct _GDIBSPATBLT * PGDIBSPATBLT
@ PDEV_DRIVER_PUNTED_CALL
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)
PULONG MinorVersion OPTIONAL
ULONG Buffer[GDI_BATCH_BUFFER_SIZE]
GDI_TEB_BATCH GdiTebBatch
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
BOOL NTAPI GreDeleteObject(HGDIOBJ hobj)
BOOL NTAPI GreIsHandleValid(HGDIOBJ hobj)
ENGAPI VOID APIENTRY EngUnlockSurface(_In_ _Post_ptr_invalid_ SURFOBJ *pso)
_In_ int _Inout_ LPRECT lprc
_Must_inspect_result_ _In_ ULONG Flags