Implement gdi pool. An allocator for user mode gdi object attributes.
The old method allocated a 4k page for every object, wasting 4k physical memory and 64k address space (allcoation granularity)
The new allocator creates a per process pool for each object attribute type. Allocations are done from "sections" that start with 1 page and grow dynamically up to 64k, if neccessary a new section is allocated. This will use about 1/10 of memory for dc attributes and 1/512 for brush attributes. Also allocation is way faster. Caching object attributes is not neccessary anymore.
svn path=/trunk/; revision=51357
* Revert part of 37148. One FontGDI is used for fonts with different sizes. Do not cache font metrics then and instead calculate them every time when needed. It fixes spacing in menus if some application uses default GUI font with size other than 11.
See issue #4106 for more details.
svn path=/trunk/; revision=51356
* Computer name length is limited to 15 characters, not 63. Fixes possible buffer overflow
* Spotted by Victor Martinez
svn path=/trunk/; revision=51349
- Move dereferencing of the MessageQueue from co_UserDestroyWindow to co_UserFreeWindow.
A reference is added to the MessageQueue for all windows created.co_UserFreeWindow is called for all windows and needs to be where the dereferencing of MessageQueue occurs.
This fixes NonPagedPool memory leak. See bug 6112 for more info.
svn path=/trunk/; revision=51345
- KbdDispatch: Set Status vice IoStatus.Status for all branches of switch. Use break instead of goto intcontfailure.
The previous code would set Status to what ever was in the IoStatus.Status of the IRP and return that Status.
Some times this would be STATUS_PENDING, which IIRC is a no-no.
This caused the kbdclass to enter into a wait that would never be satisifed hence blocking the keyboard thread.
This should fix the failure of keyboard input bugs.
svn path=/trunk/; revision=51344
- Reflect the recent user32_apitest changes. Please consider updating the cmake files when you alter the rbuild files in the future.
svn path=/trunk/; revision=51336
- Properly check parameters in RtlFindActivationContextSectionString. Almost the same as Wine did, but factored out into a standalone function, improved undocumented flags checks and allowing null data pointer in certain cases.
svn path=/trunk/; revision=51333
- Use the shell default auto-arrangement positioning. Aloow using custom positioning when configured. This fixes the positioning of icons of the desktop to look like windows
svn path=/trunk/; revision=51330
* DPtoLP/LPtoDP functions should return TRUE even if they get 0 or less points or if pointer to points is invalid. See gdi32:DPtoLP apitest.
* Fixes 24 gdi32:DPtoLP apitests.
svn path=/trunk/; revision=51328
- Implement ExecuteTransfer to replace SubmitTransfer.
- Start implentation for BulkTransfers and needed DMA. This needs much more work to be done correctly. We will get to it.
- Implement URB_FUNCTION_CLASS_INTERFACE.
- Add comments.
Change 3 of 3.
svn path=/trunk/; revision=51327
- For common buffer memory, only allocate one page and allocate more as needed. This implementation will most likely be replaced with janderwalds.
- Use a safecount while attempting to stop and start the controller, so that an error can be displayed vice doing endless loop for controllers that are misbehaving.
- Reorganize a few structuers and remove members of structures that are not used.
- Add comments for some of the DirectCall Interface Functions.
Change 2 of 3.
svn path=/trunk/; revision=51326
- Fix linking of QueueHeads. Implement LinkQueueHeadToCompletedList and CleanupAsyncList. These functions are used to software link the completed queueheads to a completed list. Only after the driver handshakes with the controller can this memory be freed.
Fix a few incorrect values for QueueHead.
- EhciDefferedRoutine: Implement handling of completed QueueHeads by removing them from the AnsycList and setting any errors for failure.
- Reserved a QueueHead that will always be in the AsyncList Address Register. By setting it as the Head of Reclamation the controller can know when it has reached the end of the QueueHead list.
- Remove all code from FdoDispatchInternalDeviceControl. This should never be called by upper level drivers.
Change 1 of 3.
svn path=/trunk/; revision=51325
* Return 1 in WM_ERASEBKGND when desktop is painted
* Fix background for desktop icons and their labels
* Moreover fixes explorer_new background
svn path=/trunk/; revision=51322
* Sync listview to Wine 1.3.17
* Set background and text color before calling DrawFocusRect. Those colors are used by monochrome brush during painting. Tested this function in Windows and our implementation is correct. Wine has DrawFocusRect not correctly implemented and that's why they don't see this bug. Should be sent to wine (tm).
svn path=/trunk/; revision=51321
* Copy RegQueryValueExA from Wine. Fixes 24 winetests fails which appeared after r51222. They are caused by calling RegQueryValueExA with buffer size set to large value. Old implementation was allocating new buffer with specified size (it was failing) and using unicode function. New implementation use given buffer size only when coping data.
See issue #6105 for more details.
svn path=/trunk/; revision=51314
NetUserModalsGet failed if the domain SID returned by LsaQueryInformationPolicy was NULL. Handle the NULL SID case correctly.
See issue #6102 for more details.
svn path=/trunk/; revision=51313
- Revert parts of 51283, thanks to Giannis for setting me straight on SetCursorPos and without breaking setting the Track window for TrackMouseEvent. Pass the new SetCursorPos, and wine test_TrackMouseEvent and input test_mouse_ll_hook tests.
svn path=/trunk/; revision=51305
- Rewrite GetKeyState based on wine. Now it's results are based on whether or nor the message queue has processed a keyboard message and not the actual state of the keyboard.c
- TODO: ensure it works corectly and use this implementation in most other places in win32k when we need to check the state of a key. To ensure nothing breaks, this change affects only GetKeyState
svn path=/trunk/; revision=51295
- Fix more subtle bugs:
- Check with long line name if the current connection is activated when adding lines to dialog or when adding lines to the preferences dialog
- Use the temporary preferences context when writing the line settings
- Don't destroy the mixer when the preferences dialog is closed. the new mixer will be used for the application when the preferences are changed
- Pass the current selected line to the preferences dialog
svn path=/trunk/; revision=51292
- Only call hooks and check if Win32Thread is in cleanup if the windows procedure is being called.
- Set DispatchingListEntry.Flink to NULL. The real fix for bug 5580. This bug may be the cause of other crashes experienced by users just before loading desktop. Found by rafalh.
svn path=/trunk/; revision=51291