mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-26 20:28:25 +02:00
LCL: added Application.RemoveAsyncQueue(Object)
git-svn-id: trunk@25671 -
This commit is contained in:
parent
9590345c0c
commit
cc7d32817b
@ -1288,6 +1288,7 @@ type
|
|||||||
procedure CreateForm(InstanceClass: TComponentClass; out Reference);
|
procedure CreateForm(InstanceClass: TComponentClass; out Reference);
|
||||||
procedure UpdateMainForm(AForm: TForm);
|
procedure UpdateMainForm(AForm: TForm);
|
||||||
procedure QueueAsyncCall(const AMethod: TDataEvent; Data: PtrInt);
|
procedure QueueAsyncCall(const AMethod: TDataEvent; Data: PtrInt);
|
||||||
|
procedure RemoveAsyncCalls(const AnObject: TObject);
|
||||||
procedure ReleaseComponent(AComponent: TComponent);
|
procedure ReleaseComponent(AComponent: TComponent);
|
||||||
function ExecuteAction(ExeAction: TBasicAction): Boolean; override;
|
function ExecuteAction(ExeAction: TBasicAction): Boolean; override;
|
||||||
function UpdateAction(TheAction: TBasicAction): Boolean; override;
|
function UpdateAction(TheAction: TBasicAction): Boolean; override;
|
||||||
|
@ -2131,6 +2131,42 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TApplication.RemoveAsyncCalls(const AnObject: TObject);
|
||||||
|
|
||||||
|
procedure DoRemoveAsyncCalls(var AQueue: TAsyncCallQueue);
|
||||||
|
var
|
||||||
|
lItem, lItem2: PAsyncCallQueueItem;
|
||||||
|
begin
|
||||||
|
lItem := AQueue.Last;
|
||||||
|
while lItem <> nil do begin
|
||||||
|
if TMethod(lItem^.Method).Data = Pointer(AnObject) then begin
|
||||||
|
if lItem^.NextItem <> nil then
|
||||||
|
lItem^.NextItem^.PrevItem := lItem^.PrevItem;
|
||||||
|
if lItem^.PrevItem <> nil then
|
||||||
|
lItem^.PrevItem^.NextItem := lItem^.NextItem;
|
||||||
|
|
||||||
|
if lItem = AQueue.Last then
|
||||||
|
AQueue.Last := lItem^.PrevItem;
|
||||||
|
if lItem = AQueue.Top then
|
||||||
|
AQueue.Top := lItem^.NextItem;
|
||||||
|
|
||||||
|
lItem2 := lItem;
|
||||||
|
lItem := lItem^.PrevItem;
|
||||||
|
Dispose(lItem2);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
lItem := lItem^.PrevItem;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
if AppDoNotCallAsyncQueue in FFlags then
|
||||||
|
raise Exception.Create('TApplication.QueueAsyncCall already shut down');
|
||||||
|
|
||||||
|
DoRemoveAsyncCalls(FAsyncCall.Cur);
|
||||||
|
DoRemoveAsyncCalls(FAsyncCall.Next);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TApplication.FreeComponent(Data: PtrInt);
|
procedure TApplication.FreeComponent(Data: PtrInt);
|
||||||
begin
|
begin
|
||||||
if Data<>0 then
|
if Data<>0 then
|
||||||
|
Loading…
Reference in New Issue
Block a user