packager, IDEIntf: fixed TLazPackageGraph.ChangeStamp in BeginUpdate/EndUpdate and moved ChangeStamp property to LCLIntf

git-svn-id: trunk@50384 -
This commit is contained in:
ondrej 2015-11-18 11:18:21 +00:00
parent a562122e19
commit 9b510c5bca
4 changed files with 32 additions and 10 deletions

View File

@ -347,8 +347,18 @@ type
property Items[Index: integer]: TPackageDescriptor read GetItems; default; property Items[Index: integer]: TPackageDescriptor read GetItems; default;
end; end;
TPackageGraphInterface = class
protected
FChangeStamp: Int64;
protected
procedure IncChangeStamp; virtual;
public
property ChangeStamp: Int64 read FChangeStamp;
end;
var var
PackageDescriptors: TPackageDescriptors; // will be set by the IDE PackageDescriptors: TPackageDescriptors; // will be set by the IDE
PackageGraphInterface: TPackageGraphInterface; // must be set along with PackageSystem.PackageGraph
procedure RegisterPackageDescriptor(PkgDesc: TPackageDescriptor); procedure RegisterPackageDescriptor(PkgDesc: TPackageDescriptor);
@ -393,6 +403,15 @@ begin
Result:=PackageDescriptors.FindByName(PkgDescNameStandard); Result:=PackageDescriptors.FindByName(PkgDescNameStandard);
end; end;
{ TPackageGraphInterface }
procedure TPackageGraphInterface.IncChangeStamp;
begin
{$push}{$R-} // range check off
Inc(FChangeStamp);
{$pop}
end;
{ TPackageDescriptor } { TPackageDescriptor }
procedure TPackageDescriptor.SetName(const AValue: string); procedure TPackageDescriptor.SetName(const AValue: string);

View File

@ -1192,6 +1192,7 @@ begin
// package graph // package graph
PackageGraph:=TLazPackageGraph.Create; PackageGraph:=TLazPackageGraph.Create;
PackageGraphInterface:=PackageGraph;
PackageGraph.OnAddPackage:=@PackageGraphAddPackage; PackageGraph.OnAddPackage:=@PackageGraphAddPackage;
PackageGraph.OnCheckInterPkgFiles:=@PackageGraphCheckInterPkgFiles; PackageGraph.OnCheckInterPkgFiles:=@PackageGraphCheckInterPkgFiles;
PackageGraph.Verbosity:=PkgGraphVerbosity; PackageGraph.Verbosity:=PkgGraphVerbosity;

View File

@ -173,7 +173,7 @@ type
{ TLazPackageGraph } { TLazPackageGraph }
TLazPackageGraph = class TLazPackageGraph = class(TPackageGraphInterface)
private private
FAbortRegistration: boolean; FAbortRegistration: boolean;
fChanged: boolean; fChanged: boolean;
@ -208,9 +208,9 @@ type
FLazControlsPackage: TLazPackage; FLazControlsPackage: TLazPackage;
FTree: TAVLTree; // sorted tree of TLazPackage FTree: TAVLTree; // sorted tree of TLazPackage
FUpdateLock: integer; FUpdateLock: integer;
FLockedChangeStamp: int64;
FVerbosity: TPkgVerbosityFlags; FVerbosity: TPkgVerbosityFlags;
FFindFileCache: TLazPackageGraphFileCache; FFindFileCache: TLazPackageGraphFileCache;
FChangeStamp: Int64;
function CreateDefaultPackage: TLazPackage; function CreateDefaultPackage: TLazPackage;
function GetCount: Integer; function GetCount: Integer;
function GetPackages(Index: integer): TLazPackage; function GetPackages(Index: integer): TLazPackage;
@ -232,7 +232,7 @@ type
procedure OnExtToolBuildStopped(Sender: TObject); procedure OnExtToolBuildStopped(Sender: TObject);
procedure PkgModify(Sender: TObject); procedure PkgModify(Sender: TObject);
protected protected
procedure IncChangeStamp; procedure IncChangeStamp; override;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
@ -446,7 +446,6 @@ type
property Packages[Index: integer]: TLazPackage read GetPackages; default; // see Count for the number property Packages[Index: integer]: TLazPackage read GetPackages; default; // see Count for the number
property UpdateLock: integer read FUpdateLock; property UpdateLock: integer read FUpdateLock;
property Verbosity: TPkgVerbosityFlags read FVerbosity write FVerbosity; property Verbosity: TPkgVerbosityFlags read FVerbosity write FVerbosity;
property ChangeStamp: Int64 read FChangeStamp;
// base packages // base packages
property FCLPackage: TLazPackage read FFCLPackage; property FCLPackage: TLazPackage read FFCLPackage;
@ -1109,6 +1108,7 @@ begin
inc(FUpdateLock); inc(FUpdateLock);
if FUpdateLock=1 then begin if FUpdateLock=1 then begin
fChanged:=Change; fChanged:=Change;
FLockedChangeStamp:=0;
if Assigned(OnBeginUpdate) then OnBeginUpdate(Self); if Assigned(OnBeginUpdate) then OnBeginUpdate(Self);
end else end else
fChanged:=fChanged or Change; fChanged:=fChanged or Change;
@ -1119,6 +1119,7 @@ begin
if FUpdateLock<=0 then RaiseException('TLazPackageGraph.EndUpdate'); if FUpdateLock<=0 then RaiseException('TLazPackageGraph.EndUpdate');
dec(FUpdateLock); dec(FUpdateLock);
if FUpdateLock=0 then begin if FUpdateLock=0 then begin
if FLockedChangeStamp>0 then
IncChangeStamp; IncChangeStamp;
if Assigned(OnEndUpdate) then OnEndUpdate(Self,fChanged); if Assigned(OnEndUpdate) then OnEndUpdate(Self,fChanged);
end; end;
@ -5173,14 +5174,14 @@ begin
end; end;
procedure TLazPackageGraph.IncChangeStamp; procedure TLazPackageGraph.IncChangeStamp;
begin
if FUpdateLock = 0 then
begin begin
{$push}{$R-} // range check off {$push}{$R-} // range check off
Inc(FChangeStamp); if FUpdateLock = 0 then
Inc(FChangeStamp)
else
Inc(FLockedChangeStamp)
{$pop} {$pop}
end; end;
end;
procedure TLazPackageGraph.SortDependencyListTopologicallyOld( procedure TLazPackageGraph.SortDependencyListTopologicallyOld(
var FirstDependency: TPkgDependency; TopLevelFirst: boolean); var FirstDependency: TPkgDependency; TopLevelFirst: boolean);

View File

@ -2922,6 +2922,7 @@ begin
// package graph // package graph
PackageGraph:=TLazPackageGraph.Create; PackageGraph:=TLazPackageGraph.Create;
PackageGraphInterface:=PackageGraph;
PackageGraph.OnAddPackage:=@PackageGraphAddPackage; PackageGraph.OnAddPackage:=@PackageGraphAddPackage;
PackageGraph.OnBeforeCompilePackages:=@DoBeforeCompilePackages; PackageGraph.OnBeforeCompilePackages:=@DoBeforeCompilePackages;
PackageGraph.OnBeginUpdate:=@PackageGraphBeginUpdate; PackageGraph.OnBeginUpdate:=@PackageGraphBeginUpdate;