Some games exhibit freeze in game play because they implement something like:
- upon an event (exception...)
- use toolhelp to get a snapshot of self loaded modules,
- call SymLoadModule() on each module,
- furthermore, they keep their dbghelp session active, and
redo the process above when a new event occurs.
This ends up with trying to reload at the very same base address
each one of the already loaded modules.
Native implements a fast exit path when asking to load a module at the exact
same base address of an already loaded one: it simply bails out (without checking
anything else).
Builtin is way more slow (it resync:s ELF/Mach-o module list, load the new module
before actually dropping at the end of the process).
This can result in second of relay.
This serie adds the tests for supporting above claim and fix it.
Credit to Paul Gofman for triaging this behavior.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4712
Fix Toad for Oracle F3 find next function not working properly because its WH_KEYBOARD hook gets called too many times.
There is another case that could cause WH_CBT HCBT_CLICKSKIPPED hooks to get called recursively as the tests show. I will send patches for that after the code freeze.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4711
On Sat Dec 16 08:27:12 2023 +0000, David Kahurani wrote:
> "I don't believe draw_poly is the right place for this. Either
> optimizations should be in gdi32, or in SOFTWARE_GdipFillPath (which we
> don't use now for drawing outlines because the gdi32 path is currently
> more efficient, but we could if that changed)."
> Looking at this again, it looks like we should try to re-implement
> SOFTWARE_GdipFillPath to allow for drawing outlines. Maybe add a flag
> for whether we need to outline only and when we need to fill it?
We have a special case for drawing 1-pixel outlines. In other cases, the way to do that is by generating a path for the outline with GdipWidenPath and filling that.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3288#note_56161