sceUltFinalize cleared gUlthreads directly, dropping the last shared_ptr to an UltUlthreadState while its worker thread still held the raw pointer passed to scePthreadCreate. Finalize now returns ULT_ERROR_BUSY when an ulthread is still registered, before any global state is torn down, following the BUSY convention of the queue, semaphore and queue data pool destroy paths. Joining the ulthread remains the caller's responsibility, as sceUltUlthreadJoin already keeps the state alive across scePthreadJoin and erases it afterwards. |
||
|---|---|---|
| .. | ||
| CMakeLists.txt | ||
| Export.cpp | ||
| SceUltTypes.hpp | ||