mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-10 07:36:19 +02:00
packager, IDEIntf: fixed TLazPackageGraph.ChangeStamp in BeginUpdate/EndUpdate and moved ChangeStamp property to LCLIntf
git-svn-id: trunk@50384 -
This commit is contained in:
parent
a562122e19
commit
9b510c5bca
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user