Commit graph

44711 commits

Author SHA1 Message Date
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
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
Dmitry Gorbachev e6182247f6 [FREELDR]
Delete a duplicate line.

svn path=/trunk/; revision=50339
2011-01-09 15:11:49 +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
Timo Kreuzer 7cea632244 [GDI32]
Implement GdiGetDcAttr. Just for convenience / cleaner code.

svn path=/trunk/; revision=50321
2011-01-08 12:19:23 +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
Aleksey Bragin a3647b9727 [HEAP]
- Fix a typo (assignment) in the ASSERT, spotted by Johannes Anderwald.

svn path=/trunk/; revision=50309
2011-01-07 15:33:46 +00:00
Timo Kreuzer ca4ebe1b55 [WIN32K]
- Use if, instead of switch to handle flags in XFORMOBJ_bXformFixPoints
- Define XFORMOBJ to EXFORMOBJ, a stack object that links to the matrix
- There is no spoon.

svn path=/trunk/; revision=50307
2011-01-06 22:00:26 +00:00
Jérôme Gardou 38bbc45b31 [APITESTS:GDI32]
Add missing \n

svn path=/trunk/; revision=50306
2011-01-06 19:03:09 +00:00
Michael Martin 686accee7c [usb/usbehci]:
- EhciDefferedRoutine: Only free Mdl if one was created when the request was added to the queue.
- Dont assume that three transfer descriptors need to be freed, use a while moving to each linked and free instead.
- Yabba Dabba Doo added to increase size of message. :)


svn path=/trunk/; revision=50304
2011-01-06 18:45:18 +00:00
Michael Martin e11ab1740c [usb/usbehci]:
- Implement URB_FUNCTION_SELECT_INTERFACE.
- Add missing IoMarkIrpPending before calling SubmitControlRequest.
- Now use BuildSetupPacketFromURB for creating the CtrlSetup data structure.
- When selecting configuration, make the ConfigurationHandle from the related UsbDevice instead of always the RootHub device.
- Fix typo that caused all pipes to be marked as interrupt type.
- Change CompletePendingURBRequest to only complete one SCE request Irp.

svn path=/trunk/; revision=50303
2011-01-06 18:29:52 +00:00
Michael Martin 748ea2de6c [usb/usbehci]:
- Fix bug in InitializeUsbDevice that caused endpoints to be duplicated in internal config structure.
- Fix implementation of UsbRemoveDevice.
- Implement SetDeviceHandleData and RestoreUsbDevice.
- SubmitControlTransfer: Not all control request need data, in which case dont create a MDL and a PID_CODE_IN_TOKEN TD Descriptor.
- Fix bug in ReleaseMemory that caused memory not to be marked as free.
- Fix incorrect memory header size that resulted in memory corruption.

svn path=/trunk/; revision=50302
2011-01-06 17:46:59 +00:00
Daniel Reimer 6d1907d27b Update rapps database
svn path=/trunk/; revision=50297
2011-01-06 12:44:01 +00:00
Timo Kreuzer 506c53833e [WIN32K]
Fix a bug in FLOATOBJ_DivLong

svn path=/trunk/; revision=50296
2011-01-06 00:19:40 +00:00
Timo Kreuzer 2f04a69915 [CRT]
Fix build

svn path=/trunk/; revision=50291
2011-01-04 22:29:43 +00:00