Commit graph

44482 commits

Author SHA1 Message Date
Timo Kreuzer 8bf0247095 [GDI32_APITEST]
Add tests for DPtoLP
- More tests for CombineTransform, CreateBitmapIndirect and SelectObject

svn path=/trunk/; revision=50404
2011-01-16 20:53:48 +00:00
Timo Kreuzer e1efc7ca51 [AMD64]
Add ksamd64.inc

svn path=/trunk/; revision=50403
2011-01-16 18:16:24 +00:00
Matthias Kupfer 58fa62af33 - Fix replaced by more flexible code for arbitrary cursor sizes
svn path=/trunk/; revision=50402
2011-01-16 18:15:12 +00:00
Thomas Bluemel 98fe9682e3 Implement GetClassLongPtrA/W
svn path=/trunk/; revision=50399
2011-01-16 17:08:07 +00:00
Matthias Kupfer 030dbb0bbc - Fix draw of cursors in static controls
- Last part of fix for bug #4874

svn path=/trunk/; revision=50398
2011-01-16 12:51:14 +00:00
Thomas Bluemel 44f8ef985c Create a security descriptor for the desktops rather than passing the ACLs in as a security descriptor
svn path=/trunk/; revision=50397
2011-01-16 02:51:58 +00:00
Thomas Bluemel 8f2b4ea5e1 Portability bugfixes
svn path=/trunk/; revision=50396
2011-01-16 01:32:45 +00:00
Timo Kreuzer fb49d55fda [WIN32K]
Set correct error value on failure in NtUserSetCursor. Patch by Victor Martinez.

svn path=/trunk/; revision=50392
2011-01-15 19:42:56 +00:00
Timo Kreuzer 6ecbc52144 [NTOSKRNL]
Fix comments and reduce code complexity.

svn path=/trunk/; revision=50391
2011-01-15 19:13:22 +00:00
Eric Kohl b51f0a0553 [NTOSKRNL]
Simplify SepPrivilegeCheck.
Patch by Timo Kreuzer.

svn path=/trunk/; revision=50390
2011-01-15 14:35:26 +00:00
Timo Kreuzer 08c3db2a66 [PING]
Fix MyLoadString. Patch by menone7 at gmail dot com.

svn path=/trunk/; revision=50389
2011-01-15 12:58:05 +00:00
Timo Kreuzer 97b0bc9cd2 [CRT]
Fix uninitialized warning

svn path=/trunk/; revision=50387
2011-01-15 11:18:01 +00:00
Giannis Adamopoulos ce53947b29 Revert 50381 and 50382. Altough it reduces number of reboots in the test server, it somehow reveals a registry corruption and cripples completely automated testing
svn path=/trunk/; revision=50386
2011-01-14 23:20:26 +00:00
Timo Kreuzer 3d2338dcfb [CRT]
Fix miscalculation of number of decimal points to shift for %f format. Should fix shlwapi:string tests and bug 5818.

svn path=/trunk/; revision=50385
2011-01-14 20:00:10 +00:00
Roel Messiant e1fd32ceb8 [IPHLPAPI]
- Remove conditional redefine of DPRINT. Wine debug channels at this point, and we have NDEBUG.
- Use TRACE instead of DbgPrint. Gets rid of the "Status 2" spam when no static nameserver is in the registry.

svn path=/trunk/; revision=50384
2011-01-14 18:47:57 +00:00
Amine Khaldi bb2d08d57e [CMAKE]
- Fix rosautotest build.

svn path=/trunk/; revision=50382
2011-01-13 11:13:09 +00:00
Giannis Adamopoulos ff9649d7d7 [rosautotest]
-Implement closing any dialog that shows and stays visible for some time. This way rosautotest can now continue if a test application crashes or asserts.

svn path=/trunk/; revision=50381
2011-01-13 09:58:04 +00:00
Giannis Adamopoulos 4fa818b9d8 [user32]
- Implement sending EVENT_SYSTEM_DIALOGSTART event. It will be used by rosautotest

svn path=/trunk/; revision=50380
2011-01-13 09:56:32 +00:00
Roel Messiant f4bc8a0c1e [CMAKE]
- Add tests for CombineTransform and MaskBlt, part 2. Build is happy again.

svn path=/trunk/; revision=50379
2011-01-12 23:20:02 +00:00
Johannes Anderwald 21a501b67b Fix typos ;)
svn path=/trunk/; revision=50378
2011-01-12 22:25:16 +00:00
Pierre Schweitzer 332f24f0c3 [PING]
French translation patch from myself aka Pierre Schweitzer, with deepest love, and so on...

svn path=/trunk/; revision=50377
2011-01-12 21:55:48 +00:00
Timo Kreuzer 8e33611d65 [PING]
Italian translation of ping. Patch by Vincenzo Cotugno ( vins8920 at hotmail dot com)

svn path=/trunk/; revision=50376
2011-01-12 21:35:45 +00:00
Timo Kreuzer 936141aff8 [WIN32K]
Go back to hiding the cursor with GreMovePointer, instead of setting NULL bitmaps. While MSDN states that psoColor and psoMask can both be NULL in DrvSetPointerShape, it doesn't explicitly say anything about both being NULL at the same time. VBox driver doesn't expect that and will crash, so most likely windows doesn't do this.

svn path=/trunk/; revision=50375
2011-01-12 21:15:46 +00:00
Timo Kreuzer 4d273ac5b0 [PING]
Polish translation of ping. Patch by Olaf Siejka.

svn path=/trunk/; revision=50374
2011-01-12 20:05:06 +00:00
Timo Kreuzer 56bba0d097 [PING]
Add German translation.

svn path=/trunk/; revision=50373
2011-01-12 17:12:09 +00:00
Timo Kreuzer 224a9ae3e3 [PING]
Implement small helper MyLoadString, using FindResource, LoadResource, LockResource and replacing LoadString, so we don't need to link to user32 anymore.

svn path=/trunk/; revision=50372
2011-01-12 15:31:20 +00:00
Timo Kreuzer 131cc1f4b3 [PING]
Add localization support to ping. Patch by "none" (menone7 at gmail dot com)

See issue #5500 for more details.

svn path=/trunk/; revision=50371
2011-01-12 14:57:22 +00:00
Timo Kreuzer ab4a29a81b [WIN32K]
Reset monitor size after mode switch. patch by rafalh <rafalh1992 at o2 dor pl>

See issue #5727 for more details.

svn path=/trunk/; revision=50370
2011-01-12 14:02:54 +00:00
Timo Kreuzer 2aa0f3b839 [NTOSKRNL]
Remove broken definition of SharedUserdata and use correct SharedUserData instead. Fixes a crash on real Hardware. Patch by Daniel Zimmermann (netzimme at googlemail dot com)

See issue #5650 for more details.

svn path=/trunk/; revision=50369
2011-01-12 13:40:34 +00:00
Timo Kreuzer d73991290d [EXPLORER_NEW]
Open a context menu, when a task is right clicked.
Patch by greenie (greenie__ at hotmail dot com)

See issue #4671 for more details.

svn path=/trunk/; revision=50368
2011-01-12 13:22:12 +00:00
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
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
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
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