forked from blender/blender
Bastien Montagne
88dcc0b176
Timer management code often loops over the list of timers, calling independant callbacks that end up freeing other timers in the list. That would result in potentail access-after-free errors, as reported in #105160. The typical identified scenario is wmTimer calling wmJob code, which calls some of the job's callbacks (`update` or `end` e.g.), which call `WM_report`, which removes and add another timer. To address this issue on a general level, the deletion of timers is now deferred, with the public API `WM_event_remove_timer` only marking the timer for deletion, and the private new function `wm_window_delete_removed_timers` effectively removing and deleting all marked timers. This implements design task #105369. Pull Request #105380 |
||
---|---|---|
.. | ||
gizmo | ||
intern | ||
message_bus | ||
xr | ||
CMakeLists.txt | ||
WM_api.h | ||
wm_cursors.h | ||
wm_draw.h | ||
wm_event_system.h | ||
wm_event_types.h | ||
wm_files.h | ||
WM_keymap.h | ||
WM_message.h | ||
wm_surface.h | ||
WM_toolsystem.h | ||
WM_types.h | ||
wm_window.h | ||
wm.h |