mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-10 17:01:24 +12:00
SPU: Fix callback leak
This commit is contained in:
parent
6995467ff6
commit
4b0a5bd1b8
1 changed files with 3 additions and 2 deletions
|
@ -5701,7 +5701,7 @@ s64 spu_thread::get_ch_value(u32 ch)
|
||||||
static thread_local bool s_tls_try_notify = false;
|
static thread_local bool s_tls_try_notify = false;
|
||||||
s_tls_try_notify = false;
|
s_tls_try_notify = false;
|
||||||
|
|
||||||
atomic_wait_engine::set_one_time_use_wait_callback(mask1 != SPU_EVENT_LR ? nullptr : +[](u64 attempts) -> bool
|
const auto wait_cb = mask1 != SPU_EVENT_LR ? nullptr : +[](u64 attempts) -> bool
|
||||||
{
|
{
|
||||||
const auto _this = static_cast<spu_thread*>(cpu_thread::get_current());
|
const auto _this = static_cast<spu_thread*>(cpu_thread::get_current());
|
||||||
AUDIT(_this->get_class() == thread_class::spu);
|
AUDIT(_this->get_class() == thread_class::spu);
|
||||||
|
@ -5750,10 +5750,11 @@ s64 spu_thread::get_ch_value(u32 ch)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
};
|
||||||
|
|
||||||
if (auto wait_var = vm::reservation_notifier_begin_wait(_raddr, rtime))
|
if (auto wait_var = vm::reservation_notifier_begin_wait(_raddr, rtime))
|
||||||
{
|
{
|
||||||
|
atomic_wait_engine::set_one_time_use_wait_callback(wait_cb);
|
||||||
utils::bless<atomic_t<u32>>(&wait_var->raw().wait_flag)->wait(1, atomic_wait_timeout{80'000});
|
utils::bless<atomic_t<u32>>(&wait_var->raw().wait_flag)->wait(1, atomic_wait_timeout{80'000});
|
||||||
vm::reservation_notifier_end_wait(*wait_var);
|
vm::reservation_notifier_end_wait(*wait_var);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue