From 122ab0a2bb7cfb4f17c8f7bd97e8bbb9a996820d Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Thu, 23 Aug 2007 15:03:13 +0000 Subject: [PATCH] Remove redirect of CreateDIBitmap@24 to NtGdiCreateDIBitmap@24, and create stub for it. we need do some stuff in user mode Fix : CreateDiscardableBitmap shall be call on CreateCompatibleBitmap not the NtGdiCreateCompatibleBitmap, for we need do some thing in user mode Fix : CreateEllipticRgnIndirect it crash now, if the param is NULL, that goes same for all windows NT I tested svn path=/trunk/; revision=28473 --- reactos/dll/win32/gdi32/gdi32.def | 16 ++++++++-------- reactos/dll/win32/gdi32/misc/stubs.c | 12 ++++++++++++ reactos/dll/win32/gdi32/objects/bitmap.c | 2 +- reactos/dll/win32/gdi32/objects/region.c | 8 +++----- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/reactos/dll/win32/gdi32/gdi32.def b/reactos/dll/win32/gdi32/gdi32.def index 62d33f4257c..9b6b0e8f501 100644 --- a/reactos/dll/win32/gdi32/gdi32.def +++ b/reactos/dll/win32/gdi32/gdi32.def @@ -56,14 +56,7 @@ CreateDCW@16 CreateDIBPatternBrush@8 CreateDIBPatternBrushPt@8 CreateDIBSection@24 - -ClearBitmapAttributes@8 -ClearBrushAttributes@8 -CopyMetaFileA@8 -CopyMetaFileW@8 -CreateBrushIndirect@4 -CreateDIBSection@24 -CreateDIBitmap@24=NtGdiCreateDIBitmap@24 +CreateDIBitmap@24 CreateDiscardableBitmap@12 CreateEllipticRgn@16=NtGdiCreateEllipticRgn@16 CreateEllipticRgnIndirect@4 @@ -73,6 +66,13 @@ CreateFontA@56 CreateFontIndirectA@4 CreateFontIndirectExA@4 CreateFontIndirectExW@4 + +ClearBitmapAttributes@8 +ClearBrushAttributes@8 +CopyMetaFileA@8 +CopyMetaFileW@8 +CreateBrushIndirect@4 +CreateDIBSection@24 CreateFontIndirectW@4 CreateFontW@56 CreateHalftonePalette@4=NtGdiCreateHalftonePalette@4 diff --git a/reactos/dll/win32/gdi32/misc/stubs.c b/reactos/dll/win32/gdi32/misc/stubs.c index 47b13a6f140..bbe1cd84e83 100644 --- a/reactos/dll/win32/gdi32/misc/stubs.c +++ b/reactos/dll/win32/gdi32/misc/stubs.c @@ -2432,6 +2432,18 @@ GdiResetDCEMF( return 0; } + +HBITMAP +STDCALL +CreateDIBitmap(HDC + hDc, const BITMAPINFOHEADER *Header, + DWORD Init, LPCVOID Bits, const BITMAPINFO *Data, + UINT ColorUse) +{ + /* FIMXE we need do more thing in user mode */ + return NtGdiCreateDIBitmap(hDc, Header, Init, Bits, Data, ColorUse); +} + /* * @unimplemented */ diff --git a/reactos/dll/win32/gdi32/objects/bitmap.c b/reactos/dll/win32/gdi32/objects/bitmap.c index ff848ff77de..857098dd6fb 100644 --- a/reactos/dll/win32/gdi32/objects/bitmap.c +++ b/reactos/dll/win32/gdi32/objects/bitmap.c @@ -135,7 +135,7 @@ CreateDiscardableBitmap( INT Width, INT Height) { - return NtGdiCreateCompatibleBitmap(hDC, Width, Height); + return CreateCompatibleBitmap(hDC, Width, Height); } diff --git a/reactos/dll/win32/gdi32/objects/region.c b/reactos/dll/win32/gdi32/objects/region.c index 0071d1b99f8..1bc24a8c025 100644 --- a/reactos/dll/win32/gdi32/objects/region.c +++ b/reactos/dll/win32/gdi32/objects/region.c @@ -56,11 +56,9 @@ CreateEllipticRgnIndirect( const RECT *prc ) { - if (prc) - { - return NtGdiCreateEllipticRgn(prc->left, prc->top, prc->right, prc->bottom); - } - return NULL; + /* Notes if prc is NULL it will crash on All Windows NT I checked 2000/XP/VISTA */ + return NtGdiCreateEllipticRgn(prc->left, prc->top, prc->right, prc->bottom); + } HRGN