diff -r 0c75fa9ce340 -r 6e9b12864856 hedgewars/uFLIPC.pas --- a/hedgewars/uFLIPC.pas Thu Dec 10 00:33:45 2015 +0300 +++ b/hedgewars/uFLIPC.pas Thu Dec 10 23:49:12 2015 +0300 @@ -7,6 +7,7 @@ procedure ipcToEngine(s: shortstring); procedure ipcToEngineRaw(p: pointer; len: Longword); +procedure ipcCleanEngineQueue(); //function ipcReadFromEngine: shortstring; //function ipcCheckFromEngine: boolean; @@ -99,6 +100,36 @@ ipcSend(msg, queueFrontend) end; +procedure ipcCleanEngineQueue(); +var pmsg, t: PIPCMessage; + q: PIPCQueue; +begin + q:= queueEngine; + + SDL_LockMutex(q^.mut); + + pmsg:= @q^.msg; + q^.last:= pmsg; + + while pmsg <> nil do + begin + t:= pmsg^.next; + + if pmsg^.buf <> nil then + FreeMem(pmsg^.buf, pmsg^.len); + + if pmsg <> @q^.msg then + dispose(pmsg); + pmsg:= t + end; + + q^.msg.next:= nil; + q^.msg.str[0]:= #0; + q^.msg.buf:= nil; + + SDL_UnlockMutex(q^.mut); +end; + procedure ipcToNet(s: shortstring); var msg: TIPCMessage; begin