Graeme Geldenhuys wrote:
Martin wrote:
make it
if (Application<>nil) and (abs(LastProcessMessages-Now)>((1/86400)/10))
This does not make much difference on my system.  :-(
Hm I tested on windows only. Try adding the 2 lines I inserted with comments (I have not tested this!!)

Just seeing
     if (TheAsyncProcess=nil) and (fProcess.Output<>nil) then begin
       // using a blocking TProcess
//        Count := 0;
//        if fProcess.Output.NumBytesAvailable > 0 then
         Count:=fProcess.Output.Read(Buf[1],length(Buf));
       if Count=0 then begin
         // no output on blocking means, process has ended
         break;
       end;
     end;



One more remark, if it works, it will allow normal editing,etc.

But you can not do:
- search and replace
- find in files
...

Because those themself are long running, and while being inside the compile's processMessages, the compile will not read the output, and that may block compiling.

This is because all this stuff is not event-driven, so it cannnot be mixed.
It would work in a single thread and all this, but it must be fully event-driven.



--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to