IDE: Added TLazPackageGraph.FChangeStamp

git-svn-id: trunk@50153 -
This commit is contained in:
ondrej 2015-10-24 17:47:35 +00:00
parent 5ec7988f47
commit 3ca8d0b170
3 changed files with 27 additions and 17 deletions

View File

@ -1049,19 +1049,16 @@ end;
{ TPackageCommandsStamp }
function TPackageCommandsStamp.Changed(AUnitInfo: TUnitInfo): Boolean;
var
xPackagesChangeStamp: Int64;
begin
xPackagesChangeStamp := PackageGraph.PackagesChangeStamp;
Result := not(
(UnitInfo = AUnitInfo)
and (PackagesChangeStamp = xPackagesChangeStamp)
and (PackagesChangeStamp = PackageGraph.ChangeStamp)
);
if not Result then Exit;
UnitInfo := AUnitInfo;
PackagesChangeStamp := xPackagesChangeStamp;
PackagesChangeStamp := PackageGraph.ChangeStamp;
end;
{ TProjectCommandsStamp }

View File

@ -520,6 +520,7 @@ type
FAuthor: string;
FAutoUpdate: TPackageUpdatePolicy;
FFPDocPackageName: string;
FOnModifySilently: TNotifyEvent;
FOptionsBackup: TLazPackage;
FComponents: TFPList; // TFPList of TPkgComponent
FDefineTemplates: TLazPackageDefineTemplates;
@ -787,6 +788,7 @@ type
property UserReadOnly: boolean read FUserReadOnly write SetUserReadOnly;
property UserIgnoreChangeStamp: integer read FUserIgnoreChangeStamp
write FUserIgnoreChangeStamp;
property OnModifySilently: TNotifyEvent read FOnModifySilently write FOnModifySilently;
end;
PLazPackage = ^TLazPackage;
@ -2589,6 +2591,8 @@ begin
inc(FChangeStamp)
else
FChangeStamp:=low(FChangeStamp);
if Assigned(FOnModifySilently) then
FOnModifySilently(Self);
end;
procedure TLazPackage.SetModified(const AValue: boolean);

View File

@ -210,11 +210,11 @@ type
FUpdateLock: integer;
FVerbosity: TPkgVerbosityFlags;
FFindFileCache: TLazPackageGraphFileCache;
FChangeStamp: Int64;
function CreateDefaultPackage: TLazPackage;
function GetCount: Integer;
function GetPackages(Index: integer): TLazPackage;
procedure DoDependencyChanged(Dependency: TPkgDependency);
function GetPackagesChangeStamp: Int64;
procedure SetRegistrationPackage(const AValue: TLazPackage);
procedure UpdateBrokenDependenciesToPackage(APackage: TLazPackage);
function OpenDependencyWithPackageLink(Dependency: TPkgDependency;
@ -230,6 +230,9 @@ type
var Note: string): TModalResult;
procedure InvalidateStateFile(APackage: TLazPackage);
procedure OnExtToolBuildStopped(Sender: TObject);
procedure PkgModify(Sender: TObject);
protected
procedure IncChangeStamp;
public
constructor Create;
destructor Destroy; override;
@ -443,7 +446,7 @@ type
property Packages[Index: integer]: TLazPackage read GetPackages; default; // see Count for the number
property UpdateLock: integer read FUpdateLock;
property Verbosity: TPkgVerbosityFlags read FVerbosity write FVerbosity;
property PackagesChangeStamp: Int64 read GetPackagesChangeStamp;
property ChangeStamp: Int64 read FChangeStamp;
// base packages
property FCLPackage: TLazPackage read FFCLPackage;
@ -917,6 +920,7 @@ begin
XMLConfig:=TXMLConfig.Create(nil);
NewPackage:=TLazPackage.Create;
NewPackage.Filename:=AFilename;
NewPackage.OnModifySilently := @PkgModify;
Result:=LoadXMLConfigFromCodeBuffer(AFilename,XMLConfig,
Code,[lbfUpdateFromDisk,lbfRevert],ShowAbort);
if Result<>mrOk then exit;
@ -1115,6 +1119,7 @@ begin
if FUpdateLock<=0 then RaiseException('TLazPackageGraph.EndUpdate');
dec(FUpdateLock);
if FUpdateLock=0 then begin
IncChangeStamp;
if Assigned(OnEndUpdate) then OnEndUpdate(Self,fChanged);
end;
end;
@ -1670,6 +1675,11 @@ begin
end;
end;
procedure TLazPackageGraph.PkgModify(Sender: TObject);
begin
IncChangeStamp;
end;
function TLazPackageGraph.DependencyExists(Dependency: TPkgDependency;
Flags: TFindPackageFlags): boolean;
begin
@ -1706,6 +1716,7 @@ function TLazPackageGraph.CreateNewPackage(const Prefix: string): TLazPackage;
begin
BeginUpdate(true);
Result:=TLazPackage.Create;
Result.OnModifySilently:=@PkgModify;
Result.Name:=CreateUniquePkgName(Prefix,nil);
AddPackage(Result);
EndUpdate;
@ -1941,7 +1952,9 @@ begin
AddRequiredDependency(SynEditPackage.CreateDependencyWithOwner(Result));
Modified:=false;
OnModifySilently:=@PkgModify;
end;
IncChangeStamp;
end;
function TLazPackageGraph.GetCount: Integer;
@ -5159,19 +5172,14 @@ begin
end;
end;
function TLazPackageGraph.GetPackagesChangeStamp: Int64;
var
I: Integer;
xPck: TLazPackage;
procedure TLazPackageGraph.IncChangeStamp;
begin
{$push}{$R-} // range check off
Result := 0;
for I := 0 to Count-1 do
if FUpdateLock = 0 then
begin
xPck := Packages[I];
Inc(Result, xPck.ChangeStamp);
{$push}{$R-} // range check off
Inc(FChangeStamp);
{$pop}
end;
{$pop}
end;
procedure TLazPackageGraph.SortDependencyListTopologicallyOld(
@ -5746,6 +5754,7 @@ begin
UsageOptions.UnitPath:='';
Modified:=false;
OnModifySilently:=@PkgModify;
EndUpdate;
end;
AddPackage(BrokenPackage);