Opkman: Move update thread to main form.

git-svn-id: trunk@60492 -
This commit is contained in:
balazs 2019-02-25 05:54:15 +00:00
parent 5207c624ac
commit bcc2eb9097
3 changed files with 19 additions and 13 deletions

View File

@ -34,7 +34,7 @@ uses
// IdeIntf
LazIDEIntf, PackageIntf, PackageLinkIntf, PackageDependencyIntf, IDECommands,
// OPM
opkman_downloader, opkman_serializablepackages, opkman_installer, opkman_updates;
opkman_downloader, opkman_serializablepackages, opkman_installer, opkman_mainfrm;
type
@ -117,14 +117,6 @@ begin
if Assigned(PackageDownloader) then
if PackageDownloader.DownloadingJSON then
PackageDownloader.Cancel;
if Assigned(Updates) then
begin
Updates.StopUpdate;
Updates.Terminate;
while Assigned(Updates) do
CheckSynchronize(100); // wait for update thread to terminate
// Remains the slightest chance of a mem leak, since the update thread needs still enough cpu time to finish running the destructor
end;
end;
@ -145,12 +137,10 @@ begin
FTimer.Enabled := False;
if (not LazarusIDE.IDEIsClosing) then
begin
if Options.CheckForUpdates <> 5 then
if (Options.CheckForUpdates <> 5) and (not Assigned(MainFrm)) then
begin
PackageDownloader.DownloadJSON(Options.ConTimeOut*1000, True);
LazarusIDE.AddHandlerOnIDEClose(@DoOnIDEClose);
Updates := TUpdates.Create;
Updates.StartUpdate;
end;
end;
end;

View File

@ -9,6 +9,7 @@ object MainFrm: TMainFrm
Constraints.MinHeight = 400
Constraints.MinWidth = 700
KeyPreview = True
OnCloseQuery = FormCloseQuery
OnCreate = FormCreate
OnDestroy = FormDestroy
OnKeyDown = FormKeyDown

View File

@ -38,7 +38,7 @@ uses
// IdeIntf
IDECommands, PackageIntf,
// OpkMan
opkman_downloader, opkman_installer,
opkman_downloader, opkman_installer, opkman_updates,
opkman_serializablepackages, opkman_visualtree, opkman_const, opkman_common,
opkman_progressfrm, opkman_zipper, opkman_packagelistfrm, opkman_options,
opkman_optionsfrm, opkman_createrepositorypackagefrm, opkman_maindm,
@ -114,6 +114,7 @@ type
tbUpdate: TToolButton;
tbOpenRepo: TToolButton;
procedure bReturnClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure miCopyToClpBrdClick(Sender: TObject);
procedure miCreateJSONForUpdatesClick(Sender: TObject);
@ -234,6 +235,8 @@ begin
SetupControls;
SetupColors;
GetPackageList;
Updates := TUpdates.Create;
Updates.StartUpdate;
end
end;
@ -1256,6 +1259,18 @@ begin
miJSONShowClick(miJSONShow);
end;
procedure TMainFrm.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
if Assigned(Updates) then
begin
Updates.StopUpdate;
Updates.Terminate;
while Assigned(Updates) do
CheckSynchronize(100); // wait for update thread to terminate
// Remains the slightest chance of a mem leak, since the update thread needs still enough cpu time to finish running the destructor
end;
end;
procedure TMainFrm.miNameAscClick(Sender: TObject);
var