hedgewars/uFLIPC.pas
branchqmlfrontend
changeset 11459 30397f91571c
parent 11454 3c5d99013baf
child 11460 9f2fb0031ef0
equal deleted inserted replaced
11458:8318e841648f 11459:30397f91571c
    39     SDL_LockMutex(queue^.mut);
    39     SDL_LockMutex(queue^.mut);
    40 
    40 
    41     s.next:= nil;
    41     s.next:= nil;
    42     s.barrier:= 0;
    42     s.barrier:= 0;
    43 
    43 
    44     if (queue^.msg.next = nil) and (queue^.msg.str[0] = #0) and (queue^.msg.buf = nil) then
    44     if (queue^.msg.next = nil) and (queue^.msg.str[0] = #0) and (queue^.msg.buf = nil) and (queue^.msg.barrier = 0) then
    45     begin
    45     begin
    46         queue^.msg:= s;
    46         queue^.msg:= s;
    47     end else
    47     end else
    48     begin
    48     begin
    49         new(pmsg);
    49         new(pmsg);
   127     q:= queueEngine;
   127     q:= queueEngine;
   128 
   128 
   129     SDL_LockMutex(q^.mut);
   129     SDL_LockMutex(q^.mut);
   130 
   130 
   131     pmsg:= @q^.msg;
   131     pmsg:= @q^.msg;
   132     q^.last:= @q^.msg;
   132 write('    ipcRemoveBarrierFromEngineQueue: ');
   133 
       
   134     while pmsg <> nil do
   133     while pmsg <> nil do
   135     begin
   134     begin
       
   135         write('.');
   136         t:= pmsg^.next;
   136         t:= pmsg^.next;
   137         q^.msg.next:= t;
   137         q^.msg.next:= t;
   138 
   138 
       
   139         pmsg^.str[0]:= #0;
   139         if pmsg^.buf <> nil then
   140         if pmsg^.buf <> nil then
       
   141         begin
   140             FreeMem(pmsg^.buf, pmsg^.len);
   142             FreeMem(pmsg^.buf, pmsg^.len);
       
   143             pmsg^.buf:= nil
       
   144         end;
   141 
   145 
   142         if pmsg <> @q^.msg then
   146         if pmsg <> @q^.msg then
   143             if pmsg^.barrier = 0 then
   147             if pmsg^.barrier = 0 then
   144                 dispose(pmsg)
   148                 dispose(pmsg)
   145             else
   149             else
   160                 t:= nil
   164                 t:= nil
   161             end;
   165             end;
   162 
   166 
   163         pmsg:= t
   167         pmsg:= t
   164     end;
   168     end;
       
   169 writeln;
       
   170     if q^.msg.next = nil then q^.last:= @q^.msg;
   165 
   171 
   166     q^.msg.str[0]:= #0;
   172     q^.msg.str[0]:= #0;
   167     q^.msg.buf:= nil;
   173     q^.msg.buf:= nil;
   168 
   174 
   169     SDL_UnlockMutex(q^.mut);
   175     SDL_UnlockMutex(q^.mut);