mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Refuse to dequeue a running/completed list.
This commit is contained in:
parent
c5a709d039
commit
e9db63f61d
1 changed files with 5 additions and 4 deletions
|
@ -291,17 +291,18 @@ u32 GPUCommon::DequeueList(int listid) {
|
||||||
if (listid < 0 || listid >= DisplayListMaxCount || dls[listid].state == PSP_GE_DL_STATE_NONE)
|
if (listid < 0 || listid >= DisplayListMaxCount || dls[listid].state == PSP_GE_DL_STATE_NONE)
|
||||||
return SCE_KERNEL_ERROR_INVALID_ID;
|
return SCE_KERNEL_ERROR_INVALID_ID;
|
||||||
|
|
||||||
if (dls[listid].state == PSP_GE_DL_STATE_RUNNING || dls[listid].state == PSP_GE_DL_STATE_PAUSED)
|
auto &dl = dls[listid];
|
||||||
return 0x80000021;
|
if (dl.started)
|
||||||
|
return SCE_KERNEL_ERROR_BUSY;
|
||||||
|
|
||||||
dls[listid].state = PSP_GE_DL_STATE_NONE;
|
dl.state = PSP_GE_DL_STATE_NONE;
|
||||||
|
|
||||||
if (listid == dlQueue.front())
|
if (listid == dlQueue.front())
|
||||||
PopDLQueue();
|
PopDLQueue();
|
||||||
else
|
else
|
||||||
dlQueue.remove(listid);
|
dlQueue.remove(listid);
|
||||||
|
|
||||||
dls[listid].waitTicks = 0;
|
dl.waitTicks = 0;
|
||||||
__GeTriggerWait(WAITTYPE_GELISTSYNC, listid);
|
__GeTriggerWait(WAITTYPE_GELISTSYNC, listid);
|
||||||
|
|
||||||
CheckDrawSync();
|
CheckDrawSync();
|
||||||
|
|
Loading…
Add table
Reference in a new issue