This was caused by the compilation job being created suspended (to avoid UI slowdown because of the material Preview Icons). The suspended job wasn't passing the `WM_jobs_test` in `DRW_deferred_shader_remove` and the material would still be in the compile queue with its status equal to `GPU_MAT_QUEUED`. This would block the main thread in the waiting loop. But since the job manager timer needs to execute in the main thread, the compilation job was never being pushed out of its suspended state. This lead to a complete lock situation. The solution is to use `WM_jobs_customdata_from_type` which does exactly what we need. Also fixed a nullptr free.
17 KiB
17 KiB