From e261b0e20c6297690945203118cb347c75f5b13d Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Sat, 23 Jun 2018 22:09:55 +0200 Subject: [PATCH] #336 - onterminate still never called in some cases, call manually --- src/ce_main.pas | 7 +++---- src/ce_processes.pas | 7 +++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/ce_main.pas b/src/ce_main.pas index 746f427f..e10f56de 100644 --- a/src/ce_main.pas +++ b/src/ce_main.pas @@ -3066,7 +3066,6 @@ begin begin // back compat, see https://github.com/BBasile/Coedit/issues/276 dmdproc.Parameters.Add('-version=runnable_module'); - dmdproc.Parameters.Add('-version=run_single_module'); end; @@ -3090,7 +3089,7 @@ begin deleteDups(dmdproc.Parameters); dmdproc.Execute; while dmdproc.Running do - application.ProcessMessages; + dmdproc.checkTerminated(); if not asObj then sysutils.DeleteFile(fname + objExt); if (dmdProc.ExitStatus = 0) then @@ -3100,8 +3099,8 @@ begin fDoc, amcEdit, amkInf); end else begin - fMsgs.message(format('error: the process (%s) has returned the status %s', - [dmdproc.Executable, prettyReturnStatus(dmdproc)]), fDoc, amcEdit, amkErr); + (* fMsgs.message(format('error: the process (%s) has returned the status %s', + [dmdproc.Executable, prettyReturnStatus(dmdproc)]), fDoc, amcEdit, amkErr); *) fMsgs.message(shortenPath(fDoc.fileName, 25) + ' has not been compiled', fDoc, amcEdit, amkErr); end; diff --git a/src/ce_processes.pas b/src/ce_processes.pas index 1bf98555..9979a9da 100644 --- a/src/ce_processes.pas +++ b/src/ce_processes.pas @@ -50,6 +50,7 @@ type constructor create(aOwner: TComponent); override; destructor destroy; override; procedure execute; override; + procedure checkTerminated; // reads TProcess.OUtput in OutputStack procedure fillOutputStack; // fills list with the full lines contained in OutputStack @@ -309,6 +310,12 @@ begin internalDoOnTerminate(self); end; +procedure TCEProcess.checkTerminated; +begin + sleep(20); + checkTerminated(self); +end; + constructor TCEAutoBufferedProcess.create(aOwner: TComponent); begin inherited;