mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-11 01:08:39 +12:00
Not always flush in callback
This commit is contained in:
parent
00e87adcfd
commit
3f7e6c990f
1 changed files with 6 additions and 2 deletions
|
@ -1169,12 +1169,16 @@ s32 cellGcmCallback(vm::ptr<CellGcmContextData> context, u32 count)
|
||||||
{
|
{
|
||||||
cellGcmSys->Log("cellGcmCallback(context_addr=0x%x, count=0x%x)", context.addr(), count);
|
cellGcmSys->Log("cellGcmCallback(context_addr=0x%x, count=0x%x)", context.addr(), count);
|
||||||
|
|
||||||
GSLockCurrent gslock(GS_LOCK_WAIT_FLUSH);
|
|
||||||
|
|
||||||
if (1)
|
if (1)
|
||||||
{
|
{
|
||||||
auto& ctrl = vm::get_ref<CellGcmControl>(gcm_info.control_addr);
|
auto& ctrl = vm::get_ref<CellGcmControl>(gcm_info.control_addr);
|
||||||
be_t<u32> res = be_t<u32>::make(context->current - context->begin - ctrl.put.read_relaxed());
|
be_t<u32> res = be_t<u32>::make(context->current - context->begin - ctrl.put.read_relaxed());
|
||||||
|
|
||||||
|
if (res != 0)
|
||||||
|
{
|
||||||
|
GSLockCurrent gslock(GS_LOCK_WAIT_FLUSH);
|
||||||
|
}
|
||||||
|
|
||||||
memmove(vm::get_ptr<void>(context->begin), vm::get_ptr<void>(context->current - res), res);
|
memmove(vm::get_ptr<void>(context->begin), vm::get_ptr<void>(context->current - res), res);
|
||||||
|
|
||||||
context->current = context->begin + res;
|
context->current = context->begin + res;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue