mirror of
https://github.com/red-prig/fpPS4.git
synced 2024-10-07 19:53:21 +00:00
fix
This commit is contained in:
parent
2e9b132202
commit
512534644c
@ -428,9 +428,7 @@ end;
|
||||
function ps4_sceKernelSetEventFlag(ef:SceKernelEventFlag;bitPattern:QWORD):Integer; SysV_ABI_CDecl;
|
||||
var
|
||||
node:pwef_node;
|
||||
prev,bits,count:QWORD;
|
||||
AllPattern:QWORD;
|
||||
AllwaitMode:DWORD;
|
||||
prev,bits:QWORD;
|
||||
attr:DWORD;
|
||||
begin
|
||||
Result:=ef_enter(ef);
|
||||
@ -440,10 +438,6 @@ begin
|
||||
|
||||
Writeln('>sceKernelSetEventFlag:',HexStr(ef),':',ef^.name,':',HexStr(bitPattern,16),':',ThreadID);
|
||||
|
||||
count:=0;
|
||||
AllPattern:=0;
|
||||
AllwaitMode:=0;
|
||||
|
||||
spin_lock(ef^.lock_list);
|
||||
|
||||
attr:=ef^.attr;
|
||||
@ -466,37 +460,18 @@ begin
|
||||
if (node^.ret=1) then
|
||||
if _test_by_mode(bits,node^.bitPattern,node^.waitMode) then
|
||||
begin
|
||||
AllPattern :=AllPattern or node^.bitPattern;
|
||||
AllwaitMode:=AllwaitMode or node^.waitMode;
|
||||
Inc(count);
|
||||
if _change_by_mode(bits,node^.bitPattern,node^.waitMode) then
|
||||
begin
|
||||
store_seq_cst(ef^.bitPattern,bits);
|
||||
end;
|
||||
node^.ResultPat:=bits;
|
||||
node^.ret:=0;
|
||||
NtQueueApcThread(node^.thread,@_apc_null,0,nil,0);
|
||||
end;
|
||||
node:=node^.pNext;
|
||||
end;
|
||||
|
||||
if (count<>0) then
|
||||
begin
|
||||
prev:=bits;
|
||||
|
||||
_change_by_mode(bits,AllPattern,AllwaitMode);
|
||||
store_seq_cst(ef^.bitPattern,bits);
|
||||
|
||||
node:=ef^.list.pHead;
|
||||
While (node<>nil) do
|
||||
begin
|
||||
if (node^.ret=1) then
|
||||
if _test_by_mode(prev,node^.bitPattern,node^.waitMode) then
|
||||
begin
|
||||
node^.ResultPat:=bits;
|
||||
node^.ret:=0;
|
||||
NtQueueApcThread(node^.thread,@_apc_null,0,nil,0);
|
||||
end;
|
||||
node:=node^.pNext;
|
||||
end;
|
||||
|
||||
end else
|
||||
begin
|
||||
store_seq_cst(ef^.bitPattern,bits);
|
||||
end;
|
||||
store_seq_cst(ef^.bitPattern,bits);
|
||||
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user