mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-11 13:28:04 +02:00
IDE: Turn ExternalTools from a global var into a global function, returning ExternalToolList. Avoid duplicate assignments to ExternalToolList.
git-svn-id: trunk@63079 -
This commit is contained in:
parent
d4f25d678f
commit
c43d57c21a
@ -1611,6 +1611,8 @@ constructor TExternalToolsBase.Create(aOwner: TComponent);
|
||||
begin
|
||||
inherited Create(aOwner);
|
||||
fItems:=TFPList.Create;
|
||||
if ExternalToolList=nil then
|
||||
ExternalToolList:=Self;
|
||||
end;
|
||||
|
||||
destructor TExternalToolsBase.Destroy;
|
||||
|
@ -357,7 +357,7 @@ end;
|
||||
|
||||
destructor TBuildManager.Destroy;
|
||||
begin
|
||||
ExternalTools.Free; // sets ExternalTools to nil, do not use FreeAndNil!
|
||||
ExternalToolList.Free; // sets ExternalToolList to nil, do not use FreeAndNil!
|
||||
|
||||
GetBuildMacroValues:=nil;
|
||||
OnAppendCustomOption:=nil;
|
||||
@ -535,8 +535,8 @@ var
|
||||
begin
|
||||
// setup the external tool queue
|
||||
Tools:=aToolsClass.Create(Self);
|
||||
if Tools<>ExternalTools then
|
||||
raise Exception.Create('TBuildManager.SetupExternalTools ExternalTools='+DbgSName(ExternalTools));
|
||||
if Tools<>ExternalToolList then
|
||||
raise Exception.Create('TBuildManager.SetupExternalTools ExternalTools='+DbgSName(ExternalToolList));
|
||||
EnvOptsChanged;
|
||||
RegisterFPCParser;
|
||||
RegisterPas2jsParser;
|
||||
@ -561,9 +561,9 @@ end;
|
||||
procedure TBuildManager.EnvOptsChanged;
|
||||
begin
|
||||
if EnvironmentOptions.MaxExtToolsInParallel<=0 then
|
||||
ExternalTools.MaxProcessCount:=DefaultMaxProcessCount
|
||||
ExternalToolsRef.MaxProcessCount:=DefaultMaxProcessCount
|
||||
else
|
||||
ExternalTools.MaxProcessCount:=EnvironmentOptions.MaxExtToolsInParallel;
|
||||
ExternalToolsRef.MaxProcessCount:=EnvironmentOptions.MaxExtToolsInParallel;
|
||||
end;
|
||||
|
||||
function TBuildManager.GetBuildMacroOverride(const MacroName: string): string;
|
||||
|
@ -2752,7 +2752,7 @@ procedure TMessagesFrame.MsgCtrlPopupMenuPopup(Sender: TObject);
|
||||
if View.Tool=nil then continue;
|
||||
ToolData:=TIDEExternalToolData(View.Tool.Data);
|
||||
if not (ToolData is TIDEExternalToolData) then continue;
|
||||
IDETool:=ExternalTools.GetIDEObject(ToolData);
|
||||
IDETool:=ExternalToolList.GetIDEObject(ToolData);
|
||||
if IDETool=nil then continue;
|
||||
if IDETool is TLazProject then begin
|
||||
CompOpts:=TLazProject(IDETool).LazCompilerOptions as TBaseCompilerOptions;
|
||||
@ -3046,7 +3046,7 @@ begin
|
||||
Item:=TIDEMenuCommand(Sender);
|
||||
MsgId:=Item.Tag;
|
||||
ToolData:=TIDEExternalToolData(Item.UserTag);
|
||||
IDETool:=ExternalTools.GetIDEObject(ToolData);
|
||||
IDETool:=ExternalToolList.GetIDEObject(ToolData);
|
||||
if IDETool=nil then exit;
|
||||
if IDETool is TLazProject then begin
|
||||
CompOpts:=TLazProject(IDETool).LazCompilerOptions;
|
||||
|
@ -163,18 +163,22 @@ type
|
||||
procedure RegisterParser(Parser: TExtToolParserClass); override;
|
||||
procedure UnregisterParser(Parser: TExtToolParserClass); override;
|
||||
function FindParserForTool(const SubTool: string): TExtToolParserClass; override;
|
||||
function FindParserWithName(const ParserName: string): TExtToolParserClass;
|
||||
override;
|
||||
function FindParserWithName(const ParserName: string): TExtToolParserClass; override;
|
||||
function GetMsgTool(Msg: TMessageLine): TAbstractExternalTool; override;
|
||||
end;
|
||||
|
||||
TExternalToolsClass = class of TExternalTools;
|
||||
|
||||
var
|
||||
ExternalTools: TExternalTools = nil;
|
||||
function ExternalToolsRef: TExternalTools;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
function ExternalToolsRef: TExternalTools;
|
||||
begin
|
||||
Result := ExternalToolList as TExternalTools;
|
||||
end;
|
||||
|
||||
{$IF defined(VerboseExtToolErrors) or defined(VerboseExtToolThread) or defined(VerboseExtToolAddOutputLines)}
|
||||
function ArgsToString(Args: array of const): string;
|
||||
var
|
||||
@ -1205,10 +1209,6 @@ begin
|
||||
fRunning:=TFPList.Create;
|
||||
fParsers:=TFPList.Create;
|
||||
MaxProcessCount:=DefaultMaxProcessCount;
|
||||
if ExternalToolList=nil then
|
||||
ExternalToolList:=Self;
|
||||
if ExternalTools=nil then
|
||||
ExternalTools:=Self;
|
||||
RunExternalTool := @RunExtToolHandler;
|
||||
end;
|
||||
|
||||
@ -1220,10 +1220,6 @@ begin
|
||||
try
|
||||
if fRunning.Count>0 then
|
||||
raise Exception.Create('TExternalTools.Destroy some tools still running');
|
||||
if ExternalToolList=Self then
|
||||
ExternalToolList:=nil;
|
||||
if ExternalTools=Self then
|
||||
ExternalTools:=nil;
|
||||
inherited Destroy;
|
||||
FreeAndNil(fRunning);
|
||||
FreeAndNil(fParsers);
|
||||
|
16
ide/main.pp
16
ide/main.pp
@ -1666,8 +1666,8 @@ begin
|
||||
|
||||
IDECommandList.RemoveCustomUpdateEvent(@UpdateMainIDECommands);
|
||||
|
||||
if Assigned(ExternalTools) then
|
||||
ExternalTools.TerminateAll;
|
||||
if Assigned(ExternalToolList) then
|
||||
ExternalToolList.TerminateAll;
|
||||
|
||||
if ConsoleVerbosity>0 then
|
||||
DebugLn('Hint: (lazarus) [TMainIDE.Destroy]');
|
||||
@ -4945,7 +4945,7 @@ begin
|
||||
if (Index<0)
|
||||
or (Index>=ExternalUserTools.Count)
|
||||
then exit;
|
||||
if ExternalTools.RunningCount=0 then
|
||||
if ExternalToolsRef.RunningCount=0 then
|
||||
IDEMessagesWindow.Clear;
|
||||
DoRunExternalTool(Index,false);
|
||||
end;
|
||||
@ -7169,7 +7169,7 @@ end;
|
||||
function TMainIDE.DoAbortBuild(Interactive: boolean): TModalResult;
|
||||
begin
|
||||
Result:=mrOk;
|
||||
if ExternalTools.RunningCount=0 then exit;
|
||||
if ExternalToolsRef.RunningCount=0 then exit;
|
||||
// IDE code is currently running a build process
|
||||
// we cannot continue, while some IDE code is waiting for the processes
|
||||
// => exit this event (no matter if the processes are stopped or not)
|
||||
@ -7766,7 +7766,7 @@ begin
|
||||
|
||||
if fBuilder=Nil then
|
||||
fBuilder:=TLazarusBuilder.Create;
|
||||
if ExternalTools.RunningCount=0 then
|
||||
if ExternalToolsRef.RunningCount=0 then
|
||||
IDEMessagesWindow.Clear;
|
||||
fBuilder.ProfileChanged:=false;
|
||||
OldToolStatus:=ToolStatus;
|
||||
@ -7952,7 +7952,7 @@ begin
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
if ExternalTools.RunningCount=0 then
|
||||
if ExternalToolsRef.RunningCount=0 then
|
||||
IDEMessagesWindow.Clear;
|
||||
DirectiveList:=TStringList.Create;
|
||||
OldToolStatus:=ToolStatus;
|
||||
@ -8379,7 +8379,7 @@ begin
|
||||
if MainBuildBoss.CompilerOnDiskChanged then
|
||||
MainBuildBoss.RescanCompilerDefines(false,false,false,false);
|
||||
|
||||
if (IDEMessagesWindow<>nil) and (ExternalTools.RunningCount=0) then
|
||||
if (IDEMessagesWindow<>nil) and (ExternalToolsRef.RunningCount=0) then
|
||||
IDEMessagesWindow.Clear;
|
||||
end;
|
||||
|
||||
@ -8626,7 +8626,7 @@ end;
|
||||
|
||||
procedure TMainIDE.AbortBuild;
|
||||
begin
|
||||
ExternalTools.TerminateAll;
|
||||
ExternalToolList.TerminateAll;
|
||||
end;
|
||||
|
||||
procedure TMainIDE.UpdateCaption;
|
||||
|
Loading…
Reference in New Issue
Block a user