Previous commit removed flushing but this causes issues in some games (Fallout 3 mainly).
- add flushing
- move variable creation after initial condition returns in wm_reader_get_stream_sample. This caused some slow down.
- Remove EOS sets. Some are not what flushing did before. Had some seg faults on exiting Fallout 3 with them in.
original commit 5144b27661fcd6705353d832e0383085f8afe842 that removed flushing
EOS set in `quartz_parser.c` appropriatly lets radio loop in Fallout 3, otherwise looped audio hit an infinite 'blip-blip-blip' and radio songs ending will similarly skip a few times.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/105
On both Mac and Linux under Wow64, after ~120 threads are created, the 64-bit stacks start to be allocated above 4GB.
This triggered crashes in alloc_fs_sel() and when the result of get_cpu_area() was used.
(On Mac the ntdll threadpool tests reproduced this, but on both platforms a test app that created 256 threads also worked).
--
v2: ntdll: Avoid truncating pointer to 32-bits in get_cpu_area().
ntdll: Use 32-bit stack in alloc_fs_sel().
https://gitlab.winehq.org/wine/wine/-/merge_requests/85
I had these in my patch repo for quite a while.
Patch 1 shouldn't need explanation.
The problem fixed by patch 2 and 3 is that
sizeof(KEY_{BASIC,VALUE_PARTIAL,FULL}_INFORMATION) are all slightly bigger
than the actual minimum size required to get all the requested info, because
those structs include an array of size 1 as their last member, which is
intended to be a variable length array.
Fixing these size calculations removes one allocation in wineserver and
reduces the amount of data transmitted by 1 - 2 bytes.
Patch 4 just reduces the amount of data transmitted from wineserver for each
update_display_cache_from_registry call, which is called every time the
display device lists are locked.
--
v3: win32u: Query basic instead of full key information to get the LastWriteTime.
win32u: Calculate buffer sizes from registry structs correctly.
ntdll: Calculate buffer sizes from registry structs correctly.
ntdll: Use correct output buffer size in RtlpNtEnumerateSubKey.
https://gitlab.winehq.org/wine/wine/-/merge_requests/98
- signal_alloc_thread() and signal_free_thread() mostly match signal_i386.c, but with the difference that first thread’s FS needs to be allocated in signal_init_process(). signal_alloc_thread() is called too early before the Wow TEB is allocated.
- The LDT code is copied from signal_i386.c. Would it be worthwhile to move that into a common file?
--
v3: ntdll: Set up 32-bit segments to support Wow64 on macOS 10.15+.
ntdll: Store Wow64 FS selector in thread_data.
https://gitlab.winehq.org/wine/wine/-/merge_requests/76