lazbuild: fixed saving lpk history

git-svn-id: trunk@36199 -
This commit is contained in:
mattias 2012-03-21 23:04:42 +00:00
parent b6b63e0fd4
commit d79ff1435a

View File

@ -127,7 +127,8 @@ type
private private
FDependencyOwnerGetPkgFilename: TDependencyOwnerGetPkgFilename; FDependencyOwnerGetPkgFilename: TDependencyOwnerGetPkgFilename;
FGlobalLinks: TAvgLvlTree; // tree of global TPackageLink sorted for ID FGlobalLinks: TAvgLvlTree; // tree of global TPackageLink sorted for ID
FModified: boolean; FChangeStamp: integer;
FSavedChangeStamp: integer;
FUserLinksSortID: TAvgLvlTree; // tree of user TPackageLink sorted for ID FUserLinksSortID: TAvgLvlTree; // tree of user TPackageLink sorted for ID
FUserLinksSortFile: TAvgLvlTree; // tree of user TPackageLink sorted for FUserLinksSortFile: TAvgLvlTree; // tree of user TPackageLink sorted for
// Filename and FileDate // Filename and FileDate
@ -141,6 +142,7 @@ type
Dependency: TPkgDependency; IgnoreFiles: TFilenameToStringTree): TPackageLink; Dependency: TPkgDependency; IgnoreFiles: TFilenameToStringTree): TPackageLink;
function FindLinkWithPackageIDInTree(LinkTree: TAvgLvlTree; function FindLinkWithPackageIDInTree(LinkTree: TAvgLvlTree;
APackageID: TLazPackageID): TPackageLink; APackageID: TLazPackageID): TPackageLink;
function GetModified: boolean;
procedure IteratePackagesInTree(MustExist: boolean; LinkTree: TAvgLvlTree; procedure IteratePackagesInTree(MustExist: boolean; LinkTree: TAvgLvlTree;
Event: TIteratePackagesEvent); Event: TIteratePackagesEvent);
procedure SetModified(const AValue: boolean); procedure SetModified(const AValue: boolean);
@ -172,8 +174,10 @@ type
function AddUserLink(const PkgFilename, PkgName: string): TPackageLink;// do not this use if package is open in IDE function AddUserLink(const PkgFilename, PkgName: string): TPackageLink;// do not this use if package is open in IDE
procedure RemoveUserLink(Link: TPackageLink); procedure RemoveUserLink(Link: TPackageLink);
procedure RemoveUserLinks(APackageID: TLazPackageID); procedure RemoveUserLinks(APackageID: TLazPackageID);
procedure IncreaseChangeStamp;
public public
property Modified: boolean read FModified write SetModified; property Modified: boolean read GetModified write SetModified;
property ChangeStamp: integer read FChangeStamp;
property DependencyOwnerGetPkgFilename: TDependencyOwnerGetPkgFilename property DependencyOwnerGetPkgFilename: TDependencyOwnerGetPkgFilename
read FDependencyOwnerGetPkgFilename read FDependencyOwnerGetPkgFilename
write FDependencyOwnerGetPkgFilename; write FDependencyOwnerGetPkgFilename;
@ -327,6 +331,8 @@ begin
FGlobalLinks:=TAvgLvlTree.Create(@ComparePackageLinks); FGlobalLinks:=TAvgLvlTree.Create(@ComparePackageLinks);
FUserLinksSortID:=TAvgLvlTree.Create(@ComparePackageLinks); FUserLinksSortID:=TAvgLvlTree.Create(@ComparePackageLinks);
FUserLinksSortFile:=TAvgLvlTree.Create(@CompareLinksForFilenameAndFileAge); FUserLinksSortFile:=TAvgLvlTree.Create(@CompareLinksForFilenameAndFileAge);
FSavedChangeStamp:=CTInvalidChangeStamp;
FChangeStamp:=CTInvalidChangeStamp;
end; end;
destructor TPackageLinks.Destroy; destructor TPackageLinks.Destroy;
@ -504,8 +510,8 @@ begin
// check if file has changed // check if file has changed
ConfigFilename:=GetUserLinkFile; ConfigFilename:=GetUserLinkFile;
if UserLinkLoadTimeValid and FileExistsUTF8(ConfigFilename) if UserLinkLoadTimeValid and FileExistsCached(ConfigFilename)
and (FileAgeUTF8(ConfigFilename)=UserLinkLoadTime) then and (FileAgeCached(ConfigFilename)=UserLinkLoadTime) then
exit; exit;
// copy system default if needed // copy system default if needed
@ -513,6 +519,7 @@ begin
FUserLinksSortID.FreeAndClear; FUserLinksSortID.FreeAndClear;
FUserLinksSortFile.Clear; FUserLinksSortFile.Clear;
IncreaseChangeStamp;
FileVersion:=PkgLinksFileVersion; FileVersion:=PkgLinksFileVersion;
XMLConfig:=nil; XMLConfig:=nil;
try try
@ -790,6 +797,11 @@ begin
Result:=nil; Result:=nil;
end; end;
function TPackageLinks.GetModified: boolean;
begin
Result:=FSavedChangeStamp<>FChangeStamp;
end;
procedure TPackageLinks.IteratePackagesInTree(MustExist: boolean; procedure TPackageLinks.IteratePackagesInTree(MustExist: boolean;
LinkTree: TAvgLvlTree; Event: TIteratePackagesEvent); LinkTree: TAvgLvlTree; Event: TIteratePackagesEvent);
var var
@ -810,8 +822,11 @@ end;
procedure TPackageLinks.SetModified(const AValue: boolean); procedure TPackageLinks.SetModified(const AValue: boolean);
begin begin
if FModified=AValue then exit; if Modified=AValue then exit;
FModified:=AValue; if not AValue then
FSavedChangeStamp:=FChangeStamp
else
IncreaseChangeStamp;
end; end;
function TPackageLinks.FindLinkWithPkgName(const PkgName: string): TPackageLink; function TPackageLinks.FindLinkWithPkgName(const PkgName: string): TPackageLink;
@ -882,7 +897,7 @@ begin
if NewLink.MakeSense then begin if NewLink.MakeSense then begin
FUserLinksSortID.Add(NewLink); FUserLinksSortID.Add(NewLink);
FUserLinksSortFile.Add(NewLink); FUserLinksSortFile.Add(NewLink);
Modified:=true; IncreaseChangeStamp;
end else begin end else begin
NewLink.Release; NewLink.Release;
NewLink:=nil; NewLink:=nil;
@ -933,7 +948,7 @@ begin
if NewLink.MakeSense then begin if NewLink.MakeSense then begin
FUserLinksSortID.Add(NewLink); FUserLinksSortID.Add(NewLink);
FUserLinksSortFile.Add(NewLink); FUserLinksSortFile.Add(NewLink);
Modified:=true; IncreaseChangeStamp;
end else begin end else begin
NewLink.Release; NewLink.Release;
NewLink:=nil; NewLink:=nil;
@ -960,7 +975,7 @@ begin
FUserLinksSortID.RemovePointer(Link); FUserLinksSortID.RemovePointer(Link);
FUserLinksSortFile.RemovePointer(Link); FUserLinksSortFile.RemovePointer(Link);
Link.Release; Link.Release;
Modified:=true; IncreaseChangeStamp;
end; end;
finally finally
EndUpdate; EndUpdate;
@ -982,13 +997,18 @@ begin
FUserLinksSortID.Delete(ANode); FUserLinksSortID.Delete(ANode);
FUserLinksSortFile.RemovePointer(OldLink); FUserLinksSortFile.RemovePointer(OldLink);
OldLink.Release; OldLink.Release;
Modified:=true; IncreaseChangeStamp;
until false; until false;
finally finally
EndUpdate; EndUpdate;
end; end;
end; end;
procedure TPackageLinks.IncreaseChangeStamp;
begin
CTIncreaseChangeStamp(FChangeStamp);
end;
initialization initialization
PkgLinks:=nil; PkgLinks:=nil;