I'm not sure this is 100% safe (maybe limiting those blits to sysmem textures
would be better like stated in the original change?)
--
v6: wined3d: Don't reject blits coming from older command stream.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6300
Jacek Caban (@jacek) commented about dlls/gdi32/emfdc.c:
> {
> blit_dc = *hdc;
> blit_bitmap = *bitmap;
> +
> + if (!GetDIBits( blit_dc, blit_bitmap, 0, INT_MAX, NULL, info, DIB_RGB_COLORS ))
> + goto err;
You could just return 0 here, which would allow you to simplify the code some more. Then you don't need the assignment above. And without that assignment, we could remove `blit_dc != *hdc` check from error handling path.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6453#note_81916
I kept the first patch (`Remember if timer was blocked.`) to avoid SetTimer on timers that weren't killed, mostly because it would apply on every task (which is likely to execute way faster than the ms granularity), not sure if it would skew the timer in such case.
The other patches are split, with tests now showing why they're needed. Some places where wine-gecko callbacks into us and in which we call into external code need to be treated the same as a recursive task since it can end up in a message loop.
I haven't supplied all of them from the previous MR, mostly because I didn't find a way to test those (e.g. show context menu, and the gecko async navigation).
--
v3: mshtml: Don't process tasks recursively from Gecko events.
mshtml: Don't process tasks recursively from script runners.
mshtml: Don't process tasks recursively.
mshtml: Remember if timer was blocked.
mshtml: Don't cast to int to bound the timer.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6375
I kept the first patch (`Remember if timer was blocked.`) to avoid SetTimer on timers that weren't killed, mostly because it would apply on every task (which is likely to execute way faster than the ms granularity), not sure if it would skew the timer in such case.
The other patches are split, with tests now showing why they're needed. Some places where wine-gecko callbacks into us and in which we call into external code need to be treated the same as a recursive task since it can end up in a message loop.
I haven't supplied all of them from the previous MR, mostly because I didn't find a way to test those (e.g. show context menu, and the gecko async navigation).
--
v2: mshtml: Don't send the notification from SuperNavigate if we're in nested
mshtml: Don't process tasks recursively from handle_load.
mshtml: Don't process tasks recursively from run_end_load.
mshtml: Don't process tasks recursively.
mshtml: Remember if timer was blocked.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6375