Commit graph

45569 commits

Author SHA1 Message Date
Timo Kreuzer
33579181bb [EXPLORER_NEW]
Provide the ability to query version info (needed for task
grouping).
Patch by DavidErceg <dave_154@hotmail.com>

See issue #4386 for more details.

svn path=/trunk/; revision=50367
2011-01-12 13:12:00 +00:00
Timo Kreuzer
fceaa9ff48 [WIN32K]
- In UserSetCursor, return a pointer to the old cursor, not the handle
- really delete the pointer shape when NULL cursor is set, instead of just hiding it.
- Move reference handling completely to NtUserSetCursor
- In UserChangeDisplaySettings, set NULL cursor before change and restore old cursor after change to make sure we have the right color format.

See issue #5722 for more details.

svn path=/trunk/; revision=50365
2011-01-12 11:49:29 +00:00
Timo Kreuzer
8119453d37 [WIN32K]
Don't leak the memory for DIB sections. we set BMF_DONT_FREE in SURFACE_bSetBitmapBits, when the caller provides bits. This needs to be reconsidered.

svn path=/trunk/; revision=50363
2011-01-12 01:01:30 +00:00
Timo Kreuzer
9e27e5706e [WIN32K]
Don't trat BI_BITFIELDS as compressed format in DIB_CreateDIBSection. Fixes KSStudio. Why it was introduced by r48359? I don't know. It was broken before. I refrain from making any more comments about that piece of ... code.

See issue #5781 for more details.

svn path=/trunk/; revision=50362
2011-01-12 00:26:20 +00:00
Timo Kreuzer
10c634a79d [USER32]
- Use new wsprintf library, remove old code (536 lines)
- Fixes output of %I64, for example dxdiag

svn path=/trunk/; revision=50361
2011-01-11 19:57:55 +00:00
Timo Kreuzer
85a33b9385 [CRT]
- Add user32_wsprintf library, with all the wsprintf functions, generated from the same codebase
- simplify handling of ll modifier in streamout

svn path=/trunk/; revision=50360
2011-01-11 19:09:48 +00:00
Giannis Adamopoulos
279d1b9348 fix build
svn path=/trunk/; revision=50359
2011-01-11 19:04:44 +00:00
Giannis Adamopoulos
f87e9de819 fix build
svn path=/trunk/; revision=50358
2011-01-11 18:55:19 +00:00
Giannis Adamopoulos
60c3c28ee1 [undocuser.h]
- gather several undocumented definitions for user32 that were defined in several different files, sometimes in the source, sometimes in headers and sometimes defined several times here and there
This file should not contain internal user32 definitions but undocumented public definitions

svn path=/trunk/; revision=50357
2011-01-11 18:47:16 +00:00
Timo Kreuzer
caa8ab6ac5 [CRT]
Remove deprecated <if>.

svn path=/trunk/; revision=50356
2011-01-11 15:17:35 +00:00
Timo Kreuzer
7397aa09ad [CRT]
Get rid of the old printf code and some unused functions. 3346 lines of code less.

svn path=/trunk/; revision=50355
2011-01-11 13:13:47 +00:00
Timo Kreuzer
0b68bdaf30 [CRT]
Improve code readability a bit

svn path=/trunk/; revision=50354
2011-01-11 12:17:46 +00:00
Amine Khaldi
5962942907 [CMAKE]
- Fix wmi and drmk entry points.
- Don't use both reactos and wine debug headers in iphlpapi. Fixes the macro redefinition warnings.

svn path=/branches/cmake-bringup/; revision=50353
2011-01-10 20:59:17 +00:00
Timo Kreuzer
500a89ae51 [WIN32K]
Remove debugging code.

svn path=/trunk/; revision=50352
2011-01-10 09:53:56 +00:00
James Tabor
e642b65095 [Win32k]
- Implement NtGdiCreateMetafileDC.
- Since most of the gdi work I committed is being reverted or if'ed out of existence, this will be the last.

svn path=/trunk/; revision=50351
2011-01-10 01:36:14 +00:00
James Tabor
ce036c09c3 [Win32k]
- Win32k implementation of GetCharacterPlacementW, work is dedicated to the late Professor John Collins.


svn path=/trunk/; revision=50350
2011-01-10 01:30:17 +00:00
Timo Kreuzer
d731a4b9f1 [WIN32K]
Fix use of XFORMOBJ. Should fix gdi32_winetest clipping regression and release breakage.

svn path=/trunk/; revision=50349
2011-01-09 23:23:42 +00:00
Amine Khaldi
9790b02502 [CMAKE]
- Fix another warning in libxml2. Thanks to Timo.

svn path=/branches/cmake-bringup/; revision=50348
2011-01-09 21:34:20 +00:00
Roel Messiant
aed1ae8698 [NTOS]
Complete rewrite reserving and releasing of System PTEs.

The previous algorithm, in a nutshell, worked as follows:
- PTE clusters are in a singly linked list, ordered by their base address.
- All PTEs in the clusters are zeroed (except for cluster list bookkeeping).
- Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them.
- Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters.

