mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-15 00:19:22 +02:00
startlazarus: darwin: fixed restart
git-svn-id: trunk@64279 -
This commit is contained in:
parent
0eaddeb4c8
commit
1156464b04
@ -397,19 +397,21 @@ begin
|
|||||||
if (EnvOverrides<>nil) and (EnvOverrides.Count>0) then
|
if (EnvOverrides<>nil) and (EnvOverrides.Count>0) then
|
||||||
AssignEnvironmentTo(FLazarusProcess.Process.Environment,EnvOverrides);
|
AssignEnvironmentTo(FLazarusProcess.Process.Environment,EnvOverrides);
|
||||||
{$IFDEF darwin}
|
{$IFDEF darwin}
|
||||||
// "open" process runs a bundle, but doesn't wait for it to finish execution
|
// GUI bundles must be opened by "open".
|
||||||
// "startlazarus" logic suggests that the Lazarus process would be waited
|
// "open" runs a bundle, but doesn't wait for it to finish execution.
|
||||||
// and if the special 99 (ExitCodeRestartLazarus) code is received,
|
// startlazarus will exit and lazarus has to start a new startlazarus
|
||||||
// would repeat the restart process.
|
// when it needs a restart
|
||||||
// Since "open" doesn't play nice with "startlazarus" logic.
|
|
||||||
// The arguments would not indicate that lazarus was started by startlazarus
|
|
||||||
FLazarusProcess.Process.Executable:='/usr/bin/open';
|
FLazarusProcess.Process.Executable:='/usr/bin/open';
|
||||||
Params.Add('-a');
|
Params.Add('-a');
|
||||||
Params.Add(FLazarusPath);
|
Params.Add(FLazarusPath);
|
||||||
Params.Add('--args');
|
Params.Add('--args');
|
||||||
|
{$ELSE}
|
||||||
|
// tell lazarus, startlazarus is waiting for its exitcode
|
||||||
|
// When the special 99 (ExitCodeRestartLazarus) code is received,
|
||||||
|
// start a new lazars
|
||||||
|
Params.Add(StartedByStartLazarusOpt);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Params.Add(NoSplashScreenOptLong);
|
Params.Add(NoSplashScreenOptLong);
|
||||||
Params.Add(StartedByStartLazarusOpt);
|
|
||||||
for i:=0 to FCmdLineParams.Count-1 do
|
for i:=0 to FCmdLineParams.Count-1 do
|
||||||
AddExpandedParam(Params,FCmdLineParams[i]);
|
AddExpandedParam(Params,FCmdLineParams[i]);
|
||||||
FLazarusProcess.Process.Parameters.AddStrings(Params);
|
FLazarusProcess.Process.Parameters.AddStrings(Params);
|
||||||
@ -422,8 +424,12 @@ begin
|
|||||||
FLazarusProcess.OnStart := @LazarusProcessStart;
|
FLazarusProcess.OnStart := @LazarusProcessStart;
|
||||||
DebugLn(['Info: (startlazarus) [TLazarusManager.Run] exe',FLazarusProcess.Process.Executable,' Params=[',FLazarusProcess.Process.Parameters.Text,']']);
|
DebugLn(['Info: (startlazarus) [TLazarusManager.Run] exe',FLazarusProcess.Process.Executable,' Params=[',FLazarusProcess.Process.Parameters.Text,']']);
|
||||||
FLazarusProcess.Execute;
|
FLazarusProcess.Execute;
|
||||||
|
{$IFDEF darwin}
|
||||||
|
Restart:=false;
|
||||||
|
{$ELSE}
|
||||||
FLazarusProcess.WaitOnExit;
|
FLazarusProcess.WaitOnExit;
|
||||||
Restart := FLazarusProcess.WantsRestart;
|
Restart := FLazarusProcess.WantsRestart;
|
||||||
|
{$ENDIF}
|
||||||
FreeAndNil(FLazarusProcess);
|
FreeAndNil(FLazarusProcess);
|
||||||
end;
|
end;
|
||||||
until not Restart;
|
until not Restart;
|
||||||
|
Loading…
Reference in New Issue
Block a user