On Wed Jun 5 13:02:30 2024 +0000, cqwrteur wrote:
> It is not. The problem is that ucrt can be statically linked from
> Microsoft UCRT static ucrt can be put back to FILE* in dynamic linking.
> And fast_io library is exploiting that to gain huge performance.
The `ok(ptrold + cntold == file->_ptr + file->_cnt, ...);` test is redundant. You're testing `ptrold` and `cntold` values in earlier tests.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5752#note_72454
This is an early draft of an implementation of key auto-repeat in wineserver to get some feedback. Some open questions:
1. queue_keyboard_message requires a `current` thread, but we don't get one in timeout callbacks. At the moment I am manually setting `current` to the foreground thread, but I am wondering if that's acceptable or we should explore other ways forward (also see TODO in code).
2. This draft introduces a new server request to configure auto-repeat (`enable/delay/period`). I am thinking that for more straightforward integration with the keyboard repeat SPI parameters, the request should only support the `enable` flag and the server should query the SPI registry values to get `delay` and `period` when needed. I am wondering if there any caveats here since I don't see other code in the server querying registry values (well, except to implement the registry requests themselves).
Also, I would hope that opening and caching the `HKCU\Control Panel\Keyboard` hkey would remove most of the cost of performing this operation (if that's even a concern at all).
--
v2: win32u: Remove auto-repeat functionality.
server: Implement key auto-repeat.
server: Check message target process for raw keyboard device flags.
user32: Add tests for cross-process raw keyboard events.
server: Pass desktop to get_first_global_hook.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5741
--
v2: wineps.drv: Add partial support for changing page size.
wineps.drv: Write PageBoundingBox for every page.
wineps.drv: Take all pages into account when computing bounding box.
wineps.drv: Write page orientation hint for every page.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5791
[test_WaitForInputIdle.tar.bz2](/uploads/a20c5b119741cd7b0b4813488854a992/test_WaitForInputIdle.tar.bz2)
Attached test replicates the problem. Basically the application does
process = OpenProcess(SYNCHRONIZE | PROCESS_QUERY_INFORMATION, FALSE, GetCurrentProcessId());
ret = WaitForInputIdle(process, 0x7fffffff);
assert(ret == 0);
With current wine.git WaitForInputIdle() returns WAIT_FAILED because the server call
get_process_idle_event() refuses to return idle_event for the current process. If that
limitation is removed then wineserver crashes, and other parts of the patch fix the crash.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5789
This adds some wine-only messages, but most of those are cases that follow an existing EVENT_SYSTEM_FOREGROUND wine-only message, so likely correctly reflecting a thing Wine is already known to do wrong.
The exception is WmRestore_3. https://testbot.winehq.org/JobDetails.pl?Key=146025 suggests that's also a case where focuses the window and shouldn't.
--
v2: win32u: Send EVENT_OBJECT_FOCUS in more cases.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5779