Problems with the previous algorithm:
- While the idea is that all PTEs in clusters are zeroed, which requesters rely on, cluster bookkeeping isn't zeroed on merges.
  The side effect of this was that PTEs that weren't really zeroed were randomly delivered to requesters.
- 99% of the time, allocations are serviced using the first cluster in the list, which is virtually always the first suitable cluster.
  This is so because the ordering is based on the base address of the clusters, and allocations are serviced using the cluster tail.
  Because the first cluster starts out as the whole pool, and the pool is quite sizable, it can deal with virtually allocations.. for a while.
- A corollary of the previous point is *massive fragmentation* because: as long as an allocation isn't released back into the pool,
  the space of previous allocations that have been released isn't reused because the first cluster can't suck them up, and enough allocations remain in use.
- The combined effect of the previous two points: a first cluster that effectively shrinks mostly, with small clusters forming behind it.
  Once the first cluster has shrunk far enough (which of course takes a long time), 90% of the space may still be free, scattered in mostly small clusters.
  This would make decent sized allocations fail because of the heavy fragmentation.
- An implementation detail that caused the head of the list to be treated as a genuine cluster when the first cluster in the list was too small.
  The algorithm (as explained above) made this case quite unlikely until your system has been running for a while, after which it could happily
  corrupt list heads of other pools, depending on where the list head is with respect to its own pool.

Empirically obtained data revealed that after just *booting to the desktop*, the pool for System Pte Space entries
contained roughly 70 (unusable) clusters, blocking 15 to 20% of the pool. These figures increased to roughly 100
clusters and 30 to 35% after opening a foxy browser and using it to visit a mathematically inspired search engine.

The same data also showed that over 95% of allocations requested just a single PTE, and a noticable allocation spike
also occured in the range of 65-128 PTEs.  It should be clear optimizing for small allocations is a good idea,
and preferably encourage reuse the same PTEs for such allocations.

And the new algorithm was born:
- PTE clusters are in a singly linked list, ordered by increasing cluster size.
- All PTEs in the clusters are zeroed (except for cluster list bookkeeping) .. really this time!
- Upon reservation: Walk the list to get the first cluster that's large enough, cut the requested amount of PTEs off its tail and return them.
- Upon release: Create a new cluster using the PTEs to release, and merge it together with possible adjacent clusters.
- Both in the reservation and release actions, insertions into the list preserve the increasing cluster size order.

Empirically obtained data now revealed that after just booting to the desktop, the pool for System Pte Space entries
contained exactly 2 clusters.  This increased to 10 clusters after some minor internet browsing and watching a 5 minute video using a media player.


svn path=/trunk/; revision=50347
2011-01-09 20:52:22 +00:00
Amine Khaldi
90683e300a [CMAKE]
- Reduce libxml2 warnings.

svn path=/branches/cmake-bringup/; revision=50346
2011-01-09 20:40:34 +00:00
Timo Kreuzer
9cf739ac6f [WIN32K]
Cleanup pooltags a little, use official tags where known and applicable.

svn path=/trunk/; revision=50345
2011-01-09 19:51:06 +00:00
Timo Kreuzer
c2c492d850 [WIN32K]
In GreCreateBitmapEx handle allocation failure in the rle hack path and set LastError, when failed to allocate bitmap bits.

