mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 17:34:57 +00:00
Move types out of handles headers. Add Locks for displays.
svn path=/trunk/; revision=30402
This commit is contained in:
parent
0b529c1bb5
commit
9c5a81037b
4 changed files with 165 additions and 139 deletions
|
@ -354,140 +354,6 @@ typedef struct _WIN_DC_INFO
|
||||||
BOOL vport2WorldValid; /* Is xformVport2World valid? */
|
BOOL vport2WorldValid; /* Is xformVport2World valid? */
|
||||||
} WIN_DC_INFO;
|
} WIN_DC_INFO;
|
||||||
|
|
||||||
|
|
||||||
typedef BOOL (NTAPI *PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);
|
|
||||||
typedef DHPDEV (NTAPI *PGD_ENABLEPDEV)(DEVMODEW *, LPWSTR, ULONG, HSURF *, ULONG, ULONG *, ULONG, DEVINFO *, LPWSTR, LPWSTR, HANDLE);
|
|
||||||
typedef VOID (NTAPI *PGD_COMPLETEPDEV)(DHPDEV, HDEV);
|
|
||||||
typedef VOID (NTAPI *PGD_DISABLEPDEV)(DHPDEV);
|
|
||||||
typedef HSURF (NTAPI *PGD_ENABLESURFACE)(DHPDEV);
|
|
||||||
typedef VOID (NTAPI *PGD_DISABLESURFACE)(DHPDEV);
|
|
||||||
typedef BOOL (NTAPI *PGD_ASSERTMODE)(DHPDEV, BOOL);
|
|
||||||
typedef BOOL (NTAPI *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_RESETPDEV)(DHPDEV, DHPDEV);
|
|
||||||
typedef VOID (NTAPI *PGD_DISABLEDRIVER)(VOID);
|
|
||||||
typedef HBITMAP (NTAPI *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
|
|
||||||
typedef VOID (NTAPI *PGD_DELETEDEVICEBITMAP)(DHSURF);
|
|
||||||
typedef BOOL (NTAPI *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*);
|
|
||||||
typedef BOOL (NTAPI *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, ULONG);
|
|
||||||
typedef ULONG (NTAPI *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_STROKEPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, POINTL*, PLINEATTRS, MIX);
|
|
||||||
typedef BOOL (NTAPI *PGD_FILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX, ULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_STROKEANDFILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, PLINEATTRS, BRUSHOBJ*, POINTL*, MIX, ULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX);
|
|
||||||
typedef BOOL (NTAPI *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*, POINTL*, ROP4);
|
|
||||||
typedef BOOL (NTAPI *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, ULONG, ULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*);
|
|
||||||
typedef BOOL (NTAPI *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG, BRUSHOBJ*, DWORD);
|
|
||||||
typedef BOOL (NTAPI *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*, RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX);
|
|
||||||
typedef ULONG (NTAPI *PGD_ESCAPE)(SURFOBJ*, ULONG, ULONG, PVOID *, ULONG, PVOID *);
|
|
||||||
typedef ULONG (NTAPI *PGD_DRAWESCAPE)(SURFOBJ*, ULONG, CLIPOBJ*, RECTL*, ULONG, PVOID *);
|
|
||||||
typedef PIFIMETRICS (NTAPI *PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG);
|
|
||||||
typedef PVOID (NTAPI *PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG);
|
|
||||||
typedef LONG (NTAPI *PGD_QUERYFONTDATA)(DHPDEV, FONTOBJ*, ULONG, HGLYPH, GLYPHDATA*, PVOID, ULONG);
|
|
||||||
typedef ULONG (NTAPI *PGD_SETPOINTERSHAPE)(SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, LONG, LONG, LONG, LONG, RECTL*, ULONG);
|
|
||||||
typedef VOID (NTAPI *PGD_MOVEPOINTER)(SURFOBJ*, LONG, LONG, RECTL*);
|
|
||||||
typedef BOOL (NTAPI *PGD_LINETO)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, LONG, LONG, LONG, LONG, RECTL*, MIX);
|
|
||||||
typedef BOOL (NTAPI *PGD_SENDPAGE)(SURFOBJ*);
|
|
||||||
typedef BOOL (NTAPI *PGD_STARTPAGE)(SURFOBJ*);
|
|
||||||
typedef BOOL (NTAPI *PGD_ENDDOC)(SURFOBJ*, ULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_STARTDOC)(SURFOBJ*, PWSTR, DWORD);
|
|
||||||
typedef ULONG (NTAPI *PGD_GETGLYPHMODE)(DHPDEV, FONTOBJ*);
|
|
||||||
typedef VOID (NTAPI *PGD_SYNCHRONIZE)(DHPDEV, RECTL*);
|
|
||||||
typedef ULONG (NTAPI *PGD_SAVESCREENBITS)(SURFOBJ*, ULONG, ULONG, RECTL*);
|
|
||||||
typedef ULONG (NTAPI *PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
|
|
||||||
typedef VOID (NTAPI *PGD_FREE)(PVOID, ULONG);
|
|
||||||
typedef VOID (NTAPI *PGD_DESTROYFONT)(FONTOBJ*);
|
|
||||||
typedef LONG (NTAPI *PGD_QUERYFONTCAPS)(ULONG, PULONG);
|
|
||||||
typedef ULONG (NTAPI *PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_UNLOADFONTFILE)(ULONG);
|
|
||||||
typedef ULONG (NTAPI *PGD_FONTMANAGEMENT)(SURFOBJ*, FONTOBJ*, ULONG, ULONG, PVOID, ULONG, PVOID);
|
|
||||||
typedef LONG (NTAPI *PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG, PBYTE);
|
|
||||||
typedef LONG (NTAPI *PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, FONTOBJ*, HGLYPH, BOOL, GLYPHDATA*, ULONG, TTPOLYGONHEADER*);
|
|
||||||
typedef PVOID (NTAPI *PGD_GETTRUETYPEFILE)(ULONG, PULONG);
|
|
||||||
typedef LONG (NTAPI *PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_QUERYADVANCEWIDTHS)(DHPDEV, FONTOBJ*, ULONG, HGLYPH *, PVOID *, ULONG);
|
|
||||||
typedef BOOL (NTAPI *PGD_SETPIXELFORMAT)(SURFOBJ*, LONG, ULONG);
|
|
||||||
typedef LONG (NTAPI *PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG, PPIXELFORMATDESCRIPTOR);
|
|
||||||
typedef BOOL (NTAPI *PGD_SWAPBUFFERS)(SURFOBJ*, PWNDOBJ);
|
|
||||||
typedef BOOL (NTAPI *PGD_STARTBANDING)(SURFOBJ*, POINTL*);
|
|
||||||
typedef BOOL (NTAPI *PGD_NEXTBAND)(SURFOBJ*, POINTL*);
|
|
||||||
typedef BOOL (NTAPI *PGD_GETDIRECTDRAWINFO)(DHPDEV, PDD_HALINFO, PDWORD, VIDEOMEMORY*, PDWORD, PDWORD);
|
|
||||||
typedef BOOL (NTAPI *PGD_ENABLEDIRECTDRAW)(DHPDEV, PDD_CALLBACKS, PDD_SURFACECALLBACKS, PDD_PALETTECALLBACKS);
|
|
||||||
typedef VOID (NTAPI *PGD_DISABLEDIRECTDRAW)(DHPDEV);
|
|
||||||
typedef LONG (NTAPI *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
|
|
||||||
typedef BOOL (NTAPI *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);
|
|
||||||
typedef VOID (NTAPI *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG);
|
|
||||||
|
|
||||||
typedef struct _DRIVER_FUNCTIONS
|
|
||||||
{
|
|
||||||
PGD_ENABLEDRIVER EnableDriver;
|
|
||||||
PGD_ENABLEPDEV EnablePDEV;
|
|
||||||
PGD_COMPLETEPDEV CompletePDEV;
|
|
||||||
PGD_DISABLEPDEV DisablePDEV;
|
|
||||||
PGD_ENABLESURFACE EnableSurface;
|
|
||||||
PGD_DISABLESURFACE DisableSurface;
|
|
||||||
PGD_ASSERTMODE AssertMode;
|
|
||||||
PGD_OFFSET Offset;
|
|
||||||
PGD_RESETPDEV ResetPDEV;
|
|
||||||
PGD_DISABLEDRIVER DisableDriver;
|
|
||||||
PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;
|
|
||||||
PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;
|
|
||||||
PGD_REALIZEBRUSH RealizeBrush;
|
|
||||||
PGD_DITHERCOLOR DitherColor;
|
|
||||||
PGD_STROKEPATH StrokePath;
|
|
||||||
PGD_FILLPATH FillPath;
|
|
||||||
PGD_STROKEANDFILLPATH StrokeAndFillPath;
|
|
||||||
PGD_PAINT Paint;
|
|
||||||
PGD_BITBLT BitBlt;
|
|
||||||
PGD_TRANSPARENTBLT TransparentBlt;
|
|
||||||
PGD_COPYBITS CopyBits;
|
|
||||||
PGD_STRETCHBLT StretchBlt;
|
|
||||||
PGD_STRETCHBLTROP StretchBltROP;
|
|
||||||
PGD_SETPALETTE SetPalette;
|
|
||||||
PGD_TEXTOUT TextOut;
|
|
||||||
PGD_ESCAPE Escape;
|
|
||||||
PGD_DRAWESCAPE DrawEscape;
|
|
||||||
PGD_QUERYFONT QueryFont;
|
|
||||||
PGD_QUERYFONTTREE QueryFontTree;
|
|
||||||
PGD_QUERYFONTDATA QueryFontData;
|
|
||||||
PGD_SETPOINTERSHAPE SetPointerShape;
|
|
||||||
PGD_MOVEPOINTER MovePointer;
|
|
||||||
PGD_LINETO LineTo;
|
|
||||||
PGD_SENDPAGE SendPage;
|
|
||||||
PGD_STARTPAGE StartPage;
|
|
||||||
PGD_ENDDOC EndDoc;
|
|
||||||
PGD_STARTDOC StartDoc;
|
|
||||||
PGD_GETGLYPHMODE GetGlyphMode;
|
|
||||||
PGD_SYNCHRONIZE Synchronize;
|
|
||||||
PGD_SAVESCREENBITS SaveScreenBits;
|
|
||||||
PGD_GETMODES GetModes;
|
|
||||||
PGD_FREE Free;
|
|
||||||
PGD_DESTROYFONT DestroyFont;
|
|
||||||
PGD_QUERYFONTCAPS QueryFontCaps;
|
|
||||||
PGD_LOADFONTFILE LoadFontFile;
|
|
||||||
PGD_UNLOADFONTFILE UnloadFontFile;
|
|
||||||
PGD_FONTMANAGEMENT FontManagement;
|
|
||||||
PGD_QUERYTRUETYPETABLE QueryTrueTypeTable;
|
|
||||||
PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline;
|
|
||||||
PGD_GETTRUETYPEFILE GetTrueTypeFile;
|
|
||||||
PGD_QUERYFONTFILE QueryFontFile;
|
|
||||||
PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths;
|
|
||||||
PGD_SETPIXELFORMAT SetPixelFormat;
|
|
||||||
PGD_DESCRIBEPIXELFORMAT DescribePixelFormat;
|
|
||||||
PGD_SWAPBUFFERS SwapBuffers;
|
|
||||||
PGD_STARTBANDING StartBanding;
|
|
||||||
PGD_NEXTBAND NextBand;
|
|
||||||
PGD_GETDIRECTDRAWINFO GetDirectDrawInfo;
|
|
||||||
PGD_ENABLEDIRECTDRAW EnableDirectDraw;
|
|
||||||
PGD_DISABLEDIRECTDRAW DisableDirectDraw;
|
|
||||||
PGD_QUERYSPOOLTYPE QuerySpoolType;
|
|
||||||
PGD_GRADIENTFILL GradientFill;
|
|
||||||
PGD_SYNCHRONIZESURFACE SynchronizeSurface;
|
|
||||||
PGD_ALPHABLEND AlphaBlend;
|
|
||||||
} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
|
|
||||||
|
|
||||||
typedef struct _DC
|
typedef struct _DC
|
||||||
{
|
{
|
||||||
HGDIOBJ hHmgr; // Handle for this DC object.
|
HGDIOBJ hHmgr; // Handle for this DC object.
|
||||||
|
@ -495,10 +361,11 @@ typedef struct _DC
|
||||||
ULONG lucExcLock;
|
ULONG lucExcLock;
|
||||||
ULONG Tid;
|
ULONG Tid;
|
||||||
|
|
||||||
DHPDEV PDev; // GDIDEVICE PDev
|
DHPDEV PDev; // GDIDEVICE.Handle
|
||||||
INT DC_Type;
|
INT DC_Type;
|
||||||
INT DC_Flags;
|
INT DC_Flags;
|
||||||
PVOID pPDev; // PGDIDEVICE
|
PVOID pPDev; // PGDIDEVICE
|
||||||
|
PVOID hSem; // PERESOURCE
|
||||||
FLONG flGraphics;
|
FLONG flGraphics;
|
||||||
FLONG flGraphics2;
|
FLONG flGraphics2;
|
||||||
PDC_ATTR pDc_Attr;
|
PDC_ATTR pDc_Attr;
|
||||||
|
@ -506,10 +373,7 @@ typedef struct _DC
|
||||||
HDC hNext;
|
HDC hNext;
|
||||||
HDC hPrev;
|
HDC hPrev;
|
||||||
|
|
||||||
UNICODE_STRING DriverName;
|
|
||||||
|
|
||||||
CLIPOBJ *CombinedClip;
|
CLIPOBJ *CombinedClip;
|
||||||
|
|
||||||
XLATEOBJ *XlateBrush;
|
XLATEOBJ *XlateBrush;
|
||||||
XLATEOBJ *XlatePen;
|
XLATEOBJ *XlatePen;
|
||||||
|
|
||||||
|
@ -519,6 +383,7 @@ typedef struct _DC
|
||||||
|
|
||||||
HPALETTE PalIndexed;
|
HPALETTE PalIndexed;
|
||||||
|
|
||||||
|
UNICODE_STRING DriverName;
|
||||||
WIN_DC_INFO w;
|
WIN_DC_INFO w;
|
||||||
|
|
||||||
HANDLE hFile;
|
HANDLE hFile;
|
||||||
|
|
|
@ -298,4 +298,140 @@ typedef struct _GDIBSOBJECT
|
||||||
HGDIOBJ hgdiobj;
|
HGDIOBJ hgdiobj;
|
||||||
} GDIBSOBJECT, *PGDIBSOBJECT;
|
} GDIBSOBJECT, *PGDIBSOBJECT;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Driver Functions
|
||||||
|
//
|
||||||
|
typedef BOOL (NTAPI *PGD_ENABLEDRIVER)(ULONG, ULONG, PDRVENABLEDATA);
|
||||||
|
typedef DHPDEV (NTAPI *PGD_ENABLEPDEV)(DEVMODEW *, LPWSTR, ULONG, HSURF *, ULONG, ULONG *, ULONG, DEVINFO *, LPWSTR, LPWSTR, HANDLE);
|
||||||
|
typedef VOID (NTAPI *PGD_COMPLETEPDEV)(DHPDEV, HDEV);
|
||||||
|
typedef VOID (NTAPI *PGD_DISABLEPDEV)(DHPDEV);
|
||||||
|
typedef HSURF (NTAPI *PGD_ENABLESURFACE)(DHPDEV);
|
||||||
|
typedef VOID (NTAPI *PGD_DISABLESURFACE)(DHPDEV);
|
||||||
|
typedef BOOL (NTAPI *PGD_ASSERTMODE)(DHPDEV, BOOL);
|
||||||
|
typedef BOOL (NTAPI *PGD_OFFSET)(SURFOBJ*, LONG, LONG, FLONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_RESETPDEV)(DHPDEV, DHPDEV);
|
||||||
|
typedef VOID (NTAPI *PGD_DISABLEDRIVER)(VOID);
|
||||||
|
typedef HBITMAP (NTAPI *PGD_CREATEDEVICEBITMAP)(DHPDEV, SIZEL, ULONG);
|
||||||
|
typedef VOID (NTAPI *PGD_DELETEDEVICEBITMAP)(DHSURF);
|
||||||
|
typedef BOOL (NTAPI *PGD_ALPHABLEND)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, BLENDOBJ*);
|
||||||
|
typedef BOOL (NTAPI *PGD_REALIZEBRUSH)(BRUSHOBJ*, SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, ULONG);
|
||||||
|
typedef ULONG (NTAPI *PGD_DITHERCOLOR)(DHPDEV, ULONG, ULONG, PULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_STROKEPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, POINTL*, PLINEATTRS, MIX);
|
||||||
|
typedef BOOL (NTAPI *PGD_FILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX, ULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_STROKEANDFILLPATH)(SURFOBJ*, PATHOBJ*, CLIPOBJ*, XFORMOBJ*, BRUSHOBJ*, PLINEATTRS, BRUSHOBJ*, POINTL*, MIX, ULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_PAINT)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, POINTL*, MIX);
|
||||||
|
typedef BOOL (NTAPI *PGD_BITBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*, POINTL*, BRUSHOBJ*, POINTL*, ROP4);
|
||||||
|
typedef BOOL (NTAPI *PGD_TRANSPARENTBLT)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, RECTL*, ULONG, ULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_COPYBITS)(SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, RECTL*, POINTL*);
|
||||||
|
typedef BOOL (NTAPI *PGD_STRETCHBLT)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_STRETCHBLTROP)(SURFOBJ*, SURFOBJ*, SURFOBJ*, CLIPOBJ*, XLATEOBJ*, COLORADJUSTMENT*, POINTL*, RECTL*, RECTL*, POINTL*, ULONG, BRUSHOBJ*, DWORD);
|
||||||
|
typedef BOOL (NTAPI *PGD_SETPALETTE)(DHPDEV, PALOBJ*, ULONG, ULONG, ULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_TEXTOUT)(SURFOBJ*, STROBJ*, FONTOBJ*, CLIPOBJ*, RECTL*, RECTL*, BRUSHOBJ*, BRUSHOBJ*, POINTL*, MIX);
|
||||||
|
typedef ULONG (NTAPI *PGD_ESCAPE)(SURFOBJ*, ULONG, ULONG, PVOID *, ULONG, PVOID *);
|
||||||
|
typedef ULONG (NTAPI *PGD_DRAWESCAPE)(SURFOBJ*, ULONG, CLIPOBJ*, RECTL*, ULONG, PVOID *);
|
||||||
|
typedef PIFIMETRICS (NTAPI *PGD_QUERYFONT)(DHPDEV, ULONG, ULONG, PULONG);
|
||||||
|
typedef PVOID (NTAPI *PGD_QUERYFONTTREE)(DHPDEV, ULONG, ULONG, ULONG, PULONG);
|
||||||
|
typedef LONG (NTAPI *PGD_QUERYFONTDATA)(DHPDEV, FONTOBJ*, ULONG, HGLYPH, GLYPHDATA*, PVOID, ULONG);
|
||||||
|
typedef ULONG (NTAPI *PGD_SETPOINTERSHAPE)(SURFOBJ*, SURFOBJ*, SURFOBJ*, XLATEOBJ*, LONG, LONG, LONG, LONG, RECTL*, ULONG);
|
||||||
|
typedef VOID (NTAPI *PGD_MOVEPOINTER)(SURFOBJ*, LONG, LONG, RECTL*);
|
||||||
|
typedef BOOL (NTAPI *PGD_LINETO)(SURFOBJ*, CLIPOBJ*, BRUSHOBJ*, LONG, LONG, LONG, LONG, RECTL*, MIX);
|
||||||
|
typedef BOOL (NTAPI *PGD_SENDPAGE)(SURFOBJ*);
|
||||||
|
typedef BOOL (NTAPI *PGD_STARTPAGE)(SURFOBJ*);
|
||||||
|
typedef BOOL (NTAPI *PGD_ENDDOC)(SURFOBJ*, ULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_STARTDOC)(SURFOBJ*, PWSTR, DWORD);
|
||||||
|
typedef ULONG (NTAPI *PGD_GETGLYPHMODE)(DHPDEV, FONTOBJ*);
|
||||||
|
typedef VOID (NTAPI *PGD_SYNCHRONIZE)(DHPDEV, RECTL*);
|
||||||
|
typedef ULONG (NTAPI *PGD_SAVESCREENBITS)(SURFOBJ*, ULONG, ULONG, RECTL*);
|
||||||
|
typedef ULONG (NTAPI *PGD_GETMODES)(HANDLE, ULONG, PDEVMODEW);
|
||||||
|
typedef VOID (NTAPI *PGD_FREE)(PVOID, ULONG);
|
||||||
|
typedef VOID (NTAPI *PGD_DESTROYFONT)(FONTOBJ*);
|
||||||
|
typedef LONG (NTAPI *PGD_QUERYFONTCAPS)(ULONG, PULONG);
|
||||||
|
typedef ULONG (NTAPI *PGD_LOADFONTFILE)(ULONG, PVOID, ULONG, ULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_UNLOADFONTFILE)(ULONG);
|
||||||
|
typedef ULONG (NTAPI *PGD_FONTMANAGEMENT)(SURFOBJ*, FONTOBJ*, ULONG, ULONG, PVOID, ULONG, PVOID);
|
||||||
|
typedef LONG (NTAPI *PGD_QUERYTRUETYPETABLE)(ULONG, ULONG, ULONG, PTRDIFF, ULONG, PBYTE);
|
||||||
|
typedef LONG (NTAPI *PGD_QUERYTRUETYPEOUTLINE)(DHPDEV, FONTOBJ*, HGLYPH, BOOL, GLYPHDATA*, ULONG, TTPOLYGONHEADER*);
|
||||||
|
typedef PVOID (NTAPI *PGD_GETTRUETYPEFILE)(ULONG, PULONG);
|
||||||
|
typedef LONG (NTAPI *PGD_QUERYFONTFILE)(ULONG, ULONG, ULONG, PULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_QUERYADVANCEWIDTHS)(DHPDEV, FONTOBJ*, ULONG, HGLYPH *, PVOID *, ULONG);
|
||||||
|
typedef BOOL (NTAPI *PGD_SETPIXELFORMAT)(SURFOBJ*, LONG, ULONG);
|
||||||
|
typedef LONG (NTAPI *PGD_DESCRIBEPIXELFORMAT)(DHPDEV, LONG, ULONG, PPIXELFORMATDESCRIPTOR);
|
||||||
|
typedef BOOL (NTAPI *PGD_SWAPBUFFERS)(SURFOBJ*, PWNDOBJ);
|
||||||
|
typedef BOOL (NTAPI *PGD_STARTBANDING)(SURFOBJ*, POINTL*);
|
||||||
|
typedef BOOL (NTAPI *PGD_NEXTBAND)(SURFOBJ*, POINTL*);
|
||||||
|
typedef BOOL (NTAPI *PGD_GETDIRECTDRAWINFO)(DHPDEV, PDD_HALINFO, PDWORD, VIDEOMEMORY*, PDWORD, PDWORD);
|
||||||
|
typedef BOOL (NTAPI *PGD_ENABLEDIRECTDRAW)(DHPDEV, PDD_CALLBACKS, PDD_SURFACECALLBACKS, PDD_PALETTECALLBACKS);
|
||||||
|
typedef VOID (NTAPI *PGD_DISABLEDIRECTDRAW)(DHPDEV);
|
||||||
|
typedef LONG (NTAPI *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
|
||||||
|
typedef BOOL (NTAPI *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);
|
||||||
|
typedef VOID (NTAPI *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG);
|
||||||
|
|
||||||
|
typedef struct _DRIVER_FUNCTIONS
|
||||||
|
{
|
||||||
|
PGD_ENABLEDRIVER EnableDriver;
|
||||||
|
PGD_ENABLEPDEV EnablePDEV;
|
||||||
|
PGD_COMPLETEPDEV CompletePDEV;
|
||||||
|
PGD_DISABLEPDEV DisablePDEV;
|
||||||
|
PGD_ENABLESURFACE EnableSurface;
|
||||||
|
PGD_DISABLESURFACE DisableSurface;
|
||||||
|
PGD_ASSERTMODE AssertMode;
|
||||||
|
PGD_OFFSET Offset;
|
||||||
|
PGD_RESETPDEV ResetPDEV;
|
||||||
|
PGD_DISABLEDRIVER DisableDriver;
|
||||||
|
PGD_CREATEDEVICEBITMAP CreateDeviceBitmap;
|
||||||
|
PGD_DELETEDEVICEBITMAP DeleteDeviceBitmap;
|
||||||
|
PGD_REALIZEBRUSH RealizeBrush;
|
||||||
|
PGD_DITHERCOLOR DitherColor;
|
||||||
|
PGD_STROKEPATH StrokePath;
|
||||||
|
PGD_FILLPATH FillPath;
|
||||||
|
PGD_STROKEANDFILLPATH StrokeAndFillPath;
|
||||||
|
PGD_PAINT Paint;
|
||||||
|
PGD_BITBLT BitBlt;
|
||||||
|
PGD_TRANSPARENTBLT TransparentBlt;
|
||||||
|
PGD_COPYBITS CopyBits;
|
||||||
|
PGD_STRETCHBLT StretchBlt;
|
||||||
|
PGD_STRETCHBLTROP StretchBltROP;
|
||||||
|
PGD_SETPALETTE SetPalette;
|
||||||
|
PGD_TEXTOUT TextOut;
|
||||||
|
PGD_ESCAPE Escape;
|
||||||
|
PGD_DRAWESCAPE DrawEscape;
|
||||||
|
PGD_QUERYFONT QueryFont;
|
||||||
|
PGD_QUERYFONTTREE QueryFontTree;
|
||||||
|
PGD_QUERYFONTDATA QueryFontData;
|
||||||
|
PGD_SETPOINTERSHAPE SetPointerShape;
|
||||||
|
PGD_MOVEPOINTER MovePointer;
|
||||||
|
PGD_LINETO LineTo;
|
||||||
|
PGD_SENDPAGE SendPage;
|
||||||
|
PGD_STARTPAGE StartPage;
|
||||||
|
PGD_ENDDOC EndDoc;
|
||||||
|
PGD_STARTDOC StartDoc;
|
||||||
|
PGD_GETGLYPHMODE GetGlyphMode;
|
||||||
|
PGD_SYNCHRONIZE Synchronize;
|
||||||
|
PGD_SAVESCREENBITS SaveScreenBits;
|
||||||
|
PGD_GETMODES GetModes;
|
||||||
|
PGD_FREE Free;
|
||||||
|
PGD_DESTROYFONT DestroyFont;
|
||||||
|
PGD_QUERYFONTCAPS QueryFontCaps;
|
||||||
|
PGD_LOADFONTFILE LoadFontFile;
|
||||||
|
PGD_UNLOADFONTFILE UnloadFontFile;
|
||||||
|
PGD_FONTMANAGEMENT FontManagement;
|
||||||
|
PGD_QUERYTRUETYPETABLE QueryTrueTypeTable;
|
||||||
|
PGD_QUERYTRUETYPEOUTLINE QueryTrueTypeOutline;
|
||||||
|
PGD_GETTRUETYPEFILE GetTrueTypeFile;
|
||||||
|
PGD_QUERYFONTFILE QueryFontFile;
|
||||||
|
PGD_QUERYADVANCEWIDTHS QueryAdvanceWidths;
|
||||||
|
PGD_SETPIXELFORMAT SetPixelFormat;
|
||||||
|
PGD_DESCRIBEPIXELFORMAT DescribePixelFormat;
|
||||||
|
PGD_SWAPBUFFERS SwapBuffers;
|
||||||
|
PGD_STARTBANDING StartBanding;
|
||||||
|
PGD_NEXTBAND NextBand;
|
||||||
|
PGD_GETDIRECTDRAWINFO GetDirectDrawInfo;
|
||||||
|
PGD_ENABLEDIRECTDRAW EnableDirectDraw;
|
||||||
|
PGD_DISABLEDIRECTDRAW DisableDirectDraw;
|
||||||
|
PGD_QUERYSPOOLTYPE QuerySpoolType;
|
||||||
|
PGD_GRADIENTFILL GradientFill;
|
||||||
|
PGD_SYNCHRONIZESURFACE SynchronizeSurface;
|
||||||
|
PGD_ALPHABLEND AlphaBlend;
|
||||||
|
} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -40,7 +40,7 @@ typedef struct
|
||||||
ULONG lucExcLock;
|
ULONG lucExcLock;
|
||||||
ULONG Tid;
|
ULONG Tid;
|
||||||
|
|
||||||
PERESOURCE_XP hsemDevLock;
|
PERESOURCE hsemDevLock;
|
||||||
|
|
||||||
PVOID pfnSync;
|
PVOID pfnSync;
|
||||||
|
|
||||||
|
@ -86,6 +86,8 @@ BOOL INTERNAL_CALL DC_Cleanup(PVOID ObjectBody);
|
||||||
HDC FASTCALL DC_GetNextDC (PDC pDC);
|
HDC FASTCALL DC_GetNextDC (PDC pDC);
|
||||||
VOID FASTCALL DC_SetNextDC (PDC pDC, HDC hNextDC);
|
VOID FASTCALL DC_SetNextDC (PDC pDC, HDC hNextDC);
|
||||||
VOID FASTCALL DC_SetOwnership(HDC DC, PEPROCESS Owner);
|
VOID FASTCALL DC_SetOwnership(HDC DC, PEPROCESS Owner);
|
||||||
|
VOID FASTCALL DC_LockDisplay(PERESOURCE);
|
||||||
|
VOID FASTCALL DC_UnlockDisplay(PERESOURCE);
|
||||||
VOID FASTCALL IntGdiCopyFromSaveState(PDC, PDC, HDC);
|
VOID FASTCALL IntGdiCopyFromSaveState(PDC, PDC, HDC);
|
||||||
VOID FASTCALL IntGdiCopyToSaveState(PDC, PDC);
|
VOID FASTCALL IntGdiCopyToSaveState(PDC, PDC);
|
||||||
|
|
||||||
|
|
|
@ -633,6 +633,8 @@ IntPrepareDriver()
|
||||||
PrimarySurface.PreparedDriver = TRUE;
|
PrimarySurface.PreparedDriver = TRUE;
|
||||||
PrimarySurface.DisplayNumber = DisplayNumber;
|
PrimarySurface.DisplayNumber = DisplayNumber;
|
||||||
|
|
||||||
|
PrimarySurface.hsemDevLock = (PERESOURCE)EngCreateSemaphore();
|
||||||
|
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
@ -2651,6 +2653,27 @@ DC_SetOwnership(HDC hDC, PEPROCESS Owner)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Support multi display/device locks.
|
||||||
|
// Here, it is PrimarySurface.hsemDevLock
|
||||||
|
// or ((PGDIDEVICE)PDC->pPDev)->hsemDevLock
|
||||||
|
//
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
DC_LockDisplay(PERESOURCE Resource)
|
||||||
|
{
|
||||||
|
KeEnterCriticalRegion();
|
||||||
|
ExAcquireResourceExclusiveLite( Resource , TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
FASTCALL
|
||||||
|
DC_UnlockDisplay(PERESOURCE Resource)
|
||||||
|
{
|
||||||
|
ExReleaseResourceLite( Resource );
|
||||||
|
KeLeaveCriticalRegion();
|
||||||
|
}
|
||||||
|
|
||||||
BOOL FASTCALL
|
BOOL FASTCALL
|
||||||
IntIsPrimarySurface(SURFOBJ *SurfObj)
|
IntIsPrimarySurface(SURFOBJ *SurfObj)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue