--
v2: joy.cpl: Use the DIJOYSTATE2 user data format to support more buttons.
joy.cpl: Improve the DInput button display with many buttons.
joy.cpl: Refresh the DInput button display on device change.
joy.cpl: Process messages while waiting for the input threads.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2170
Fixes Age of Empires III not being able to find its servers / multiplayer games. That regressed with the following commit:
```
commit 745df5915cf4c7411d69b4fd2ba5d05a333f3947
Author: Hans Leidekker <hans(a)codeweavers.com>
Date: Wed Aug 31 09:42:11 2022 +0200
bcrypt: Force symmetric key reset if necessary.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52457
```
The core problem is not in this commit though. The bit of the commit which regressed AoE is removing ```!is_zero_vector( vector, vector_len )``` condition in key_symmetric_set_vector() which was previously also forcing key reset (which was resetting key to the set value whenever the key is nonempty). That was apparently breaking other things, that's why it was probably removed.
The actual culprit is that BCryptEncrypt() / BCryptEncrypt() modify init vector on output in AES CBC and CFB mode on Windows. So, to properly sync our gnutls key we need to return the value in IV parameter like Windows does and decide whether the key needs update or not based on comparison with the actual dynamic key state, not with the value set initially. The game sets the IV data over multiple encrypt or decrypt call (sets it with its own fixed value overwriting what Windows returns in those). Before the blamed commit that worked because key_symmetric_set_vector() was always pushing the given key to gnutls. But that was breaking apps which worked differently (which way is probably a more expected usage) which set IV with their only once initially and then either:
- pass the same buffer, which on Windows has the updated IV and in Wine was always the same, thus the changed in blamed commit fixed the thing by keeping the internal state of gnutls key untouched;
- pass NULL buffer; this case I suppose didn't work correctly neither before nor after the blamed commit but should be also fixed by this MR.
Besides newly added tests (which cover IV output data plus some additional cases of encryption with auto-modified state) the MR is fixing a few rather unfortunate existing todo's.
Now, the implementation. My first instinct was to try to extract that updated state from gnutls, but:
1. It seems like there is no exported function which would give this updated state. There is _gnutls_cipher_get_iv() used in tests but it doesn't even seem to work for AES / CBC;
2. The comment above _gnutls_cipher_get_iv() says:
```
* This is solely for validation purposes of our crypto
* implementation. For other purposes, the IV can be typically
* calculated from the initial IV value and the subsequent ciphertext
* values.
```
So it doesn't look like gnutls is planning to export anything like that. Also, it is not apparent that "init vector" is generally equivalent to the dynamic cipher hash, and the fact that Windows returns that in the IV vector back look rather implementation specific. So, also given that the updated state hash value is the simply taken from the last encrypted data block (input on decrypt and output on encrypt) I hope it is ok to just code that.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2160
Second commit is to be removed.
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
--
v6: windows.media.speech: Implement Vosk create and release functions in the unixlib.
windows.media.speech/tests: Allow the SpeechRecognizer creation to fail in Wine.
windows.media.speech/tests: Get rid of duplicated hresult.
windows.media.speech: Add unixlib stub.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2091
On Wed Feb 8 21:41:12 2023 +0000, Michael Stefaniuc wrote:
> WTB might support XP and Vista but those aren't part of the default test set.
> Nor are they shown on https://test.winehq.org/data/ .
> The winetest/dissect utility though doesn't marks them as prediluvian.
Thanks for the answer. From now on I will assume that we only care about testing with the OSes shown at <https://test.winehq.org/data/>. We should probably add a note to that effect to the wiki somewhere.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2128#note_23873
a hotfix for the recent release of Persona 5 Royal.
--
v12: kernel32: Add semi-stub for RemoveDirectoryTransactedA/W().
kernel32: Add semi-stub for GetFileAttributesTransactedA/W().
kernel32: Add semi-stub for FindFirstFileTransactedA/W().
kernel32: Add semi-stub for DeleteFileTransactedA/W().
kernel32: Add semi-stub for CreateDirectoryTransactedA/W().
kernel32: Add semi-stub for CreateFileTransactedA/W().
https://gitlab.winehq.org/wine/wine/-/merge_requests/1145
On Fri Feb 10 05:54:45 2023 +0000, **** wrote:
> Marvin replied on the mailing list:
> ```
> Hi,
> It looks like your patch introduced the new failures shown below.
> Please investigate and fix them before resubmitting your patch.
> If they are not new, fixing them anyway would help a lot. Otherwise
> please ask for the known failures list to be updated.
> The tests also ran into some preexisting test failures. If you know how
> to fix them that would be helpful. See the TestBot job for the details:
> The full results can be found at:
> https://testbot.winehq.org/JobDetails.pl?Key=129281
> Your paranoid android.
> === w7u_2qxl (32 bit report) ===
> user32:
> msg.c:11208: Test failed: Got 1, error 1159.
> === w7u_el (32 bit report) ===
> user32:
> msg.c:11208: Test failed: Got 1, error 1159.
> === w1064v1507 (32 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w1064v1809 (32 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w1064_tsign (32 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w10pro64 (32 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w1064v1507 (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w1064v1809 (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w1064_2qxl (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w1064_adm (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w1064_tsign (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w10pro64 (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w10pro64_en_AE_u8 (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w10pro64_ar (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w10pro64_ja (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> === w10pro64_zh_CN (64 bit report) ===
> user32:
> msg.c:11209: Test failed: Device broadcast was not received.
> ```
For reference this message indicates that the merge request introduces a new failure. Such merge requests should not be merged!
See bug 54477:
https://bugs.winehq.org//show_bug.cgi?id=54477
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2154#note_23866
Convert all consecutive calls to d7_DrawPrimitive(TRIANGLE_FAN) into
a single call to d7_DrawPrimitive(TRIANGLE_LIST) with all the vertices.
Note, it *increase* the number of vertices, but bandwith is much less costly
than multiple calls.
Note, only a very precise subset of the calls get buffered in order to
ensure that the disruption is minimal.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=33814
--
v11: ddraw: Convert buffer API to use d3d_device struct
ddraw: Also Buffer D3DPT_POINTLIST
https://gitlab.winehq.org/wine/wine/-/merge_requests/2105
Not completely sure if it's worth having for 8.0, but opening this to share the target I'm trying to reach.
--
v10: ntdll: Add a heap thread affinity and per-affinity bin group cache.
ntdll: Use atomics and lock-free list for bin groups.
ntdll: Implement Low Fragmentation Heap frontend.
ntdll: Split heap_resize_block into heap_resize_(block|large) helpers.
ntdll: Count allocations and automatically enable LFH.
ntdll: Increase heap block tail_size capacity to 16 bits.
ntdll: Implement HeapCompatibilityInformation.
ntdll: Fix HeapWalk with empty uncommitted consecutive subheaps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1628
Not completely sure if it's worth having for 8.0, but opening this to share the target I'm trying to reach.
--
v9: ntdll: Add a heap thread affinity and per-affinity bin group cache.
ntdll: Use atomics and lock-free list for bin groups.
ntdll: Implement Low Fragmentation Heap frontend.
ntdll: Split heap_resize_block into heap_resize_(block|large) helpers.
ntdll: Count allocations and automatically enable LFH.
ntdll: Increase heap block tail_size capacity to 16 bits.
ntdll: Implement HeapCompatibilityInformation.
ntdll: Fix HeapWalk with empty uncommitted consecutive subheaps.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1628