svn path=/trunk/; revision=50344
2011-01-09 18:53:58 +00:00
Timo Kreuzer
39b87b357f [WIN32K]
- In BitmapFormat, allow intermediate bpp values, use ULONG as parameter type, instead of WORD and DWORD
- In NtGdiCreateBitmap get the real bpp value from the gajBitsPerFormat array
- Add back check of too large nWidth (needed to make sure, cjWidthBytes didn't overflow)
- Merge all parameter checks
- Check cPlanes and cBitsPixel paramters explicitly
- Use GreCreateBitmapEx
- Remove BITMAP_GetRealBitsPixel

svn path=/trunk/; revision=50343
2011-01-09 18:38:41 +00:00
Timo Kreuzer
3ecc17156e [WIN32K]
Improve NtGdiStretchDIBitsInternal, use _SEH2_YIELT instead of saving an NTSTATUS and handle the fast path in place instead of setting a BOOL variable. Fixes warnings about uninitialized variables.

svn path=/trunk/; revision=50342
2011-01-09 18:11:44 +00:00
Amine Khaldi
b02f54b843 [CMAKE]
- Add missing define.

svn path=/branches/cmake-bringup/; revision=50341
2011-01-09 17:24:39 +00:00
Amine Khaldi
4bb42765f5 [CMAKE]
- Improve the warnings and compiler flags according to the different architectures we have.

svn path=/branches/cmake-bringup/; revision=50340
2011-01-09 16:49:10 +00:00
Dmitry Gorbachev
e6182247f6 [FREELDR]
Delete a duplicate line.

svn path=/trunk/; revision=50339
2011-01-09 15:11:49 +00:00
Sylvain Petreolle
acf11aa2c7 [CMAKE]
Get a proper bootcd for unix builds (3rd stage.)
Thanks to Amine for his findings.


svn path=/branches/cmake-bringup/; revision=50338
2011-01-08 23:25:58 +00:00
Sylvain Petreolle
f8f7ec4d56 [CMAKE]
-fshort-wchar is not related to inline, neither is i386 specific.


svn path=/branches/cmake-bringup/; revision=50337
2011-01-08 23:22:54 +00:00
Sylvain Petreolle
398ded55b9 [CMAKE]
Move -fshort-wchar defintion (gcc specific).


svn path=/branches/cmake-bringup/; revision=50336
2011-01-08 22:33:22 +00:00
Amine Khaldi
aa6bee3557 [CMAKE]
- Prevent some status codes redefinitions.

svn path=/branches/cmake-bringup/; revision=50335
2011-01-08 21:41:12 +00:00
Amine Khaldi
152b92b928 [CMAKE]
- Improve message headers handling.

svn path=/branches/cmake-bringup/; revision=50334
2011-01-08 20:44:41 +00:00
Amine Khaldi
9d64a217d5 [CMAKE]
- Prevent cmake from escaping preprocessor definition values added via add_definitions.
- Fix a FIXME in oleaut32 and urlmon builds.

svn path=/branches/cmake-bringup/; revision=50333
2011-01-08 20:01:33 +00:00
Timo Kreuzer
907aab7488 {GDI32]
Check paramters in CombineTransform

svn path=/trunk/; revision=50332
2011-01-08 19:24:29 +00:00
Timo Kreuzer
c265d7532b [GDI32_APITEST]
Remove the stuff that shouldn't have been comitted.

svn path=/trunk/; revision=50331
2011-01-08 19:20:20 +00:00
Timo Kreuzer
ae1bdd5334 [GDI32]
- Move EFLOAT handling in seperate file, its x86 specific
- Implement CombineTransform fully in usermode instead of forwarding to NtGdiCombineTransform
- Implement MatrixToXForm
- Implement GdiTransformPoints

svn path=/trunk/; revision=50330
2011-01-08 19:06:38 +00:00
Timo Kreuzer
281dd88c8c [GDI32_APITEST]
Add tests for CombineTransform and MaskBlt

svn path=/trunk/; revision=50329
2011-01-08 18:56:38 +00:00
Amine Khaldi
458d9009dd [CMAKE]
- Fix the browseui bulgarian translation file name.

svn path=/branches/cmake-bringup/; revision=50328
2011-01-08 14:11:37 +00:00
Amine Khaldi
a3ca9b561e [CMAKE]
- Fix rossym dependencies.

svn path=/branches/cmake-bringup/; revision=50327
2011-01-08 13:55:06 +00:00
Amine Khaldi
74811b583a [CMAKE]
- Fix more dependencies.

svn path=/branches/cmake-bringup/; revision=50326
2011-01-08 13:30:27 +00:00
Amine Khaldi
b4e7b22469 [CMAKE]
- Fix delayimp dependency.

svn path=/branches/cmake-bringup/; revision=50324
2011-01-08 13:19:38 +00:00
Amine Khaldi
dcee0f7cc5 [CMAKE]
- Fix dnslib dependency.

svn path=/branches/cmake-bringup/; revision=50323
2011-01-08 13:14:25 +00:00
Amine Khaldi
1ecaf59fcb [CMAKE]
- Fix a missing dependency.

svn path=/branches/cmake-bringup/; revision=50322
2011-01-08 13:00:35 +00:00
Timo Kreuzer
7cea632244 [GDI32]
Implement GdiGetDcAttr. Just for convenience / cleaner code.

svn path=/trunk/; revision=50321
2011-01-08 12:19:23 +00:00
Amine Khaldi
287ba86f03 [CMAKE]
- Add -fshort-wchar to host tools

svn path=/branches/cmake-bringup/; revision=50320
2011-01-08 11:52:58 +00:00
Aleksey Bragin
1e3d9c9a96 [HEAP]
- Peer review rocks.

svn path=/trunk/; revision=50319
2011-01-08 11:32:55 +00:00
Timo Kreuzer
c413c22ddf [CRT]
Fix _flsbuf return value

svn path=/trunk/; revision=50314
2011-01-07 21:15:35 +00:00
Amine Khaldi
7f7729cb6c [CMAKE]
- Add ntdll apitest to build.

svn path=/trunk/; revision=50312
2011-01-07 20:31:56 +00:00
Timo Kreuzer
b58a3e9752 [NTDLL_APITEST]
Convert asm to GAS/ML compatible format

svn path=/trunk/; revision=50311
2011-01-07 20:11:56 +00:00
Amine Khaldi
54f486c247 [CMAKE]
- Silence the quotes warning.

svn path=/branches/cmake-bringup/; revision=50310
2011-01-07 20:07:15 +00:00