- Rename SetRectRgnEx to IntSetRectRgn and make it usermode only
- Implement IntSetNullRgn
- Improve SetRectRgn code and enable the usermode part
svn path=/trunk/; revision=65739
Rewrite CombineRgn, enabling full handling in usermode if the resulting region is either a rectangular or a NULL region.
svn path=/trunk/; revision=65738
- Make REGION_iOffsetRgn check the region for coordinate space overflow and fail, if the region cannot be moved
- Rename REGION_iOffsetRgn to REGION_bOffsetRgn and make it return BOOL instead of the complexity, since the majority of callers are not interested in the complexity. It's also more obvious that we need to check for an error.
svn path=/trunk/; revision=65733
- Rewrite NtGdiFillRgn and IntGdiPaintRgn
We now properly support painting regions on DCs with arbitrary world transforms, with pattern brushes and we respect the foreground ROP and mode of the DC. And we don't run into deadlocks due to having an exclusive region lock while trying to lock a DC. LOCKING MUST BE DONE IN PROPER ORDER!
svn path=/trunk/; revision=65730
- Rename IntSetPolyPolygonRgn to REGION_SetPolyPolygonRgn
- Implement GreCreatePolyPolygonRgn wrapper around it
- Fix iMode usage in NtGdiPolyPolyDraw
- Improve some variable naming
svn path=/trunk/; revision=65726
Rework GreCreateFrameRgn to return the new region. Implement the internal function REGION_bMakeFrameRegion doing the actual work. Fix frame calculation by moving the source region diagonal instead of only horizontal and vertical, use IntGdiOffsetRgn instead of manually fiddling with the rectangles.
svn path=/trunk/; revision=65725
More improvements to region.c:
- PROSRGNDATA -> REGION, void -> VOID, int -> INT, uppercase struct names
- do not put assignments into if statements
- !x -> x == NULL for pointers
- Add additional parentheses / curly braces
- rename RGN_ATTR::Flags to iComplexity
svn path=/trunk/; revision=65720
Temporarily disable UserClientConnect (in server side) and CSR client to server call (in client side), always set gfServerProcess to FALSE (that is normally almost true but when CSR itself does USER32 operations...), and comment again GetConnect() call in ClientThreadSetup, in an attempt to "fix" 3rd stage for bots (so that we don't assert in DesktopPtrToUser because some pdi is NULL...)
svn path=/trunk/; revision=65716
- Code formatting for NtUserProcessConnect.
[USER32]
- Hack a call to GetConnected in ClientThreadSetup in an attempt to temporarily "fix" a bug that makes the bots fail. Now we really need to fix user32 init!
svn path=/trunk/; revision=65714
- Set the process creation notify routine for BASE that needs to be called when a process is created.
Patch by Timo, see CORE-7505.
[BASESRV]
- Implement BaseSetProcessCreateNotify that just saves internally the notification function to be called when a process is created.
- Call the notification function where it should be.
CORE-7505
svn path=/trunk/; revision=65712
- Play around and declare USERSRV_API_CONNECTINFO (CSR-style-name connect info structure type) as an alias to USERCONNECT (win32k-style-name) structure that is used to perform... "connections" between user32 and winsrv/win32k subsystem.
[WIN32K]
- Make UserThreadCsrApiPort case of NtUserSetInformationThread return success to make usersrv happy (while saving CSR port handle in win32k is still not implemented).
[USER32]
- Clean up "a bit" DllMain, call CsrClientConnectToServer to connect to usersrv (copy-paste of what we do in kernel32 for base and console connection) and now determine properly whether we are doing server-to-server calls (i.e. properly set gfServerProcess).
- Reorganize GdiDllInitialize calls and put them all to the end of DllMain instead.
- No need to support DLL_THREAD_ATTACH/DETACH so call the magic DisableThreadLibraryCalls function.
[USERSRV]
- Implement UserClientConnect with the patch of Timo CORE-7505: it gives a CSR port handle to win32k (if not already done), then do process connection.
CORE-7505
svn path=/trunk/; revision=65710
* Remove internal IStartMenuSite interface that didn't serve any purpose.
* Stop using global instances of some core classes.
svn path=/trunk/; revision=65703
* Simplify a lot of methods my using helpers from shlwapi.
* Remove declarations for undocumented functions that are already declared in our headers.
* Move definitions of IID_IAugmentedShellFolder and CLSID_MergedFolder to our headers.
* Remove definitions of functions that are already implemented in shlwapi.
* Add CreateMergedFolder and CreateMenuBand functions in precomp.h in order to simplify creating these objects when using rshell.
svn path=/trunk/; revision=65698
* Implement handling of file associations marked as "NoOpen". Patch by Lee Schroeder, with a few tweaks.
CORE-8855 #resolve #comment Commited in trunk r65697. Thanks.
svn path=/trunk/; revision=65697
- Simplify NtUserInitialize: we can check whether gpepCSRSS is != NULL to see if we are initialized or not (instead of using gbInitialized).
- The UserInitialize helper doesn't need to take parameters. The two event handles (power and media, used when we receive a power event -- for sleep, etc... -- and a media event -- like USB key insertion and such --) just need to be used in the not-yet-implemented "Initialize Power Request List" and "Initialize Media Change" steps.
- Something that should be done is to bugcheck if the USER version reported is != 5.0 (as windows does).
[WINSRV]
- Collapse common inclusions from usersrv and consrv into the common header winsrv.h.
[USERSRV]
- _UserSoundSentry is NTAPI
- Stub UserClientConnect (Timo's patch contains more involved code. I will commit it later).
- Our NtUserInitialize(0, NULL, NULL); call (that made Windows BSOD) is wrong. It should be done with its first parameter correctly set to the USER version (5.0) and the two other parameters are handles to power and media events (see above). We should create them before.
This is part of patch by Timo Kreuzer.
CORE-7505 #comment UserClientConnect stubbed (it should be better implemented, I will commit the code from the patch later on); power&media events initialized; NtUserInitialize corrected.
svn path=/trunk/; revision=65696
Stubplement NtUserQueryInformationThread and NtUserSetInformationThread that will be used for:
- shutdown support: CORE-8322
- communicating a CSR Port handle to win32k: CORE-7505
CORE-7505 CORE-8322
svn path=/trunk/; revision=65693
On Windows 2k3, BASESRV_API_CONNECTINFO went under a slimming treatment and now is only 4 bytes. In fact all its information was already existing in the static base data structure (BaseStaticServerData). We should now be more 2k3-compatible :)
Fix also the testbots.
svn path=/trunk/; revision=65690