Merge from amd64 branch:
34780 some DWORD -> DWORD_PTR (Timo Kreuzer)
34781 fix usage of InterlockedCompareExchangePointer (Timo Kreuzer)
34782 fix usage of InterlockedCompareExchangePointer (Timo Kreuzer)
34908 some 64 bit fixes in win32k (Timo Kreuzer)
34909 some more win32k 64 bit fixes (Timo Kreuzer)
34965 Fix typos. (Samuel Serapión)
41479 Remove usage of RETURN() macro (Timo Kreuzer)
41540 Make parameters for NtUserCallOneParam and NtUserCallTwoParam DWORD_PTR instead of DWORD (Timo Kreuzer)
41546 Add _FLOATOBJ_GetFix for non-x86 (Timo Kreuzer)
41547 Only export FLOATOBJ_* api on x86 (Timo Kreuzer)
44238 Fix some 64 bit isues. (Timo Kreuzer)
43969 undefine i386 in the pspec file (Timo Kreuzer)
svn path=/trunk/; revision=44956
- Michael Martin found a create window and crash exit issue by testing programs from http://www.magma.ca/~wjr/ PEview. Fixed by replacing UserFreeWindowInfo with co_UserDestroyWindow at cleanup exit.
- Added more window death and thread checks.
- Started the morphing into WND structure from window object.
- Tested: wine user32 tests, AbiWord 2.6.8, Seamonkey 2.0, FF 3.5 and OOo 2.4.3.
svn path=/trunk/; revision=44575
- Instead of getting the data from the window station and other strange places, the values are now mostly stored in a global variable. This is possible because NtUserSystemParametersInfo should fail anyway when being called from a non-interactive windowstation (tested on windows XP).
- WM_SETTINGCHANGE is now properly sent not posted to all toplevel Windows also passing the registry string as the lParam value (strings could need some testing).
- SystemMetrics are now set and updated from system parameters.
- Most values are now properly loaded from registry and also saved.
- user32_winetest sysparams: before: 634 executed / 235 failures, after: 1093 executed, 11 failures
- Fixes the non-bold caption font in 2nd stage.
- Implements a number SPI codes.
- Implements helper functions for registry and file access
Thanks to all testers for all the regression testing :)
See issue #4595 for more details.
svn path=/trunk/; revision=41604
- Although RECT and RECTL are defined equal, the compiler treats them as incompatible. MS has created a lot of definitions with RECT and a lot with RECTL. So far we had to typecast them. Now with adding some defines into a win32k header file, we can finally treat them as equal inside win32k and get rid of a lot of type casts. Also use RECTL in favour of RECT internally, as this is the type that MS uses for the DDI and seems to be the more appropriate type.
- We had a lot of "const PRECT" stuff inside win32k. Note: there's difference between "const RECT *" (what you currently want) and "CONST PRECT" (which you proabably don't want). Despite the fact that CONST is not an official modifier (please stick to const) the main difference is that the former describes a pointer to a constant structure, while the latter describes a constant pointer to a modifyable structure.
- In an attempt to clean up the overpolluted IntGdi namespace, "objectify" the rect functions, moving them into their own namespace RECTL_Xxx.
svn path=/trunk/; revision=40100
- Implement GDIOBJ_AllocObjDepricated as a wrapper for those functions that currently still need the old way of allocation. Will be gone soon
- Implement GDIOBJ_AllocObj that only allocates a memory object without a handle
- Rename GDIOBJ_FreeObject to GDIOBJ_FreeObjByHandle
- Implement GDIOBJ_FreeObj that only frees the memory object
- Rename all XXX_Alloc and XXX_Free functions accordingly
- Fix NtGdiCreateClientObject and NtGdiDeleteClientObject
- Reformat TextIntCreateFontIndirect
- NtGdiHfontCreate: reformat and MmCopyFromCaller -> SEH
svn path=/trunk/; revision=32721
- rename RGNDATA_ functions to REGION_ to have a consistent naming.
- move REGION prototypes to region.h
- rename REGION_AllocRgn to REGION_AllocRgnWithHandle and make it return a pointer to a locked region.
- rename UnsafeIntGetRgnBox to REGION_GetRgnBox
- rename UnsafeIntRectInRegion to REGION_RectInRegion
- remove UnsafeIntUnionRectWithRgn maco
- implement REGION_SetRectRgn and call it from NtGdiSetRectRgn
- reorder some parameters
- remove REGION_CropRgn, use REGION_CropAndOffsetRegion instead
- Implement UserShowCursor based on the code from NtUserCallOneParam and call it from inside the switch statement.
svn path=/trunk/; revision=32713
- IntGetPaintMessage: Set MessageQueue->PaintCount to 0, if no dirty Window is found. Stops spamming the debuglog, once is enough.
- UserGetDCEx: Check if a dce's hDC is valid, if not warn and create a new one. With our current code those hDCs should never get deleted, but this is also a hack, on Windows you can delete them.
- Don't dump the stack backtrace twice in GDIOBJ_Xxx functions
svn path=/trunk/; revision=32473
- move NtGdiFlushUserBatch prototype to ntgdi.h
- move pool tags from ntgdihdl.h to win32k/tags.h
- move DC struct from ntgdihdl.h to win32k/dc.h
- replace GDIEMPTYHDR with BASEOBJECT
- use BASEOBJECT in DC and GDIDEVICE structures
- rename some NtGdiXxx functions that don't deserve that name and remove some that were defined by a macro, but don't exist on windows (#if 0'ed atm)
- remove RetrieveDisplayHDC() prototype (doesn't exist)
svn path=/trunk/; revision=32419
- Begin superseding the WINDOW_OBJECT structure by WINDOW which is located on the desktop heap
- Implement GetClientRect() and GetWindowRect() to read the information from the desktop heap
svn path=/trunk/; revision=30467
- include the region that could not be copied (invisible before) into invalid region
- use less regions and calculations
- return the type of the invalidated region (used by NtUserScrollWindowEx)
- Remove LPtoDP and DPtoPL. Everything is now in logical coordinates.
NtUserScrollDC:
- use SEH for buffer transfer
NtUserScrollWindowEx:
- use SEH for buffer transfer instead of MmCopyFromCaller
- use SEH to write back to usermode
- return the type of invalid region not of the invalidated region (nothing if SW_INVALIDATE is not set)
- use members of WINDOW_OBJECT instead of calling IntWinListChildren
Use hungarian notation for variables
fixes bug 2237
See issue #2237 for more details.
svn path=/trunk/; revision=27815
- validate Parent windows on moving pixels
(both was fine earlier, but has been messed up recently)
- move sending of WM_SIZE and WM_MOVE from co_WinPosShowWindow to co_WinPosSetWindowPos
co_WinPosSetWindowPos:
- instantly erase when drawing windows or exposing region
- Invalidate child windows on BeginPaint
This should fix most window redrawing bugs and also (hopefully) speed up the gui (less redrawing).
svn path=/trunk/; revision=27672